start with some structure of the game
This commit is contained in:
parent
09233e1e99
commit
341fa3f2f2
|
@ -0,0 +1,5 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
[[package]]
|
||||||
|
name = "Mercury"
|
||||||
|
version = "0.1.0"
|
|
@ -0,0 +1,119 @@
|
||||||
|
#[derive(Debug)]
|
||||||
|
enum Tile {
|
||||||
|
Blue,
|
||||||
|
Yellow,
|
||||||
|
Red,
|
||||||
|
Black,
|
||||||
|
Teal
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Bag {
|
||||||
|
blue: u8,
|
||||||
|
yellow: u8,
|
||||||
|
red: u8,
|
||||||
|
black: u8,
|
||||||
|
teal: u8
|
||||||
|
}
|
||||||
|
impl Default for Bag {
|
||||||
|
fn default() -> Self {
|
||||||
|
Bag {
|
||||||
|
blue: 20,
|
||||||
|
yellow: 20,
|
||||||
|
red: 20,
|
||||||
|
black: 20,
|
||||||
|
teal: 20
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default, Debug)]
|
||||||
|
struct Factory {
|
||||||
|
blue: u8,
|
||||||
|
yellow: u8,
|
||||||
|
red: u8,
|
||||||
|
black: u8,
|
||||||
|
teal: u8
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Market {
|
||||||
|
start: u8,
|
||||||
|
blue: u8,
|
||||||
|
yellow: u8,
|
||||||
|
red: u8,
|
||||||
|
black: u8,
|
||||||
|
teal: u8
|
||||||
|
}
|
||||||
|
impl Default for Market {
|
||||||
|
fn default() -> Self {
|
||||||
|
Market {
|
||||||
|
start: 1,
|
||||||
|
blue: 0,
|
||||||
|
yellow: 0,
|
||||||
|
red: 0,
|
||||||
|
black: 0,
|
||||||
|
teal: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
struct Patternline (Option<Tile>, u8);
|
||||||
|
type Patterns = [Patternline; 5];
|
||||||
|
|
||||||
|
type Row = [bool; 5];
|
||||||
|
type Wall = [Row; 5];
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Board {
|
||||||
|
score: u8,
|
||||||
|
wall: Wall,
|
||||||
|
floor: u8,
|
||||||
|
patterns: Patterns,
|
||||||
|
}
|
||||||
|
impl Default for Board {
|
||||||
|
fn default() -> Self {
|
||||||
|
Board {
|
||||||
|
score: 0,
|
||||||
|
wall: Wall::default(),
|
||||||
|
floor: 0,
|
||||||
|
patterns: Patterns::default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default, Debug)]
|
||||||
|
pub struct Game {
|
||||||
|
bag: Bag,
|
||||||
|
market: Market,
|
||||||
|
factories: Vec<Factory>,
|
||||||
|
boards: Vec<Board>
|
||||||
|
}
|
||||||
|
impl Game {
|
||||||
|
pub fn new(players: usize) -> Result<Self, &'static str> {
|
||||||
|
let n_factories = match players {
|
||||||
|
2 => 5,
|
||||||
|
3 => 7,
|
||||||
|
4 => 9,
|
||||||
|
_ => return Err("Not a valid amount of players")
|
||||||
|
};
|
||||||
|
let mut factories = Vec::<Factory>::with_capacity(n_factories);
|
||||||
|
for _ in 0..n_factories {
|
||||||
|
factories.push(Factory::default())
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut boards = Vec::<Board>::with_capacity(players);
|
||||||
|
for _ in 0..players {
|
||||||
|
boards.push(Board::default());
|
||||||
|
}
|
||||||
|
|
||||||
|
let game = Game {
|
||||||
|
bag: Bag::default(),
|
||||||
|
market: Market::default(),
|
||||||
|
factories: factories,
|
||||||
|
boards: boards
|
||||||
|
};
|
||||||
|
Ok(game)
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,8 @@
|
||||||
|
mod azul;
|
||||||
|
use azul::Game;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Hello, world!");
|
|
||||||
|
let game = Game::new(2);
|
||||||
|
println!("{:#?}", game);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue