コード例 #1
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At__SuccessiveExposions(score, max_score):
    """Function drop_disk_at: Successive explosions."""
    max_score.value += 40
    try:
        set_up()
        board = Board.init_board \
            (dimension=6, given_disks= \
                ((wrapped_disk_value_3,),
                 (wrapped_disk_value_5, cracked_disk_value_4, cracked_disk_value_1, wrapped_disk_value_4),
                 (cracked_disk_value_4_B, cracked_disk_value_3),
                 (cracked_disk_value_4_C, visible_disk_value_5, visible_disk_value_3, cracked_disk_value_5),
                 (),
                 (wrapped_disk_value_3_B, visible_disk_value_3_B)))
        disk_to_drop = Disk.init_disk(Disk.VISIBLE, 4)
        assert Drop7.drop_disk_at(board, disk_to_drop,
                                  4) == 2 + 4 * 4 + 2 * 8 + 1 * 16
        assert not Board.has_disk_at(board, (4, 2))
        assert Board.get_disk_at(board, (4, 1)) is cracked_disk_value_5
        assert Disk.get_state(cracked_disk_value_5) == Disk.VISIBLE
        assert not Board.has_disk_at(board, (3, 1))
        assert not Board.has_disk_at(board, (2, 3))
        assert Board.get_disk_at(board, (2, 2)) is wrapped_disk_value_4
        assert Disk.get_state(wrapped_disk_value_4) == Disk.CRACKED
        assert Board.get_disk_at(board, (2, 1)) is wrapped_disk_value_5
        assert Disk.get_state(wrapped_disk_value_5) == Disk.VISIBLE
        score.value += 40
    except:
        pass
コード例 #2
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At__SeveralExplodingDisks_DifferentColumns_NotCausingOtherExplosions(
        score, max_score):
    """Function drop_disk_at: several exploding disks in different columns not causing other explosions."""
    max_score.value += 10
    try:
        set_up()
        board = Board.init_board \
            (dimension=6, given_disks= \
                ((wrapped_disk_value_3,),
                 (wrapped_disk_value_5, wrapped_disk_value_4, visible_disk_value_3, wrapped_disk_value_4_B),
                 (visible_disk_value_3_B, wrapped_disk_value_1),
                 (visible_disk_value_2, visible_disk_value_5, visible_disk_value_3_C, cracked_disk_value_5),
                 (),
                 (wrapped_disk_value_3_B, visible_disk_value_3_D)))
        disk_to_drop = Disk.init_disk(Disk.VISIBLE, 3)
        assert Drop7.drop_disk_at(board, disk_to_drop, 3) == 8
        assert not Board.has_disk_at(board, (3, 3))
        assert not Board.has_disk_at(board, (3, 2))
        assert Board.get_disk_at(board, (3, 1)) is wrapped_disk_value_1
        assert Disk.get_state(wrapped_disk_value_1) == Disk.CRACKED
        assert not Board.has_disk_at(board, (4, 4))
        assert Board.get_disk_at(board, (4, 3)) is cracked_disk_value_5
        assert Disk.get_state(cracked_disk_value_5) == Disk.VISIBLE
        assert Board.get_disk_at(board, (4, 2)) is visible_disk_value_5
        assert not Board.has_disk_at(board, (2, 4))
        assert Board.get_disk_at(board, (2, 3)) is wrapped_disk_value_4_B
        assert Disk.get_state(wrapped_disk_value_4_B) == Disk.CRACKED
        assert Board.get_disk_at(board, (2, 2)) is wrapped_disk_value_4
        assert Disk.get_state(wrapped_disk_value_4) == Disk.CRACKED
        score.value += 10
    except:
        pass
コード例 #3
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At__SeveralExplodingDisks_WrappedDiskAdjacentSeveralExplodingDisks(
        score, max_score):
    """Function drop_disk_at: Wrapped disk adjacent to several exploding disks."""
    max_score.value += 10
    try:
        set_up()
        board = Board.init_board \
            (dimension=6, given_disks= \
                ((wrapped_disk_value_3,),
                 (wrapped_disk_value_5, wrapped_disk_value_4, cracked_disk_value_1, wrapped_disk_value_4_B),
                 (wrapped_disk_value_3_B, cracked_disk_value_2),
                 (visible_disk_value_2, visible_disk_value_5, visible_disk_value_3, cracked_disk_value_5),
                 (),
                 (wrapped_disk_value_3_C, visible_disk_value_3_B)))
        disk_to_drop = Disk.init_disk(Disk.VISIBLE, 3)
        assert Drop7.drop_disk_at(board, disk_to_drop, 3) == 12
        assert not Board.has_disk_at(board, (4, 4))
        assert Board.get_disk_at(board, (4, 3)) is cracked_disk_value_5
        assert Disk.get_state(cracked_disk_value_5) == Disk.VISIBLE
        assert Board.get_disk_at(board, (4, 2)) is visible_disk_value_5
        assert not Board.has_disk_at(board, (3, 3))
        assert not Board.has_disk_at(board, (3, 2))
        assert Board.get_disk_at(board, (3, 1)) is wrapped_disk_value_3_B
        assert Disk.get_state(wrapped_disk_value_3_B) == Disk.CRACKED
        assert not Board.has_disk_at(board, (2, 4))
        assert Board.get_disk_at(board, (2, 3)) is wrapped_disk_value_4_B
        assert Disk.get_state(wrapped_disk_value_4_B) == Disk.CRACKED
        assert Board.get_disk_at(board, (2, 2)) is wrapped_disk_value_4
        assert Disk.get_state(wrapped_disk_value_4) == Disk.CRACKED
        score.value += 10
    except:
        pass
