def cpu_button_press(self, index): assert index in range(9) # Adds token to the tic tac toe board if not self.state.add_token(CONST.LOC_LOCAL_CPU, index): return self.vsCpu_view.update_tooltip(f'You had made your move at grid {index}!') self.play_sound() self.refresh_boards() # Checks for winning winner = State.checkWinningState(self.state.cpu_board) # Player wins, or tied if winner is not None: Controller.show_cpu_winner(winner, self.state.isPlayerFirst) self.state.game_set(CONST.LOC_LOCAL_CPU, winner) self.vsCpu_view.update_tooltip(f'A new game has begin') self.refresh_boards() # After refresh, check if CPU moves first if not self.state.isPlayerFirst: move = self.state.cpu_moves() self.play_sound() self.refresh_boards() self.vsCpu_view.update_tooltip(f'CPU had made its move at grid {move}!') return # Player moves but not yet deterministic. CPU moves and check state move = self.state.cpu_moves() self.play_sound() self.refresh_boards() self.vsCpu_view.update_tooltip(f'CPU had made its move at grid {move}!') winner = State.checkWinningState(self.state.cpu_board) # Tie or CPU wins if winner is not None: Controller.show_cpu_winner(winner, self.state.isPlayerFirst) self.state.game_set(CONST.LOC_LOCAL_CPU, winner) self.refresh_boards() self.vsCpu_view.update_tooltip('A new game has begin') # After refresh, check if CPU moves first if not self.state.isPlayerFirst: move = self.state.cpu_moves() self.play_sound() self.refresh_boards() self.vsCpu_view.update_tooltip(f'CPU had made its move at grid {move}!')
def practice_button_press(self, index): assert index in range(9) # 1 - Adds token to the tic tac toe board if not self.state.add_token(CONST.LOC_LOCAL_VS, index): return token = 'X' if self.state.isOTurn else 'O' self.practice_view.update_tooltip(f'{token} had made his move at grid {index}!') self.play_sound() self.refresh_boards() # 2 - Checks for winning state, and set state, show winner if someone does win winner = State.checkWinningState( self.state.practice_board ) if winner is None: return self.state.game_set(CONST.LOC_LOCAL_VS, winner) Controller.show_practice_winner(winner) self.practice_view.update_tooltip('A new game has begun') self.refresh_boards()