trait
This commit is contained in:
parent
5ba778e894
commit
ca1a207c99
1 changed files with 11 additions and 9 deletions
20
src/main.rs
20
src/main.rs
|
@ -53,7 +53,7 @@ struct BouncingImage {
|
|||
|
||||
trait Drawable {
|
||||
// Associated function signature; `Self` refers to the implementor type.
|
||||
|
||||
fn rate(&self) -> u32;
|
||||
fn draw_and_move(&mut self, display: &mut Display);
|
||||
|
||||
fn draw_png(&mut self, display: &mut Display, x: i32, y: i32);
|
||||
|
@ -88,7 +88,9 @@ impl BouncingImage {
|
|||
|
||||
}
|
||||
impl Drawable for BouncingImage {
|
||||
|
||||
fn rate(&self) -> u32 {
|
||||
return self.rate;
|
||||
}
|
||||
/// Draws a PNG image at the given coordinates.
|
||||
fn draw_png(&mut self, display: &mut Display, x: i32, y: i32) {
|
||||
|
||||
|
@ -195,12 +197,12 @@ impl Display {
|
|||
}
|
||||
|
||||
fn main() {
|
||||
let mut images = vec![
|
||||
BouncingImage::new("images/unicorn_cc.png", 13, -10, 1, -1, -1),
|
||||
BouncingImage::new("images/windows_logo.png", -8, 3, 2, -1, -1),
|
||||
BouncingImage::new("images/spade.png", 32, -12, 1, 0, 0),
|
||||
BouncingImage::new("images/dvdvideo.png", 20, 6, 5, 1000, 800),
|
||||
BouncingImage::new("images/hackaday.png", 40, 18, 3, 500, 800),
|
||||
let mut images:Vec<Box<dyn Drawable>> = vec![
|
||||
Box::new(BouncingImage::new("images/unicorn_cc.png", 13, -10, 1, -1, -1)),
|
||||
Box::new(BouncingImage::new("images/windows_logo.png", -8, 3, 2, -1, -1)),
|
||||
Box::new(BouncingImage::new("images/spade.png", 32, -12, 1, 0, 0)),
|
||||
Box::new(BouncingImage::new("images/dvdvideo.png", 20, 6, 5, 1000, 800)),
|
||||
Box::new(BouncingImage::new("images/hackaday.png", 40, 18, 3, 500, 800)),
|
||||
];
|
||||
|
||||
let mut display = Display::new(DISPLAY_HOST, DISPLAY_PORT);
|
||||
|
@ -210,7 +212,7 @@ fn main() {
|
|||
|
||||
loop {
|
||||
for (i, bb) in images.iter_mut().enumerate() {
|
||||
if bb.rate > 0 && frame_counter % bb.rate != 0 {
|
||||
if bb.rate() > 0 && frame_counter % bb.rate() != 0 {
|
||||
continue;
|
||||
}
|
||||
bb.draw_and_move(&mut display);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue