From 994b78139011d6e6ccf082efde2c0336504b621a Mon Sep 17 00:00:00 2001 From: JasterV Date: Thu, 5 Nov 2020 01:45:45 +0100 Subject: [PATCH] casi acabao :D --- Cargo.lock | 65 ++++++++++++++++++++++++++++++++++ Cargo.toml | 2 +- assets/comfortaa.ttf | Bin 0 -> 135420 bytes src/lib.rs | 4 ++- src/main.rs | 61 +++++++++++++++++++++++++------- src/renderable/mod.rs | 7 ++++ src/snake/mod.rs | 80 ++++++++++++++++++++++++++++++++++-------- 7 files changed, 189 insertions(+), 30 deletions(-) create mode 100644 assets/comfortaa.ttf create mode 100644 src/renderable/mod.rs diff --git a/Cargo.lock b/Cargo.lock index e29169d..1c91003 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -294,6 +294,17 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "getrandom" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "wasi", +] + [[package]] name = "gif" version = "0.11.1" @@ -868,6 +879,12 @@ dependencies = [ "miniz_oxide 0.3.7", ] +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + [[package]] name = "proc-macro2" version = "0.4.30" @@ -904,6 +921,47 @@ dependencies = [ "proc-macro2 1.0.24", ] +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + [[package]] name = "raw-window-handle" version = "0.3.3" @@ -1091,6 +1149,7 @@ dependencies = [ "piston2d-graphics", "piston2d-opengl_graphics", "pistoncore-glutin_window", + "rand", ] [[package]] @@ -1162,6 +1221,12 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wayland-client" version = "0.21.13" diff --git a/Cargo.toml b/Cargo.toml index 0bcdeb3..4d14027 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,10 +6,10 @@ edition = "2018" [lib] name="lib" -src = "src/lib.rs" [dependencies] piston = "0.52.0" piston2d-graphics = "0.37.0" pistoncore-glutin_window = "0.67.0" piston2d-opengl_graphics = "0.74.0" +rand = "0.7.3" diff --git a/assets/comfortaa.ttf b/assets/comfortaa.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dea4ceca3b2145869f1c3e092d964d571ae53e0a GIT binary patch literal 135420 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

