diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 112 |
1 files changed, 62 insertions, 50 deletions
diff --git a/src/main.rs b/src/main.rs index 82b38af..039ea9f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,66 +1,71 @@ extern crate pancurses; -use pancurses::*; use pancurses::Input::*; +use pancurses::*; mod board; use crate::board::*; struct BoardGui { - win : Window, - size : i32, - cell_height : i32, - cell_width : i32, - hoff : i32, - cur_cell : Position + win: Window, + size: i32, + cell_height: i32, + cell_width: i32, + hoff: i32, + cur_cell: Position, } #[derive(PartialEq)] -enum BGAction { Quit , None } - -use std::convert::*; +enum BGAction { + Quit, + None, +} impl BoardGui { - fn mv_to_cell(&self, pos : &Position) { - let y:i32 = pos.y.into(); - let x:i32 = pos.x.into(); + fn mv_to_cell(&self, pos: &Position) { + let y: i32 = pos.y as i32; + let x: i32 = pos.x as i32; if (y < self.size) && (x < self.size) { - let y = y*self.cell_height+1; - let x = self.hoff + x*self.cell_width+1; - self.win.mv(y,x); + let y = y * self.cell_height + 1; + let x = self.hoff + x * self.cell_width + 1; + self.win.mv(y, x); self.win.refresh(); } } fn draw_grid(&self) { - for y in 0..self.cell_height*self.size+1 { - for x in 0..self.cell_width*self.size+1 { + for y in 0..self.cell_height * self.size + 1 { + for x in 0..self.cell_width * self.size + 1 { if y % self.cell_height == 0 { if x % self.cell_width == 0 { - self.win.mvaddch(y,x+self.hoff,'+'); + self.win.mvaddch(y, x + self.hoff, '+'); } else { - self.win.mvaddch(y,x+self.hoff,'-'); + self.win.mvaddch(y, x + self.hoff, '-'); } } else if x % self.cell_width == 0 { - self.win.mvaddch(y,x+self.hoff,'|'); + self.win.mvaddch(y, x + self.hoff, '|'); } } } for y in 0..self.size { - self.win.mvaddstr(y*self.cell_height+self.cell_height/2, - 0, - format!("{}.",self.size-y)); + self.win.mvaddstr( + y * self.cell_height + self.cell_height / 2, + 0, + format!("{}.", self.size - y), + ); } for x in 0..self.size { - self.win.mvaddstr(self.size*self.cell_height+1, - self.cell_width*x+self.cell_width/2+self.hoff, - format!("{:x}.",x+10)); + self.win.mvaddstr( + self.size * self.cell_height + 1, + self.cell_width * x + self.cell_width / 2 + self.hoff, + format!("{:x}.", x + 10), + ); } self.win.refresh(); } - fn handle_key(&mut self, key : Input) -> BGAction { + fn handle_key(&mut self, key: Input) -> BGAction { match key { KeyUp => { if 0 < self.cur_cell.y { @@ -68,33 +73,33 @@ impl BoardGui { self.mv_to_cell(&self.cur_cell); } BGAction::None - }, + } KeyDown => { - let y:i32 = self.cur_cell.y.into(); + let y: i32 = self.cur_cell.y as i32; if y + 1 < self.size { self.cur_cell.y += 1; self.mv_to_cell(&self.cur_cell); } BGAction::None - }, + } KeyLeft => { if 0 < self.cur_cell.x { self.cur_cell.x -= 1; self.mv_to_cell(&self.cur_cell); - } - BGAction::None - }, + } + BGAction::None + } KeyRight => { - let x:i32 = self.cur_cell.x.into(); - if x + 1< self.size { + let x: i32 = self.cur_cell.x as i32; + if x + 1 < self.size { self.cur_cell.x += 1; self.mv_to_cell(&self.cur_cell); } BGAction::None - }, + } Character('q') => BGAction::Quit, x => { - self.win.addstr(format!("{:?}",x)); + self.win.addstr(format!("{:?}", x)); self.win.refresh(); BGAction::None } @@ -108,14 +113,13 @@ impl BoardGui { } struct MoveEntry { - win : Window, + win: Window, } impl MoveEntry { - fn init(&self) { - self.win.attrset(COLOR_PAIR(3)|A_BOLD); // ???? - self.win.mvaddstr(0,0,"Enter move: ashtsaht"); + self.win.attrset(COLOR_PAIR(3) | A_BOLD); // ???? + self.win.mvaddstr(0, 0, "Enter move: ashtsaht"); // self.win.mvchgat(0,12,10,A_NORMAL,COLOR_PAIR(1)); self.win.refresh(); } @@ -126,7 +130,9 @@ fn main() { screen.nodelay(true); screen.keypad(true); - if has_colors() { start_color(); } + if has_colors() { + start_color(); + } cbreak(); noecho(); @@ -135,22 +141,28 @@ fn main() { screen.refresh(); - let bgw = newwin(25,40,0,0); - let mew = newwin(1,30,25,0); + let bgw = newwin(25, 40, 0, 0); + let mew = newwin(1, 30, 25, 0); - let mut bg = BoardGui { win : bgw, size : 5, cell_height : 4, - cell_width : 7, hoff : 3, - cur_cell : Position { x : 0, y : 0 } + let mut bg = BoardGui { + win: bgw, + size: 5, + cell_height: 4, + cell_width: 7, + hoff: 3, + cur_cell: Position { x: 0, y: 0 }, }; - let me = MoveEntry { win : mew }; + let me = MoveEntry { win: mew }; bg.init(); me.init(); loop { if let Some(inp) = screen.getch() { - if bg.handle_key(inp) == BGAction::Quit {break} + if bg.handle_key(inp) == BGAction::Quit { + break; + } } } endwin(); |
