コード例 #1
0
def test_check_col(rule3x3x3):
    state = [
        [' ', ' ', ' '],
        ['X', 'O', ' '],
        ['X', 'O', ' ']
    ]
    new = Move(0, 1, 'O')
    add_move_if_ok(state, new)
    assert _check_row_and_column(rule3x3x3, state, new)
コード例 #2
0
def test_check_diag(rule3x3x3, rule5x5x3):
    state = str_to_arrays(rule3x3x3, 'O  XO X  ')
    new = Move(2, 2, 'O')
    add_move_if_ok(state, new)
    assert _check_diags(rule3x3x3, state, new)

    state = str_to_arrays(rule3x3x3, 'O  OX X  ')
    new = Move(0, 2, 'X')
    add_move_if_ok(state, new)
    assert _check_diags(rule3x3x3, state, new)

    state = [
        [' ', ' ', ' ', ' ', ' '],
        [' ', 'O', ' ', ' ', ' '],
        [' ', ' ', 'O', ' ', ' '],
        [' ', ' ', ' ', 'X', ' '],
        [' ', ' ', 'X', ' ', ' ']
    ]
    new = Move(2, 4, 'X')
    add_move_if_ok(state, new)
    assert _check_diags(rule5x5x3, state, new)

    new = Move(0, 0, 'O')
    add_move_if_ok(state, new)
    assert _check_diags(rule5x5x3, state, new)
コード例 #3
0
ファイル: views.py プロジェクト: samharju/PWP
    def add_move(self, request, pk=None):
        game = self.get_object()
        board = str_to_arrays(game.rule, game.board)
        players = [game.player1, game.player2]
        marker = 'XO'[players.index(request.user)]
        row = request.data.get('row')
        col = request.data.get('column')

        if not all([row is not None, col is not None]):
            return mason_error('Row and column are required values')

        move = Move(int(row), int(col), marker)
        ok, error = add_move_if_ok(board, move)
        if not ok:
            return mason_error(error)

        if game.turn == 1:
            game.turn = 2
        elif game.turn == 2:
            game.turn = 1

        if is_winning_move(game.rule, board, move):
            winner = players.index(request.user)
            game.winner = winner + 1
            game.turn = 0
            update_player_stats(players.pop(winner), players.pop())

        game.board = arrays_to_str(board)
        game.save()
        return Response(status=status.HTTP_204_NO_CONTENT)
コード例 #4
0
def test_is_winning_move(rule3x3x3):
    state = [
        [' ', 'O', ' '],
        ['X', 'X', ' '],
        ['O', 'O', ' ']
    ]
    new = Move(1, 2, 'X')
    add_move_if_ok(state, new)
    assert is_winning_move(rule3x3x3, state, new)

    state = [
        [' ', 'O', ' '],
        ['X', 'X', ' '],
        ['O', 'O', ' ']
    ]
    new = Move(1, 2, 'X')
    add_move_if_ok(state, new)
    assert is_winning_move(rule3x3x3, state, new)
コード例 #5
0
def test_add_move_if_ok():
    state = [
        [' ', 'O', ' '],
        ['X', 'X', ' '],
        ['O', 'O', ' ']
    ]
    new = Move(1, 1, 'X')
    ok, error = add_move_if_ok(state, new)
    assert not ok
    assert error

    new = Move(1, 2, 'X')
    ok, _ = add_move_if_ok(state, new)
    assert ok
    assert state[1][2] == 'X'

    new = Move(52, -5, 'X')
    ok, _ = add_move_if_ok(state, new)
    assert not ok