DjZcu2xa1MWK3oy{_gocUqcT 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�%;d2CPt`_?1-?_)jFc= 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 self.snake.rotate(Direction::Right), + Button::Keyboard(Key::A) => self.snake.rotate(Direction::Left), + Button::Keyboard(Key::W) => self.snake.rotate(Direction::Up), + Button::Keyboard(Key::S) => self.snake.rotate(Direction::Down), + _ => (), + } + } } fn main() { let opengl = OpenGL::V3_1; - let mut window: GlutinWindow = WindowSettings::new("Snake Game", [400, 400]) + let mut window: GlutinWindow = WindowSettings::new("Snake Game", [SCREEN_SIZE; 2]) .fullscreen(true) .exit_on_esc(true) .resizable(false) @@ -43,15 +69,24 @@ fn main() { let mut game = Game { gl: GlGraphics::new(opengl), - snake: Snake::new(0.0, 0.0), + snake: Snake::new(200.0, 200.0), + apple: Square { + x: thread_rng().gen_range(0.0 + 20.0, SCREEN_SIZE - 20.0), + y: thread_rng().gen_range(0.0 + 20.0, SCREEN_SIZE - 20.0), + size: 20.0, + }, }; - let mut events = Events::new(EventSettings::new()); + let mut events = Events::new(EventSettings::new()).ups(20); while let Some(e) = events.next(&mut window) { - if let Some(arg) = e.render_args() {} + if let Some(_) = e.update_args() { + game.update(); + } - if let Some(arg) = e.update_args() {} + if let Some(arg) = e.render_args() { + game.render(&arg); + } if let Some(arg) = e.button_args() { if let ButtonState::Press = arg.state { diff --git a/src/renderable/mod.rs b/src/renderable/mod.rs new file mode 100644 index 0000000..2cae91a --- /dev/null +++ b/src/renderable/mod.rs @@ -0,0 +1,7 @@ +use opengl_graphics::GlGraphics; +use piston::input::RenderArgs; +use graphics::types::Color; +pub trait Renderable{ + fn render(&mut self, gl: &mut GlGraphics, args: &RenderArgs, color: Color); +} + diff --git a/src/snake/mod.rs b/src/snake/mod.rs index f4bb623..eae4573 100644 --- a/src/snake/mod.rs +++ b/src/snake/mod.rs @@ -1,6 +1,26 @@ +use crate::renderable::Renderable; +use graphics::types::Color; +use opengl_graphics::GlGraphics; +use piston::input::RenderArgs; use std::collections::LinkedList; use std::iter::FromIterator; +#[derive(PartialEq, Clone, Debug)] +pub struct Square { + pub x: f64, + pub y: f64, + pub size: f64, +} + +impl Square { + pub fn collision(&self, other: &Square) -> bool { + self.x + self.size >= other.x + && self.x <= other.x + other.size + && self.y + self.size >= other.y + && self.y <= other.y + self.size + } +} + #[derive(PartialEq, Clone)] pub enum Direction { Up, @@ -10,16 +30,19 @@ pub enum Direction { } pub struct Snake { - pub body: LinkedList<(f64, f64)>, + pub body: LinkedList, direction: Direction, } impl Snake { - pub const VELOCITY: f64 = 8.0; pub const SIZE: f64 = 20.0; pub fn new(x: f64, y: f64) -> Self { - let body: LinkedList<(f64, f64)> = LinkedList::from_iter(vec![(x, y)].into_iter()); + let body = LinkedList::from_iter(vec![Square { + x, + y, + size: Self::SIZE, + }]); Snake { body, direction: Direction::Right, @@ -32,29 +55,56 @@ impl Snake { Direction::Down if self.direction != Direction::Up => self.direction = direction, Direction::Left if self.direction != Direction::Right => self.direction = direction, Direction::Right if self.direction != Direction::Left => self.direction = direction, - _ => () + _ => (), } } pub fn move_forwards(&mut self) { - let mut head: (f64, f64) = self - .body - .front() - .expect("Cannot move an empty snake") - .clone(); + let mut head: Square = self.body.front().unwrap().clone(); + match self.direction { - Direction::Up => head.1 -= Snake::VELOCITY, - Direction::Down => head.1 += Snake::VELOCITY, - Direction::Left => head.0 -= Snake::VELOCITY, - Direction::Right => head.0 += Snake::VELOCITY, + Direction::Up => head.y -= Snake::SIZE, + Direction::Down => head.y += Snake::SIZE, + Direction::Left => head.x -= Snake::SIZE, + Direction::Right => head.x += Snake::SIZE, } + self.body.pop_back(); self.body.push_front(head); } pub fn add_square(&mut self) { - let back = self.body.back().unwrap(); - let new_part = (back.0, back.1); + let tail = self.body.back().unwrap(); + let new_part = Square { + x: tail.x, + y: tail.y, + size: Self::SIZE, + }; self.body.push_back(new_part); } + + pub fn head(&self) -> &Square { + self.body.front().unwrap() + } +} + +impl Renderable for Square { + fn render(&mut self, gl: &mut GlGraphics, args: &RenderArgs, color: Color) { + gl.draw(args.viewport(), |c, gl| { + use graphics::*; + let square = rectangle::square(self.x, self.y, self.size); + let transform = c.transform.trans(-self.size / 2.0, -self.size / 2.0); + rectangle(color, square, transform, gl); + }); + } +} + +impl Renderable for Snake { + fn render(&mut self, gl: &mut GlGraphics, args: &RenderArgs, color: Color) { + gl.draw(args.viewport(), |_, gl| { + self.body + .iter_mut() + .for_each(|square| square.render(gl, args, color)); + }); + } }