Exemple #1
0
def test_blocky():
    block = generate_board(0, 750)
    blocky = _block_to_squares(block)
    assert isinstance(blocky, list)
    assert blocky[0][0] in COLOUR_LIST
    assert blocky[0][1] == (0, 0)
    assert blocky[0][2] == 750
    print(block)

    main_block = Block((0, 0), 200, colour=None, level=0, max_depth=2)
    child_block_1 = Block((100, 0), 100, colour=COLOUR_LIST[0], level=1,
                          max_depth=2)
    child_block_2 = Block((0, 0), 100, colour=COLOUR_LIST[1], level=1,
                          max_depth=2)
    child_block_3 = Block((0, 100), 100, colour=COLOUR_LIST[2], level=1,
                          max_depth=2)
    child_block_4 = Block((100, 100), 100, colour=COLOUR_LIST[3], level=1,
                          max_depth=2)
    main_block.children = [child_block_1, child_block_2, child_block_3,
                           child_block_4]
    blocky = _block_to_squares(main_block)
    assert len(blocky) == 4
    assert blocky[0][0] in COLOUR_LIST
    assert blocky[0][1] == (100, 0)
    assert blocky[0][2] == 100
    assert blocky[1][0] in COLOUR_LIST
    assert blocky[1][1] == (0, 0)
    assert blocky[1][2] == 100
    assert blocky[2][0] in COLOUR_LIST
    assert blocky[2][1] == (0, 100)
    assert blocky[2][2] == 100
    assert blocky[3][0] in COLOUR_LIST
    assert blocky[3][1] == (100, 100)
    assert blocky[3][2] == 100
Exemple #2
0
def test_depth_5_2():
    random.seed(1002)
    board = generate_board(5, BOARD_SIZE)
    copy = board.create_copy()
    assert board == copy
    assert id(board) != id(copy)
    for i in range(len(board.children)):
        assert id(board.children[i]) != id(copy.children[i])
Exemple #3
0
def test_unit_board():
    random.seed(1)
    board = generate_board(1, BOARD_SIZE)
    goal = BlobGoal(COLOUR_LIST[1])
    player = RandomPlayer(1, goal)
    player._proceed = True
    move = player.generate_move(board)
    print(move)
    player2 = SmartPlayer(1, goal, 1)
    player2._proceed = True
    move2 = player2.generate_move(board)
    print(move2)
Exemple #4
0
    def __init__(self, max_depth: int, num_human: int, num_random: int,
                 smart_players: List[int]) -> None:
        """Initialize this game, as described in the Assignment 2 handout.

        Precondition:
            2 <= max_depth <= 5
        """
        board = generate_board(max_depth, BOARD_SIZE)
        players = create_players(num_human, num_random, smart_players)
        self._renderer = Renderer(BOARD_SIZE)
        self._data = GameData(board, players)
        self._state = MainState(self._data)
Exemple #5
0
def test_create_copy() -> None:
    """ Test create copy for deep copy
    """
    b1 = generate_board(5, 750)
    b2 = b1.create_copy()

    assert b1 == b2
    assert b1 is not b2

    b3 = copy.deepcopy(b1)
    assert b2 is not b3
    assert b2 == b3
Exemple #6
0
def test_depth_5_board(renderer):
    random.seed(1002)
    board = generate_board(5, BOARD_SIZE)
    renderer.draw_board(_block_to_squares(board))
    renderer.save_to_file('board_5_ref.png')
    renderer.clear()
    goal1 = BlobGoal(COLOUR_LIST[0])  # blue
    goal2 = BlobGoal(COLOUR_LIST[1])  # red
    player1 = RandomPlayer(1, goal1)
    player2 = RandomPlayer(2, goal2)
    player1._proceed = True
    move1 = player1.generate_move(board)
    move1_block = move1[2]
    to_do = _get_block(board, move1_block.position, move1_block.level)
    assert move1[0] == "swap" and move1[1] == 0
    assert to_do.swap(0)
    renderer.draw_board(_block_to_squares(board))
    renderer.save_to_file('board_5_move1.png')
    renderer.clear()
    afterfirst1 = goal1.score(board)
    afterfirst2 = goal2.score(board)
    player2._proceed = True
    move2 = player2.generate_move(board)
    move2_block = move2[2]
    to_do_2 = _get_block(board, move2_block.position, move2_block.level)
    assert move2[0] == "smash"
    assert to_do_2.smash()
    renderer.draw_board(_block_to_squares(board))
    renderer.save_to_file('board_5_move2.png')
    renderer.clear()
    aftersecond1 = goal1.score(board)
    aftersecond2 = goal2.score(board)
    player1._proceed = True
    move3 = player1.generate_move(board)
    move3_block = move3[2]
    to_do_3 = _get_block(board, move3_block.position, move3_block.level)
    assert move3[0] == "rotate" and move3[1] == 3
    assert to_do_3.rotate(3)
    renderer.draw_board(_block_to_squares(board))
    renderer.save_to_file('board_5_move3.png')
    renderer.clear()
    afterthird1 = goal1.score(board)
    afterthird2 = goal2.score(board)
