예제 #1
0
def run_game(player_one, player_two):
    print 'Starting Game'
    game = GameBoard()
    turn = 0
    while game.winner is None:
        #player one plays even turns
        if turn % 2 == 0:
            current_player = player_one
        #player two plays odd turns
        else:
            current_player = player_two

        # get player input
        print game
        print '   '.join(str(number) for number in range(game.columns))
        column = raw_input('{} which column to place {}? '.format(
            current_player.name, current_player.piece))

        # try to insert piece into board, retry turn if failure
        if not game.insert_piece(column, current_player.piece):
            print 'Column either full or invalid, please make another move'
            continue

        turn += 1
    print game
    print '{} wins in {} turns'.format(current_player.name, turn)
예제 #2
0
def run_game(player_one, player_two):
    print 'Starting Game'
    game = GameBoard()
    turn = 0
    while game.winner is None:
        #player one plays even turns
        if turn % 2 == 0:
            current_player = player_one
        #player two plays odd turns
        else:
            current_player = player_two

        # get player input
        print game
        print '   '.join(str(number) for number in range(game.columns))
        column = raw_input('{} which column to place {}? '.format(
            current_player.name,
            current_player.piece
        ))

        # try to insert piece into board, retry turn if failure
        if not game.insert_piece(column, current_player.piece):
            print 'Column either full or invalid, please make another move'
            continue

        turn += 1
    print game
    print '{} wins in {} turns'.format(current_player.name, turn)
예제 #3
0
def test_vertical_win():
    game = GameBoard()
    game.insert_piece(0, 'X')
    game.insert_piece(0, 'X')
    game.insert_piece(0, 'X')
    assert game.winner is None
    game.insert_piece(0, 'X')
    assert game.winner == 'X'
예제 #4
0
def test_horizontal_win():
    game = GameBoard()
    game.insert_piece(0, 'X')
    game.insert_piece(1, 'X')
    game.insert_piece(2, 'X')
    assert game.winner is None
    game.insert_piece(3, 'X')
    assert game.winner == 'X'
예제 #5
0
def test_vertical_win():
    game = GameBoard()
    game.insert_piece(0, 'X')
    game.insert_piece(0, 'X')
    game.insert_piece(0, 'X')
    assert game.winner is None
    game.insert_piece(0, 'X')
    assert game.winner == 'X'
예제 #6
0
def test_horizontal_win():
    game = GameBoard()
    game.insert_piece(0, 'X')
    game.insert_piece(1, 'X')
    game.insert_piece(2, 'X')
    assert game.winner is None
    game.insert_piece(3, 'X')
    assert game.winner == 'X'
예제 #7
0
def test_insert_piece_success():
    # ensure correctly inserting piece results in successful return
    game = GameBoard()
    assert game.insert_piece(0, 'X') is True
예제 #8
0
def test_good_string_entry():
    # ensure board state changes upon correct string entry
    game = GameBoard()
    empty_board = str(game)
    game.insert_piece('0', 'X')
    assert str(game) != empty_board
예제 #9
0
def test_bad_string_entry():
    # ensure board state remains unchanged upon bad string entry
    game = GameBoard()
    empty_board = str(game)
    game.insert_piece('test', 'X')
    assert str(game) == empty_board
예제 #10
0
def test_bad_int_entry():
    # ensure board state remains unchanged upon bad int entry
    game = GameBoard()
    empty_board = str(game)
    game.insert_piece(12315, 'X')
    assert str(game) == empty_board
예제 #11
0
def test_diagonal_win():
    game = GameBoard()
    game.insert_piece(0, 'X')
    game.insert_piece(1, 'Y')
    game.insert_piece(1, 'X')
    game.insert_piece(2, 'Y')
    game.insert_piece(2, 'Y')
    game.insert_piece(2, 'X')
    game.insert_piece(3, 'Y')
    game.insert_piece(3, 'Y')
    game.insert_piece(3, 'Y')
    assert game.winner is None
    game.insert_piece(3, 'X')
    assert game.winner == 'X'
예제 #12
0
def test_insert_piece_failure():
    # ensure incorrectly inserting piece results in failure return
    game = GameBoard()
    assert game.insert_piece('test', 'X') is False
예제 #13
0
def test_insert_piece_success():
    # ensure correctly inserting piece results in successful return
    game = GameBoard()
    assert game.insert_piece(0, 'X') is True
예제 #14
0
def test_good_string_entry():
    # ensure board state changes upon correct string entry
    game = GameBoard()
    empty_board = str(game)
    game.insert_piece('0', 'X')
    assert str(game) != empty_board
예제 #15
0
def test_bad_string_entry():
    # ensure board state remains unchanged upon bad string entry
    game = GameBoard()
    empty_board = str(game)
    game.insert_piece('test', 'X')
    assert str(game) == empty_board
예제 #16
0
def test_bad_int_entry():
    # ensure board state remains unchanged upon bad int entry
    game = GameBoard()
    empty_board = str(game)
    game.insert_piece(12315, 'X')
    assert str(game) == empty_board
예제 #17
0
def test_insert_piece_failure():
    # ensure incorrectly inserting piece results in failure return
    game = GameBoard()
    assert game.insert_piece('test', 'X') is False
예제 #18
0
def run_simulation():
    print 'Game Start'
    game = GameBoard()
    game.insert_piece(0,'X')
    print game
    print '#'* 10, 'winner: {}'.format(game.winner), '#'* 10
    game.insert_piece(1, 'Y')
    print game
    print '#'* 10, 'winner: {}'.format(game.winner), '#'* 10
    game.insert_piece(0,'X')
    print game
    print '#'* 10, 'winner: {}'.format(game.winner), '#'* 10
    game.insert_piece(2, 'Y')
    print game
    print '#'* 10, 'winner: {}'.format(game.winner), '#'* 10
    game.insert_piece(0,'X')
    print game
    print '#'* 10, 'winner: {}'.format(game.winner), '#'* 10
    game.insert_piece(2, 'Y')
    print game
    print '#'* 10, 'winner: {}'.format(game.winner), '#'* 10
    game.insert_piece(0,'X')
    print game
    print '#'* 10, 'winner: {}'.format(game.winner), '#'* 10
예제 #19
0
def test_diagonal_win():
    game = GameBoard()
    game.insert_piece(0, 'X')
    game.insert_piece(1, 'Y')
    game.insert_piece(1, 'X')
    game.insert_piece(2, 'Y')
    game.insert_piece(2, 'Y')
    game.insert_piece(2, 'X')
    game.insert_piece(3, 'Y')
    game.insert_piece(3, 'Y')
    game.insert_piece(3, 'Y')
    assert game.winner is None
    game.insert_piece(3, 'X')
    assert game.winner == 'X'