コード例 #4
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At__OtherDiskExploding_SomeDisksBecomingVisible_CausingAnotherExplosion(
        score, max_score):
    """Function drop_disk_at: disk exploding, some cracked disks becoming visible causing a single additional explosion."""
    max_score.value += 10
    try:
        set_up()
        board = Board.init_board \
            (dimension=6, given_disks= \
                ((wrapped_disk_value_3,),
                 (wrapped_disk_value_3_B, wrapped_disk_value_4),
                 (wrapped_disk_value_5, visible_disk_value_4, cracked_disk_value_2),
                 (visible_disk_value_1, cracked_disk_value_1, visible_disk_value_5,
                  cracked_disk_value_3,),
                 (),
                 (wrapped_disk_value_3_C, visible_disk_value_3)))
        disk_to_drop = Disk.init_disk(Disk.WRAPPED, 3)
        assert Drop7.drop_disk_at(board, disk_to_drop, 4) == 6
        assert not Board.has_disk_at(board, (4, 5))
        assert Board.get_disk_at(board, (4, 2)) is cracked_disk_value_1
        assert Disk.get_state(cracked_disk_value_1) == Disk.VISIBLE
        assert Board.get_disk_at(board, (4, 3)) == cracked_disk_value_3
        assert Disk.get_state(cracked_disk_value_3) == Disk.VISIBLE
        assert Board.get_disk_at(board, (4, 4)) == disk_to_drop
        assert not Board.has_disk_at(board, (3, 3))
        score.value += 10
    except:
        pass
コード例 #5
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At__SeveralExplodingDisks_SameColumn(score, max_score):
    """Function drop_disk_at: several exploding disks in the same column."""
    max_score.value += 10
    try:
        set_up()
        board = Board.init_board \
            (dimension=6, given_disks= \
                ((wrapped_disk_value_3,),
                 (wrapped_disk_value_3_B, wrapped_disk_value_4),
                 (wrapped_disk_value_5, visible_disk_value_4, cracked_disk_value_4),
                 (visible_disk_value_5, cracked_disk_value_3, visible_disk_value_5_B, cracked_disk_value_3_B),
                 (),
                 (wrapped_disk_value_3_C, visible_disk_value_3)))
        disk_to_drop = Disk.init_disk(Disk.WRAPPED, 3)
        assert Drop7.drop_disk_at(board, disk_to_drop, 4) == 12
        assert not Board.has_disk_at(board, (4, 5))
        assert not Board.has_disk_at(board, (4, 4))
        assert not Board.has_disk_at(board, (4, 3))
        assert not Board.has_disk_at(board, (4, 2))
        assert Board.get_disk_at(board, (4, 1)) is disk_to_drop
        assert Disk.get_state(disk_to_drop) == Disk.CRACKED
        assert Board.get_disk_at(board, (3, 3)) is cracked_disk_value_4
        assert Disk.get_state(cracked_disk_value_4) == Disk.VISIBLE
        assert Board.get_disk_at(board, (3, 2)) is visible_disk_value_4
        assert Board.get_disk_at(board, (3, 1)) is wrapped_disk_value_5
        assert Disk.get_state(wrapped_disk_value_5) == Disk.VISIBLE
        score.value += 10
    except:
        pass
コード例 #6
0
def add_disk(draw_context, game_state, column):
    gs = game_state
    board = gs["board"]

    if not Board.can_accept_disk(board):
        messagebox.showerror("Finished",
                             "Board can no longer accept this disk!")
    elif not Board.is_playable_board(board):
        messagebox.showerror("Finished", "Board is not playable!")
    elif Board.is_full_column(board, column):
        messagebox.showerror("Finished", "Column is full.")
    else:
        disk_to_drop = gs["next_disk"]
        gs["score"] += Drop7.drop_disk_at(board, disk_to_drop, column)
        gs["current_nb_turns"] += 1

        if gs["current_nb_turns"] == gs["turns_per_level"]:
            gs["score"] += 1000 // gs["turns_per_level"]
            Board.inject_bottom_row_wrapped_disks(board)
            gs["current_nb_turns"] = 0
            gs["turns_per_level"] = max(gs["turns_per_level"] - 1, 10)

        gs["next_disk"] = Disk.get_random_disk(Board.dimension(board),
                                               {Disk.VISIBLE, Disk.WRAPPED})
        draw_game_state(draw_context, game_state)