Exemple #7
0
def test_block():
    block = generate_board(4, 750)
    assert len(block.children) == 4
    assert block.max_depth == 4
    assert block.level == 0
    assert block.colour is None
    assert block.size == 750
    block = block.children[0]
    assert block.level == 1
    assert block.size == 375
    for c in block.children:
        if len(c.children) == 0:
            assert c.smashable() is True
        else:
            assert c.smashable() is False

    block = generate_board(0, 750)
    assert block.colour is not None
    assert len(block.children) == 0
    assert block.level == 0
    assert block.max_depth == 0
    assert block.size == 750
    assert block.smash() is False
    assert block.swap(0) is False
    assert block.swap(1) is False
    assert block.rotate(1) is False
    assert block.rotate(3) is False

    block = generate_board(1, 750)
    assert block.colour is None
    assert len(block.children) == 4
    assert block.children[0].size == 375
    assert block.children[1].colour is not None
    assert block.children[2].colour is not None
    assert block.children[3].colour is not None
    assert block.children[1].position == (0, 0)
    assert block.children[0].position == (375, 0)
    assert block.children[2].position == (0, 375)
    assert block.children[3].position == (375, 375)
    assert block.children[0].smashable() is False
    assert block.children[1].smash() is False
    assert block.children[2].smashable() is False
    assert block.children[3].smash() is False

    block = generate_board(4, 750)
    block_copy = block.create_copy()
    assert block == block_copy
    block.swap(1)
    for i, j in zip(block.children, block_copy.children):
        assert i.position == j.position
    block.swap(0)
    for i, j in zip(block.children, block_copy.children):
        assert i.position == j.position

    main_block = Block((0, 0), 200, colour=None, level=0, max_depth=2)
    child_block_1 = Block((100, 0), 100, colour=COLOUR_LIST[0], level=1,
                          max_depth=2)
    child_block_2 = Block((0, 0), 100, colour=COLOUR_LIST[1], level=1,
                          max_depth=2)
    child_block_3 = Block((0, 100), 100, colour=COLOUR_LIST[2], level=1,
                          max_depth=2)
    child_block_4 = Block((100, 100), 100, colour=COLOUR_LIST[3], level=1,
                          max_depth=2)
    main_block.children = [child_block_1, child_block_2, child_block_3,
                           child_block_4]

    assert main_block.swap(1)
    assert main_block.children[0].colour == COLOUR_LIST[3]
    assert main_block.children[1].colour == COLOUR_LIST[2]
    assert main_block.children[3].colour == COLOUR_LIST[0]
    assert main_block.children[2].colour == COLOUR_LIST[1]

    assert main_block.swap(1)
    assert main_block.swap(0)
    assert main_block.children[0].colour == COLOUR_LIST[1]
    assert main_block.children[3].colour == COLOUR_LIST[2]
    assert main_block.children[1].colour == COLOUR_LIST[0]
    assert main_block.children[2].colour == COLOUR_LIST[3]

    assert main_block.swap(0)
    assert main_block.rotate(1)
    assert main_block.children[0].colour == COLOUR_LIST[1]
    assert main_block.children[1].colour == COLOUR_LIST[2]
    assert main_block.children[2].colour == COLOUR_LIST[3]
    assert main_block.children[3].colour == COLOUR_LIST[0]

    assert main_block.rotate(3)
    assert main_block.children[0].colour == COLOUR_LIST[0]
    assert main_block.children[1].colour == COLOUR_LIST[1]
    assert main_block.children[2].colour == COLOUR_LIST[2]
    assert main_block.children[3].colour == COLOUR_LIST[3]

    block = generate_board(1, 750)
    assert block.children[0].paint(BLACK)
    assert block.paint(BLACK) is False
    block.children[0].paint(COLOUR_LIST[0])
    block.children[1].paint(COLOUR_LIST[0])
    block.children[2].paint(COLOUR_LIST[0])
    assert block.combine()
    assert len(block.children) == 0
Exemple #8
0
def test_generate_move_random_player() -> None:
    b2 = generate_board(3, 750)
    P = RandomPlayer(2, PerimeterGoal(COLOUR_LIST[2]))
    P._proceed = True
    assert P.generate_move(b2)[0] in ['swap', 'rotate',
                                      'paint', 'combine', 'smash']
Exemple #9
0
def test_create_copy() -> None:
    b2 = generate_board(3, 750)
    copy = b2.create_copy()
    assert b2 == copy
    # Deep copy
    assert id(b2) != id(copy)
Exemple #10
0
def unit_board4X4():
    board = generate_board(0, 4)
    return board
Exemple #11
0
def unit_board_8X8():
    board = generate_board(1, 8)
    return board
Exemple #12
0
def unit_board_16X16():
    board = generate_board(2, 16)
    return board
Exemple #13
0
def game_board2():
    random.seed(1)
    board = generate_board(5, BOARD_SIZE)
    return board
Exemple #14
0
def game_board():
    random.seed(1001)
    board = generate_board(3, BOARD_SIZE)
    return board
Exemple #15
0
def block_lowest():
    unit = generate_board(0, 1)
    return unit