rust_snake/game/food/
mod.rs

1use opengl_graphics::GlGraphics;
2use piston::input::RenderArgs;
3
4use super::snake::Snake;
5
6pub struct Food {
7    pub x: u32,
8    pub y: u32,
9}
10
11impl Food {
12    // Return true if snake ate food this update
13    pub fn update(&mut self, s: &Snake) -> bool {
14        let front = s.snake_parts.front().unwrap();
15        front.0 == self.x && front.1 == self.y
16    }
17
18    pub fn render(&mut self, gl: &mut GlGraphics, args: &RenderArgs, width: u32) {
19        const RED: [f32; 4] = [0.92, 0.10, 0.14, 1.0];
20
21        let x = self.x * width;
22        let y = self.y * width;
23
24        let square = graphics::rectangle::square(x as f64, y as f64, width as f64);
25
26        gl.draw(args.viewport(), |c, gl| {
27            let transform = c.transform;
28
29            graphics::rectangle(RED, square, transform, gl)
30        });
31    }
32}