コード例 #7
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At__NoExplosions(score, max_score):
    """Function drop_disk_at: no explosions, no cracking disks."""
    max_score.value += 5
    try:
        set_up()
        disk_to_drop = Disk.init_disk(Disk.WRAPPED, 4)
        assert Drop7.drop_disk_at(test_board_6, disk_to_drop, 2) == 0
        assert Board.get_disk_at(test_board_6, (2, 3)) is disk_to_drop
        assert Board.get_disk_at(test_board_6, (2, 2)) is visible_disk_value_4
        assert Board.get_disk_at(test_board_6, (3, 3)) is visible_disk_value_1
        score.value += 5
    except:
        pass
コード例 #8
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At__ExplodingDisk_NoCrackingDisksBecomingVisible(
        score, max_score):
    """Function drop_disk_at: dropped disk exploding, no cracked disks becoming visible."""
    max_score.value += 5
    try:
        set_up()
        disk_to_drop = Disk.init_disk(Disk.VISIBLE, 6)
        assert Drop7.drop_disk_at(test_board_6, disk_to_drop, 5) == 2
        assert not Board.has_disk_at(test_board_6, (5, 1))
        assert Board.get_disk_at(test_board_6,
                                 (4, 1)) is visible_disk_value_1_B
        assert Board.get_disk_at(test_board_6,
                                 (6, 1)) is wrapped_disk_value_3_D
        assert Disk.get_state(wrapped_disk_value_3_D) == Disk.CRACKED
        score.value += 5
    except:
        pass
コード例 #9
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At_NoDisk(score, max_score):
    """Function drop_disk_at: No disk."""
    max_score.value += 20
    try:
        set_up()
        the_board = Board.init_board(
            dimension=6,
            given_disks=((wrapped_disk_value_1, ), (cracked_disk_value_2,
                                                    cracked_disk_value_2_B),
                         (visible_disk_value_4, ), (visible_disk_value_4_B, ),
                         (cracked_disk_value_5, visible_disk_value_2)))
        assert Drop7.drop_disk_at(
            the_board) == 1 * 2 + 1 * 4 + 2 * 8 + 1 * 16 + 1 * 32 + 1 * 64
        for col in range(1, 5):
            assert not Board.has_disk_at(the_board, (col, 1))
        score.value += 20
    except:
        pass
コード例 #10
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At__OtherDiskExploding_NoCrackedDisksBecomingVisible(
        score, max_score):
    """Function drop_disk_at: other disk exploding, no cracked disks becoming visible."""
    max_score.value += 10
    try:
        set_up()
        Board.set_disk_at(test_board_6, (4, 2), wrapped_disk_value_1)
        disk_to_drop = Disk.init_disk(Disk.WRAPPED, 6)
        assert Drop7.drop_disk_at(test_board_6, disk_to_drop, 3) == 2
        assert not Board.has_disk_at(test_board_6, (3, 4))
        assert Board.get_disk_at(test_board_6, (3, 1)) is visible_disk_value_5
        assert Board.get_disk_at(test_board_6, (3, 2)) is visible_disk_value_1
        assert Board.get_disk_at(test_board_6, (3, 3)) == disk_to_drop
        assert Board.get_disk_at(test_board_6, (2, 2)) == visible_disk_value_4
        assert Board.get_disk_at(test_board_6, (4, 2)) is wrapped_disk_value_1
        assert Disk.get_state(wrapped_disk_value_1) == Disk.CRACKED
        score.value += 10
    except:
        pass
コード例 #11
0
ファイル: Drop7_Test.py プロジェクト: JeffSomers/DropSeven
def test_Drop_Disk_At__OtherDiskExploding_SomeDisksBecomingVisible_NotCausingExplosions(
        score, max_score):
    """Function drop_disk_at: other disk exploding, some cracked disks becoming visible without causing other explosions."""
    max_score.value += 10
    try:
        set_up()
        disk_to_drop = Disk.init_disk(Disk.WRAPPED, 3)
        assert Drop7.drop_disk_at(test_board_6, disk_to_drop, 4) == 2
        assert not Board.has_disk_at(test_board_6, (4, 6))
        assert Board.get_disk_at(test_board_6, (4, 2)) is cracked_disk_value_1
        assert Disk.get_state(cracked_disk_value_1) == Disk.VISIBLE
        assert Board.get_disk_at(test_board_6,
                                 (4, 3)) is wrapped_disk_value_3_C
        assert Disk.get_state(wrapped_disk_value_3_C) == Disk.CRACKED
        assert Board.get_disk_at(test_board_6,
                                 (4, 4)) is cracked_disk_value_1_B
        assert Board.get_disk_at(test_board_6, (4, 5)) is disk_to_drop
        assert Board.get_disk_at(test_board_6, (3, 3)) == visible_disk_value_1
        score.value += 10
    except:
        pass