From cad605c45804b76cae98c93fb29eceb312d5d678 Mon Sep 17 00:00:00 2001 From: Uttarayan Mondal Date: Mon, 18 Jan 2021 05:12:07 +0530 Subject: [PATCH] Update README.md --- README.md | 14 +++++++++++--- src/game/backend.rs | 10 +++++----- src/game/frontend.rs | 11 ++++------- src/game/mod.rs | 10 +++++++--- src/highscore/backend.rs | 0 src/highscore/frontend.rs | 0 src/highscore/mod.rs | 3 +++ src/main.rs | 3 ++- 8 files changed, 32 insertions(+), 19 deletions(-) create mode 100644 src/highscore/backend.rs create mode 100644 src/highscore/frontend.rs create mode 100644 src/highscore/mod.rs diff --git a/README.md b/README.md index f3e12bb..84e74dd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,14 @@ # Snake in rust -Trying to make a snake game in rust using ncurses. -It is nowhere near complete. -This is for me to learn rust better. +The game is playable + +run with + +```bash +cargo run +``` + +- To fix bugs +- To Implement the highscore system + Learning from [ncurses](https://docs.rs/ncurses) diff --git a/src/game/backend.rs b/src/game/backend.rs index 93cbffa..eba16d1 100644 --- a/src/game/backend.rs +++ b/src/game/backend.rs @@ -69,8 +69,8 @@ impl Cell { pub fn random(lines: i32, cols: i32) -> Cell { let mut rng = rand::thread_rng(); Cell::new( - rng.gen_range(0..lines), - rng.gen_range(0..cols), + rng.gen_range(1..lines), + rng.gen_range(1..cols), CellType::Food, ) } @@ -127,8 +127,8 @@ impl Board { let (snake_line, snake_col): (i32, i32) = snake.posyx(); if (snake_line >= self.maxlines) || (snake_col >= self.maxcols) - || (snake_line <= 0) - || (snake_col <= 0) + || (snake_line < 0) + || (snake_col < 0) { self.gamestate = GameState::Failed(FailState::Wall); return true; @@ -175,7 +175,7 @@ pub struct Snake { head: Cell, body: LinkedList, direction: Direction, - pub grow: bool, + grow: bool, } impl Snake { pub fn new(head: Cell) -> Snake { diff --git a/src/game/frontend.rs b/src/game/frontend.rs index 7c7d1bd..534710c 100644 --- a/src/game/frontend.rs +++ b/src/game/frontend.rs @@ -52,18 +52,15 @@ pub fn log(snake: &Snake, board: &Board) { mvwaddstr(stdscr(), 0, 0, &format!("snake:head: {} {} ", shl, shc)); mvwaddstr(stdscr(), 1, 0, &format!("board:food: {} {} ", bfl, bfc)); wmove(stdscr(), 2, 0); - for snake_cell in snake.iter() { - let (scl, scc): (i32, i32) = snake_cell.posyx(); - waddstr(stdscr(), &format!("cell: {} {} ", scl, scc)); - } + // for snake_cell in snake.iter() { + // let (scl, scc): (i32, i32) = snake_cell.posyx(); + // waddstr(stdscr(), &format!("cell: {} {} ", scl, scc)); + // } // mvwaddstr( // stdscr(), // 2, // 0, // &format!("snake_size {}", snake.iter().size_hint().0), // ); - if snake.grow { - mvwaddstr(stdscr(), 3, 0, &format!("snake:grew")); - } wrefresh(stdscr()); } diff --git a/src/game/mod.rs b/src/game/mod.rs index a02bcc8..66fbab4 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -37,10 +37,14 @@ pub fn start() { nodelay(game_win, false); match menu::pause_menu_control() { //112 is keycode for 'p' - 0 => (), //resume - 1 => (), //restart + 0 => (), //resume + 1 => { + snake = + Snake::new(Cell::new(mlines / 2, mcols / 2, backend::CellType::Snake)); //Initialise snake in the middle of the screen + board = Board::new(mlines - vmargin * 2, mcols - hmargin * 2); + } //restart 2 => break, //exit - _ => (), //other charachters just in case + _ => (), //other charachters just in case } wrefresh(game_win); nodelay(game_win, true); diff --git a/src/highscore/backend.rs b/src/highscore/backend.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/highscore/frontend.rs b/src/highscore/frontend.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/highscore/mod.rs b/src/highscore/mod.rs new file mode 100644 index 0000000..c0b71e2 --- /dev/null +++ b/src/highscore/mod.rs @@ -0,0 +1,3 @@ +pub fn show() { + // highscore_file = backend::load( +} diff --git a/src/main.rs b/src/main.rs index 87bf32b..6abda5a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ extern crate ncurses; mod game; +mod highscore; mod menu; // use game::{Cell, Snake}; // use ncurses::*; @@ -15,7 +16,7 @@ fn main() { loop { match menu::main_menu_control() { 0 => game::start(), - 1 => (), + 1 => highscore::show(), _ => break, } }