def test_two_shots(self): """Test wykonujący po dwa strzały każdym kolorem monety Powinny zostać wrzucone i spać na dół pola gry, lub zatrzymać się na już wrzuconej monecie""" compare_table = [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 1, -1, 0, 0, 0, 0], [0, 1, -1, 0, 0, 1, 0]] first_player = human_player.HumanPlayer(self.board, self.levels, Basic.PLAYER_ONE) second_player = human_player.HumanPlayer(self.board, self.levels, Basic.PLAYER_TWO) game_functions = gm.GameMechanics(None, None, None, self.board, self.levels, [first_player, second_player]) game_functions.hit(1) game_functions.hit(2) game_functions.hit(1) game_functions.hit(2) game_functions.hit(5) self.assertEqual(self.board, compare_table)
def test_oblique_line(self): """Test ułożenia linii skośnej W przypadku ułożenia linii skośnej, funkcja powinna dać znak o wygranej jednego gracza, zwracając True""" self.board[2][2] = 1 self.board[3][3] = 1 self.board[4][4] = 1 self.board[5][5] = 1 game_functions = gm.GameMechanics(None, None, None, self.board, None, None) self.assertTrue(players_utils.check(self.board, 0, 0, 1))
def test_horizontal_line(self): """Test ułożenia linii poziomej W przypadku ułożenia linii poziomej, funkcja powinna dać znak o wygranej jednego gracza, zwracając True""" self.board[0][1] = 1 self.board[0][2] = 1 self.board[0][3] = 1 self.board[0][4] = 1 game_functions = gm.GameMechanics(None, None, None, self.board, None, None) self.assertTrue(players_utils.check(self.board, 0, 0, 1))
def test_vertical_line(self): """Test ułożenia linii pionowej W przypadku ułożenia linii pionowej, funkcja powinna dać znak o wygranej jednego gracza, zwracając True""" self.board[1][0] = 1 self.board[2][0] = 1 self.board[3][0] = 1 self.board[4][0] = 1 # ważna jest tylko plansza game_functions = gm.GameMechanics(None, None, None, self.board, None, None) self.assertTrue(players_utils.check(self.board, 0, 0, 1))
def __reset_game(self): """Metoda odpowiedzialna za resetowanie stanu gry. Resetuje ona ustawienia gry oraz planszy, dzięki czemu zamykanie okna nie jest wymagane.""" old_second_player = self.__game.players_array[1].type_of_player del self.__game print("zresetowano grę....") print() board, levels = players_utils.start_data() first_player = players.human_player.HumanPlayer(board, levels, Basic.PLAYER_ONE) if old_second_player == Basic.COMPUTER: difficulties = ["Losowy", "Łatwy", "Też łatwy", "Średni", "Trudny", "Bardzo trudny", "Uber"] index = difficulties.index(self.__s_difficulty.get()) new_second_player = players.computer_player.ComputerPlayer(board, levels, Basic.PLAYER_TWO, index) else: new_second_player = players.human_player.HumanPlayer(board, levels, Basic.PLAYER_TWO) players_array = [first_player, new_second_player] self.__game = game_mechanics.GameMechanics(self.__window_height, self.__window_width, self.end_game, board, levels, players_array, self.__canvas, self.__stat) print("władowano dane gry...") # funkcje geometrii self.__rbt_computer["state"] = tk.ACTIVE self.__rbt_player["state"] = tk.ACTIVE self.__s_difficulty["state"] = "readonly" if new_second_player: self.__rbt_computer.select() else: self.__rbt_player.select() # ustawienie początkowego komunikatu self.__game.set_stat("Zaczyna gracz numer 1") print("władowano geometrie...") print("przeładowano okno gry...") self.__game.draw()
def test_longer_line(self): """Test ułożenia linii dłuższej niż 4 W przypadku gdy linia jest dłuższa niż 4, wynik również powinien być pozytywny, czyli True""" self.board[0][0] = 1 self.board[0][1] = 1 self.board[0][2] = 1 self.board[0][3] = 1 self.board[0][4] = 1 self.board[0][5] = 1 game_functions = gm.GameMechanics(None, None, None, self.board, None, None) self.assertTrue(players_utils.check(self.board, 0, 0, 1))
def __init__(self, window): """Konstruktor budujący okno gry. Buduje okno o odpowiednim rozmiarze oraz tworzący zmienne i tablice przechowujące podstawowe dane o grze.""" screen_height = window.winfo_screenheight() # rozdzielczość ekranu screen_width = window.winfo_screenwidth() self.__window = window self.__window_height = int(screen_height * WINDOW_SCALE_H) self.__window_width = int(screen_width * WINDOW_SCALE_W) self.__window.geometry("{}x{}+{}+{}".format( int(self.__window_width), int(self.__window_height), int(self.__window_width * 0.3), int(self.__window_height * 0.08))) # rozmiar okna i pozycja po uruchomeniu self.__ai_player = True self.__stat = None self.__canvas = None self.__rbt_computer = None self.__rbt_player = None self.__s_difficulty = None self.load_geometry() board, levels = players_utils.start_data() difficulty = 0 first_player = players.human_player.HumanPlayer(board, levels, Basic.PLAYER_ONE) second_player = players.computer_player.ComputerPlayer(board, levels, Basic.PLAYER_TWO, difficulty) players_array = [first_player, second_player] self.__game = game_mechanics.GameMechanics(self.__window_height, self.__window_width, self.end_game, board, levels, players_array, self.__canvas, self.__stat)