From f896fc1c3ad69d5b9f4a61c53025b2a86dbb5910 Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sat, 6 May 2023 12:57:19 +0300 Subject: [PATCH] I am stopdid with indexes --- src/bored/mod.rs | 10 +++++----- src/main.rs | 40 ++++++++++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/bored/mod.rs b/src/bored/mod.rs index b4fb469..82ad42d 100644 --- a/src/bored/mod.rs +++ b/src/bored/mod.rs @@ -3,16 +3,16 @@ use crate::gamedata::{Board, Disk}; #[cfg(test)] mod tests; pub struct GameState { - circles: Vec<(i32, i32, Disk)>, - empty: Vec, - player_turn: bool, - board: Board, + pub circles: Vec<(i32, i32, Disk)>, + pub bottom: Vec, + pub player_turn: bool, + pub board: Board, } impl Default for GameState { fn default() -> Self { Self { circles: vec![], - empty: vec![], + bottom: vec![], player_turn: false, board: Board::default(), } diff --git a/src/main.rs b/src/main.rs index 9dab2cc..899915c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use oxidised4::bored::GameState; +use oxidised4::{bored::GameState, gamedata::Disk}; use raylib::prelude::*; const NROW: i32 = 6; const NCOL: i32 = 7; @@ -33,14 +33,24 @@ fn main() { let _square_wewant = (square_widf * NROW / 2, square_heif * 3 / 2); let _square_center = square_widf / 2; //7,9 are the values to center the circle - let state: GameState = GameState::default(); + let mut state: GameState = GameState::default(); rl.set_target_fps(60); while !rl.window_should_close() { let mut d = rl.begin_drawing(&thread); if d.is_mouse_button_pressed(MouseButton::MOUSE_LEFT_BUTTON) { let column = get_mouse_column(&d, square_widf); - d.draw_texture(&circle_texture, column, STARTY, Color::VIOLET); + let coords = get_circle_coords(1, column); + state.circles.push((coords.1, coords.0, Disk::RED)); + } + for circle in &state.circles { + let (x, y, disk) = circle; + let color = match disk { + Disk::RED => Color::RED, + Disk::BLU => Color::BLUE, + Disk::EMPTY => Color::WHITE, + }; + d.draw_texture(&circle_texture, *x, *y, color); } d.clear_background(Color::WHITE); d.draw_texture(&board_texture, BOARDSTART.0, BOARDSTART.1, Color::VIOLET); @@ -48,22 +58,23 @@ fn main() { } //TODO move this to a struct -const STARTX: i32 = 7; -const STARTY: i32 = 9; -const WX: i32 = 15; -const CIRCLEWIDTH: i32 = 55; -fn get_circle_coords(row: i32, column: i32) -> (i32, i32) { +const STARTX: i32 = 9; +const STARTY: i32 = 7; +const WX: i32 = 14; +const WY: i32 = 14; +const CIRCLEWIDTH: i32 = 56; +fn get_circle_coords(x: i32, y: i32) -> (i32, i32) { let mut returned: (i32, i32) = (STARTX, STARTY); - match row { + match x { 1 => {} _ => { - returned.0 = STARTX + (CIRCLEWIDTH * (row - 1)) + (WX * (row - 1)); + returned.0 = STARTX + (CIRCLEWIDTH * (x - 1)) + (WX * (x - 1)); } }; - match column { + match y { 1 => {} _ => { - returned.1 = STARTY + (CIRCLEWIDTH * (column - 1)) + (WX * (column - 1)); + returned.1 = STARTY + (CIRCLEWIDTH * (y - 1)) + (WY * (y - 1)); } }; returned @@ -72,11 +83,12 @@ fn get_mouse_column(rl: &RaylibHandle, sw: i32) -> i32 { //row,col return let mouse_pos = rl.get_mouse_x(); dbg!(mouse_pos); - for num in 1..NCOL { + for num in 1..NCOL + 1 { dbg!(mouse_pos < sw * (num) - STARTX); if (mouse_pos > sw * (num - 1) + STARTX) && (mouse_pos < sw * (num) - STARTX) { + dbg!(num); return num; } } - 10 + -100 }