Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
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')
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
 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)
Example #11
0
 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)
Example #12
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)