GameState::reward_for_player is no longer a trait function

We need GameState::rewards_for_players implemented, the library
currently doesn't need to specify for a singular player.
This commit is contained in:
2025-06-30 21:41:49 -07:00
parent 76051cd76b
commit 6aa9002e92
4 changed files with 43 additions and 46 deletions
+13 -13
View File
@@ -125,6 +125,19 @@ impl TicTacToe {
None
}
fn reward_for_player(&self, player: &Player) -> RewardVal {
if let Some(winner) = self.get_winner() {
if winner == *player {
return 1.0; // Win
} else {
return 0.0; // Loss
}
}
// Draw
0.5
}
}
impl GameState for TicTacToe {
@@ -161,19 +174,6 @@ impl GameState for TicTacToe {
self.get_winner().is_some() || self.moves_played == 9
}
fn reward_for_player(&self, player: &Self::Player) -> RewardVal {
if let Some(winner) = self.get_winner() {
if winner == *player {
return 1.0; // Win
} else {
return 0.0; // Loss
}
}
// Draw
0.5
}
fn rewards_for_players(&self) -> HashMap<Self::Player, RewardVal> {
HashMap::from_iter(vec![
(Player::X, self.reward_for_player(&Player::X)),