mirror of
https://github.com/szymon-jozef/checkers.git
synced 2026-10-27 19:20:44 +01:00
chore: add GameMaster and PlayerList
This commit is contained in:
41
src/logic/game_master.rs
Normal file
41
src/logic/game_master.rs
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
use crate::logic::{board::board::Board, player::Player};
|
||||||
|
|
||||||
|
struct PlayerList {
|
||||||
|
pub players: [Player; 2],
|
||||||
|
current_turn: usize,
|
||||||
|
size: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PlayerList {
|
||||||
|
pub fn new(player1_name: String, player2_name: String) -> Self {
|
||||||
|
PlayerList {
|
||||||
|
players: [Player::new(player1_name), Player::new(player2_name)],
|
||||||
|
current_turn: 0,
|
||||||
|
size: 2,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn change_turn(&mut self) {
|
||||||
|
self.current_turn = (self.current_turn + 1) % self.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_current_turn(&self) -> &Player {
|
||||||
|
&self.players[self.current_turn]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct GameMaster {
|
||||||
|
players: PlayerList,
|
||||||
|
board: Board,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GameMaster {
|
||||||
|
pub fn new(player1_name: String, player2_name: String) -> Self {
|
||||||
|
let mut players: PlayerList = PlayerList::new(player1_name, player2_name);
|
||||||
|
let [player1, player2] = &mut players.players;
|
||||||
|
|
||||||
|
let board = Board::new(player1, player2, None);
|
||||||
|
|
||||||
|
GameMaster { players, board }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
pub mod board;
|
mod board;
|
||||||
|
pub mod game_master;
|
||||||
mod math;
|
mod math;
|
||||||
mod player;
|
mod player;
|
||||||
|
|||||||
Reference in New Issue
Block a user