|
|
@ -4,10 +4,11 @@ use ggez::{Context, ContextBuilder, GameResult}; |
|
|
|
|
|
|
|
struct Apr { |
|
|
|
rows: i32, |
|
|
|
col: i32, |
|
|
|
cols: i32, |
|
|
|
board: Vec<Vec<u8>>, |
|
|
|
grid: Mesh, |
|
|
|
// Your state here...
|
|
|
|
__TEST_state : usize |
|
|
|
} |
|
|
|
|
|
|
|
fn make_grid(ctx: &mut Context, r: i32, c: i32, board: &[Vec<u8>]) -> GameResult<Mesh> { |
|
|
@ -20,11 +21,7 @@ fn make_grid(ctx: &mut Context, r: i32, c: i32, board: &[Vec<u8>]) -> GameResult |
|
|
|
for row in 0..r { |
|
|
|
for col in 0..c { |
|
|
|
builder.rectangle( |
|
|
|
if board[row as usize][col as usize] == 0 { |
|
|
|
DrawMode::stroke(1.0) |
|
|
|
} else { |
|
|
|
DrawMode::fill() |
|
|
|
}, |
|
|
|
DrawMode::fill(), |
|
|
|
graphics::Rect { |
|
|
|
x: start_x + (size * col as f32), |
|
|
|
y: start_y + (size * row as f32), |
|
|
@ -32,13 +29,14 @@ fn make_grid(ctx: &mut Context, r: i32, c: i32, board: &[Vec<u8>]) -> GameResult |
|
|
|
h: size, |
|
|
|
}, |
|
|
|
match board[row as usize][col as usize] { |
|
|
|
0 | 1 => Color::BLACK, |
|
|
|
0 => Color::WHITE, |
|
|
|
1 => Color::BLACK, |
|
|
|
2 => Color::RED, |
|
|
|
// 3 => Color::ORANGE,
|
|
|
|
3 => Color::CYAN, |
|
|
|
4 => Color::YELLOW, |
|
|
|
5 => Color::GREEN, |
|
|
|
6 => Color::BLUE, |
|
|
|
// 7 => Color::PURPLE,
|
|
|
|
7 => Color::MAGENTA, |
|
|
|
_ => Color::BLACK, |
|
|
|
} |
|
|
|
)?; |
|
|
@ -64,22 +62,33 @@ impl Apr { |
|
|
|
let board = make_board(r, c); |
|
|
|
Apr { |
|
|
|
rows: r, |
|
|
|
col: c, |
|
|
|
cols: c, |
|
|
|
grid: make_grid(_ctx, r, c, board.as_slice()).unwrap(), |
|
|
|
board: board, |
|
|
|
__TEST_state : 0, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
fn set_colour(&mut self, ctx : &mut Context, r : usize, c : usize, col : u8) -> GameResult<()> { |
|
|
|
self.board[r][c] = col; |
|
|
|
self.grid = make_grid(ctx, self.rows, self.cols, self.board.as_slice())?; |
|
|
|
Ok(()) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
impl EventHandler for Apr { |
|
|
|
fn update(&mut self, _ctx: &mut Context) -> GameResult<()> { |
|
|
|
// Err(ggez::GameError::CustomError("You done messed up trying to play this game!".to_string()))
|
|
|
|
// Update code here...
|
|
|
|
let c = self.__TEST_state % 8; |
|
|
|
let r = (self.__TEST_state / 8) % 8; |
|
|
|
self.set_colour(_ctx, r, c, (self.board[r][c] + 1) % 8)?; |
|
|
|
self.__TEST_state += 1; |
|
|
|
Ok(()) |
|
|
|
} |
|
|
|
|
|
|
|
fn draw(&mut self, ctx: &mut Context) -> GameResult<()> { |
|
|
|
graphics::clear(ctx, Color::WHITE); |
|
|
|
graphics::clear(ctx, Color::new(0.5, 0.5, 0.5, 1.0)); |
|
|
|
let drawparams = graphics::DrawParam::new(); |
|
|
|
|
|
|
|
graphics::draw(ctx, &self.grid, drawparams)?; |
|
|
|