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
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
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
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
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
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)
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
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
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
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
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