def test_best_move_closing_play(self): """ Tests that bot makes last optimum play if at this state """ state = [H,C,0,0,C,H,0,H,0] self.assertEquals(botMove(state),8) state = [C,H,0,H,C,0,0,0,H] self.assertEquals(botMove(state),2)
def test_best_move_has_center_selects_open_side(self): """ Tests that bot takes first or second side if available """ state = [H,0,0,0,C,H,0,0,0] self.assertEquals(botMove(state),1) state = [H,0,0,0,C,0,0,H,0] self.assertEquals(botMove(state),3)
def test_best_move_has_fork_opportunity(self): """ Tests that bot takes fork opportunity if available """ state = [0,H,0,C,C,H,0,H,0] self.assertEquals(botMove(state),0) state = [0,C,0,H,C,H,0,H,0] self.assertEquals(botMove(state),0)
def test_go_for_win_row(self): """ Tests that bot goes for win in row""" state = [0,C,C,0,0,0,0,0,0] self.assertEquals(botMove(state),0) state = [C,0,C,0,0,0,0,0,0] self.assertEquals(botMove(state),1) state = [C,C,0,0,0,0,0,0,0] self.assertEquals(botMove(state),2) state = [0,0,0,0,C,C,0,0,0] self.assertEquals(botMove(state),3) state = [0,0,0,C,0,C,0,0,0] self.assertEquals(botMove(state),4) state = [0,0,0,C,C,0,0,0,0] self.assertEquals(botMove(state),5) state = [0,0,0,0,0,0,0,C,C] self.assertEquals(botMove(state),6) state = [0,0,0,0,0,0,C,0,C] self.assertEquals(botMove(state),7) state = [0,0,0,0,0,0,C,C,0] self.assertEquals(botMove(state),8)
def test_block_win_column(self): """ Tests that bot blocks player win in columns """ state = [0,0,0,H,0,0,H,0,0] self.assertEquals(botMove(state),0) state = [H,0,0,0,0,0,H,0,0] self.assertEquals(botMove(state),3) state = [H,0,0,H,0,0,0,0,0] self.assertEquals(botMove(state),6) state = [0,0,0,0,H,0,0,H,0] self.assertEquals(botMove(state),1) state = [0,H,0,0,0,0,0,H,0] self.assertEquals(botMove(state),4) state = [0,H,0,0,H,0,0,0,0] self.assertEquals(botMove(state),7) state = [0,0,0,0,0,H,0,0,H] self.assertEquals(botMove(state),2) state = [0,0,H,0,0,0,0,0,H] self.assertEquals(botMove(state),5) state = [0,0,H,0,0,H,0,0,0] self.assertEquals(botMove(state),8)
def test_best_move_has_center_avoids_fork(self): """ Tests that bot takes appropriate corner to avoid fork """ state = [0,H,0,H,C,0,0,0,0] self.assertEquals(botMove(state),0) state = [0,H,0,0,C,H,0,0,0] self.assertEquals(botMove(state),0) state = [0,0,0,H,C,0,0,H,0] self.assertEquals(botMove(state),8) state = [0,0,0,0,C,H,0,H,0] self.assertEquals(botMove(state),8)
def move(request,position,state): """ Handles player move """ gs = GameState() sGameState = str(state) iGameState = [] response_dict = {} for ci in sGameState: if int(ci) == 2: iGameState.append(board.COMPUTER_PLAYER) else: iGameState.append(int(ci)) newState = gs.move(board.HUMAN_PLAYER,iGameState,int(position)) if newState is None: response_dict.update({'status' : 'err', 'msg' : 'Invalid move'}) elif gs.isGameOver(newState): winner = gs.getWinner(newState) if winner is None: response_dict.update({'status' : 'gameover', 'msg' : 'Tie Game', 'state' : newState}) elif winner == board.HUMAN_PLAYER: response_dict.update({'status' : 'gameover', 'msg' : 'Player Wins!', 'state' : newState}) else: response_dict.update({'status' : 'gameover', 'msg' : 'Computer Wins!', 'state' : newState}) else: aiMove = botMove(newState) if aiMove is None: response_dict.update({'status' : 'err', 'msg' : 'Something has gone wrong'}) else: fState = gs.move(board.COMPUTER_PLAYER,newState,aiMove) if gs.isGameOver(fState): response_dict.update({'status' : 'gameover', 'msg' : 'Computer Wins!', 'state' : fState}) else: response_dict.update({'status' : 'ok', 'msg' : 'Your move', 'state' : fState}) return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript')
def test_go_win_diagonal(self): """ Tests that bot goes for win in diagonals """ state = [0,0,0,0,C,0,0,0,C] self.assertEquals(botMove(state),0) state = [C,0,0,0,0,0,0,0,C] self.assertEquals(botMove(state),4) state = [C,0,0,0,C,0,0,0,0] self.assertEquals(botMove(state),8) state = [0,0,0,0,C,0,C,0,0] self.assertEquals(botMove(state),2) state = [0,0,C,0,0,0,C,0,0] self.assertEquals(botMove(state),4) state = [0,0,C,0,C,0,0,0,0] self.assertEquals(botMove(state),6)
def test_block_win_diagonal(self): """ Tests that bot blocks player win in diagonals """ state = [0,0,0,0,H,0,0,0,H] self.assertEquals(botMove(state),0) state = [H,0,0,0,0,0,0,0,H] self.assertEquals(botMove(state),4) state = [H,0,0,0,H,0,0,0,0] self.assertEquals(botMove(state),8) state = [0,0,0,0,H,0,H,0,0] self.assertEquals(botMove(state),2) state = [0,0,H,0,0,0,H,0,0] self.assertEquals(botMove(state),4) state = [0,0,H,0,H,0,0,0,0] self.assertEquals(botMove(state),6)
def test_best_move_has_corner_avoids_fork(self): """ Tests that bot takes corner to avoid fork """ state = [C,0,0,0,H,0,0,0,H] self.assertEquals(botMove(state),2)
def test_best_move_takes_corner(self): """ Tests that bot takes first corner if center not available """ state = [0,0,0,0,H,0,0,0,0] self.assertEquals(botMove(state),0)
def test_best_move_takes_center(self): """ Tests that bot takes center if avaiable """ state = [H,0,0,0,0,0,0,0,0] self.assertEquals(botMove(state),4)