wip
This commit is contained in:
parent
4da70e21b3
commit
d6df7af4fe
3 changed files with 20 additions and 10 deletions
|
|
@ -71,7 +71,7 @@ impl Bot {
|
||||||
debug!(">>>> {:?} BOT handle", self.color);
|
debug!(">>>> {:?} BOT handle", self.color);
|
||||||
let game = self.strategy.get_mut_game();
|
let game = self.strategy.get_mut_game();
|
||||||
let internal_event = if self.color == Color::Black {
|
let internal_event = if self.color == Color::Black {
|
||||||
&event.get_mirror()
|
&event.get_mirror(false)
|
||||||
} else {
|
} else {
|
||||||
event
|
event
|
||||||
};
|
};
|
||||||
|
|
@ -126,7 +126,7 @@ impl Bot {
|
||||||
return if self.color == Color::Black {
|
return if self.color == Color::Black {
|
||||||
debug!(" bot (internal) evt : {internal_event:?} ; points : {player_points:?}");
|
debug!(" bot (internal) evt : {internal_event:?} ; points : {player_points:?}");
|
||||||
debug!("<<<< end {:?} BOT handle", self.color);
|
debug!("<<<< end {:?} BOT handle", self.color);
|
||||||
internal_event.map(|evt| evt.get_mirror())
|
internal_event.map(|evt| evt.get_mirror(false))
|
||||||
} else {
|
} else {
|
||||||
debug!("<<<< end {:?} BOT handle", self.color);
|
debug!("<<<< end {:?} BOT handle", self.color);
|
||||||
internal_event
|
internal_event
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@ impl GameState {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn mirror(&self) -> GameState {
|
pub fn mirror(&self) -> GameState {
|
||||||
let mirrored_active_player = if self.active_player_id == 1 { 0 } else { 1 };
|
// let mirrored_active_player = if self.active_player_id == 1 { 2 } else { 1 };
|
||||||
let mut mirrored_players = HashMap::new();
|
let mut mirrored_players = HashMap::new();
|
||||||
if let Some(p2) = self.players.get(&2) {
|
if let Some(p2) = self.players.get(&2) {
|
||||||
mirrored_players.insert(1, p2.mirror());
|
mirrored_players.insert(1, p2.mirror());
|
||||||
|
|
@ -156,7 +156,7 @@ impl GameState {
|
||||||
.history
|
.history
|
||||||
.clone()
|
.clone()
|
||||||
.iter()
|
.iter()
|
||||||
.map(|evt| evt.get_mirror())
|
.map(|evt| evt.get_mirror(false))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let (move1, move2) = self.dice_moves;
|
let (move1, move2) = self.dice_moves;
|
||||||
|
|
@ -164,7 +164,7 @@ impl GameState {
|
||||||
stage: self.stage,
|
stage: self.stage,
|
||||||
turn_stage: self.turn_stage,
|
turn_stage: self.turn_stage,
|
||||||
board: self.board.mirror(),
|
board: self.board.mirror(),
|
||||||
active_player_id: mirrored_active_player,
|
active_player_id: self.active_player_id,
|
||||||
players: mirrored_players,
|
players: mirrored_players,
|
||||||
history: mirrored_history,
|
history: mirrored_history,
|
||||||
dice: self.dice,
|
dice: self.dice,
|
||||||
|
|
@ -469,10 +469,12 @@ impl GameState {
|
||||||
Roll { player_id } => {
|
Roll { player_id } => {
|
||||||
// Check player exists
|
// Check player exists
|
||||||
if !self.players.contains_key(player_id) {
|
if !self.players.contains_key(player_id) {
|
||||||
|
error!("unknown player_id");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Check player is currently the one making their move
|
// Check player is currently the one making their move
|
||||||
if self.active_player_id != *player_id {
|
if self.active_player_id != *player_id {
|
||||||
|
error!("not active player_id");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Check the turn stage
|
// Check the turn stage
|
||||||
|
|
@ -902,10 +904,12 @@ impl GameEvent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_mirror(&self) -> Self {
|
pub fn get_mirror(&self, preserve_player: bool) -> Self {
|
||||||
// let mut mirror = self.clone();
|
// let mut mirror = self.clone();
|
||||||
let mirror_player_id = if let Some(player_id) = self.player_id() {
|
let mirror_player_id = if let Some(player_id) = self.player_id() {
|
||||||
if player_id == 1 {
|
if preserve_player {
|
||||||
|
player_id
|
||||||
|
} else if player_id == 1 {
|
||||||
2
|
2
|
||||||
} else {
|
} else {
|
||||||
1
|
1
|
||||||
|
|
|
||||||
|
|
@ -53,9 +53,14 @@ impl TricTrac {
|
||||||
fn get_legal_actions(&self, player_idx: u64) -> Vec<usize> {
|
fn get_legal_actions(&self, player_idx: u64) -> Vec<usize> {
|
||||||
if player_idx == self.current_player_idx() {
|
if player_idx == self.current_player_idx() {
|
||||||
if player_idx == 0 {
|
if player_idx == 0 {
|
||||||
|
println!("get valid actions for first player");
|
||||||
|
println!("{}", self.game_state);
|
||||||
get_valid_action_indices(&self.game_state)
|
get_valid_action_indices(&self.game_state)
|
||||||
} else {
|
} else {
|
||||||
get_valid_action_indices(&self.game_state.mirror())
|
let mirror = self.game_state.mirror();
|
||||||
|
println!("get validd actions for mirror");
|
||||||
|
println!("{}", mirror);
|
||||||
|
get_valid_action_indices(&mirror)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
vec![]
|
vec![]
|
||||||
|
|
@ -87,13 +92,14 @@ impl TricTrac {
|
||||||
if let Some(event) =
|
if let Some(event) =
|
||||||
TrictracAction::from_action_index(action_idx).and_then(|a| a.to_event(&self.game_state))
|
TrictracAction::from_action_index(action_idx).and_then(|a| a.to_event(&self.game_state))
|
||||||
{
|
{
|
||||||
println!("get event {:?}", event);
|
println!(">get event {:?}", event);
|
||||||
|
|
||||||
let event = if self.game_state.active_player_id == 2 {
|
let event = if self.game_state.active_player_id == 2 {
|
||||||
event.get_mirror()
|
event.get_mirror(true)
|
||||||
} else {
|
} else {
|
||||||
event
|
event
|
||||||
};
|
};
|
||||||
|
println!("validating event {:?}", event);
|
||||||
if self.game_state.validate(&event) {
|
if self.game_state.validate(&event) {
|
||||||
println!("valid event");
|
println!("valid event");
|
||||||
self.game_state.consume(&event);
|
self.game_state.consume(&event);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue