azul: move bonus score function to player
This commit is contained in:
parent
9f38d6612e
commit
4470f87654
84
src/azul.rs
84
src/azul.rs
|
@ -154,48 +154,6 @@ impl GameState {
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Calculates end-of-game bonus
|
|
||||||
fn bonus_score(player: &Player) -> Result<usize, &'static str> {
|
|
||||||
let mut bonus = 0;
|
|
||||||
|
|
||||||
// Horizontal
|
|
||||||
for row in player.wall {
|
|
||||||
if row.iter().all(|&x| x == true) {
|
|
||||||
bonus += 2;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vertical
|
|
||||||
for column in 0..5 {
|
|
||||||
let mut tiles = 0;
|
|
||||||
for row in 0..5 {
|
|
||||||
if player.wall[row][column] == true {
|
|
||||||
tiles += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if tiles == 5 {
|
|
||||||
bonus += 7
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 5 of a color
|
|
||||||
for color in Color::Blue.into_iter() {
|
|
||||||
let mut tiles = 0;
|
|
||||||
for row in 0..5 {
|
|
||||||
let index = Player::get_wall_index(row, color)?;
|
|
||||||
if player.wall[row][index] == true {
|
|
||||||
tiles += 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if tiles == 5 {
|
|
||||||
bonus += 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Ok(bonus);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone, Default, Copy)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default, Copy)]
|
||||||
|
@ -382,6 +340,48 @@ impl Player {
|
||||||
|
|
||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Calculates end-of-game bonus
|
||||||
|
fn bonus_score(&self) -> Result<usize, &'static str> {
|
||||||
|
let mut bonus = 0;
|
||||||
|
|
||||||
|
// Horizontal
|
||||||
|
for row in self.wall {
|
||||||
|
if row.iter().all(|&x| x == true) {
|
||||||
|
bonus += 2;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vertical
|
||||||
|
for column in 0..5 {
|
||||||
|
let mut tiles = 0;
|
||||||
|
for row in 0..5 {
|
||||||
|
if self.wall[row][column] == true {
|
||||||
|
tiles += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if tiles == 5 {
|
||||||
|
bonus += 7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5 of a color
|
||||||
|
for color in Color::Blue.into_iter() {
|
||||||
|
let mut tiles = 0;
|
||||||
|
for row in 0..5 {
|
||||||
|
let index = Player::get_wall_index(row, color)?;
|
||||||
|
if self.wall[row][index] == true {
|
||||||
|
tiles += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if tiles == 5 {
|
||||||
|
bonus += 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ok(bonus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
|
|
Loading…
Reference in New Issue