|
|
@ -3,23 +3,24 @@ use ggez::graphics::{self, Color, DrawMode, Mesh, MeshBuilder}; |
|
|
|
use ggez::{Context, ContextBuilder, GameResult}; |
|
|
|
|
|
|
|
struct Apr { |
|
|
|
rows: i32, |
|
|
|
col: i32, |
|
|
|
board: Vec<Vec<u8>>, |
|
|
|
grid: Mesh, |
|
|
|
// Your state here...
|
|
|
|
} |
|
|
|
|
|
|
|
fn make_grid(ctx: &mut Context, r: i32, c: i32) -> GameResult<Mesh> { |
|
|
|
fn make_grid(ctx: &mut Context, r: i32, c: i32, board: &[Vec<u8>]) -> GameResult<Mesh> { |
|
|
|
let start_x: f32 = 20.0; |
|
|
|
let start_y: f32 = 20.0; |
|
|
|
let size: f32 = 20.0; //compile time constants for now
|
|
|
|
let mut start_white: bool = true; |
|
|
|
|
|
|
|
let mut builder = MeshBuilder::new(); |
|
|
|
|
|
|
|
for row in 0..r { |
|
|
|
let mut colour = start_white; |
|
|
|
for col in 0..c { |
|
|
|
builder.rectangle( |
|
|
|
if colour { |
|
|
|
if board[row as usize][col as usize] == 0 { |
|
|
|
DrawMode::stroke(1.0) |
|
|
|
} else { |
|
|
|
DrawMode::fill() |
|
|
@ -30,21 +31,42 @@ fn make_grid(ctx: &mut Context, r: i32, c: i32) -> GameResult<Mesh> { |
|
|
|
w: size, |
|
|
|
h: size, |
|
|
|
}, |
|
|
|
Color::BLACK, |
|
|
|
match board[row as usize][col as usize] { |
|
|
|
0 | 1 => Color::BLACK, |
|
|
|
2 => Color::RED, |
|
|
|
// 3 => Color::ORANGE,
|
|
|
|
4 => Color::YELLOW, |
|
|
|
5 => Color::GREEN, |
|
|
|
6 => Color::BLUE, |
|
|
|
// 7 => Color::PURPLE,
|
|
|
|
_ => Color::BLACK, |
|
|
|
} |
|
|
|
)?; |
|
|
|
colour = !colour; |
|
|
|
} |
|
|
|
start_white = !start_white; |
|
|
|
} |
|
|
|
|
|
|
|
builder.build(ctx) |
|
|
|
} |
|
|
|
|
|
|
|
fn make_board(r: i32, c: i32) -> Vec<Vec<u8>> { |
|
|
|
let mut init : Vec<Vec<u8>> = vec![vec![0u8; r as usize]; c as usize]; |
|
|
|
for row in 0..r as usize { |
|
|
|
for col in 0..c as usize { |
|
|
|
init[row][col] = (row + col) as u8 % 8; |
|
|
|
} |
|
|
|
} |
|
|
|
init |
|
|
|
} |
|
|
|
|
|
|
|
impl Apr { |
|
|
|
pub fn new(_ctx: &mut Context) -> Apr { |
|
|
|
pub fn new(_ctx: &mut Context, r: i32, c: i32) -> Apr { |
|
|
|
// Load/create resources such as images here.
|
|
|
|
let board = make_board(r, c); |
|
|
|
Apr { |
|
|
|
grid: make_grid(_ctx, 8, 8).unwrap(), |
|
|
|
rows: r, |
|
|
|
col: c, |
|
|
|
grid: make_grid(_ctx, r, c, board.as_slice()).unwrap(), |
|
|
|
board: board, |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -75,7 +97,7 @@ fn main() { |
|
|
|
// Create an instance of your event handler.
|
|
|
|
// Usually, you should provide it with the Context object to
|
|
|
|
// use when setting your game up.
|
|
|
|
let apr = Apr::new(&mut ctx); |
|
|
|
let apr = Apr::new(&mut ctx, 8, 8); |
|
|
|
|
|
|
|
// Run!
|
|
|
|
event::run(ctx, event_loop, apr); |
|
|
|