def main(): # Подключение класса настроек sett = Settings() # Подключение класса статистики stats = GameStats() # Инициализация pygame, настройка экрана pygame.init() screen = pygame.display.set_mode((sett.W, sett.H)) pygame.display.set_caption('Arkanoid') # Создание группы кирпичей bricks = Group() gf.create_bricks(screen, sett, bricks) # Подключение класса доски board = Board(screen, sett) # Подключение класса мячика ball = Ball(screen, sett, board) # Создание кнопки Play play_butt = Button(sett, screen, 'Play') # Подключение класса фонового изображения bg = BG(screen) while True: # Обработка событий gf.check_events(sett, board, stats, play_butt, screen, bricks) # Обновлений позиций доски board.update() # Обновление позиций мячика ball.update() # Проверка коллизий с обьектами gf.check_colision(sett, board, ball, bricks, stats) # Проверка конца игы gf.check_end_game(screen, sett, bricks, ball, stats) # Обновление экрана gf.update_screen(sett, screen, board, ball, bricks, play_butt, stats, bg)
def saved_launch_game(players_number, display): g = game() g.deal_cards(players_number) data_game = [deepcopy(g)] first_player = randrange(players_number) current_player = first_player end_game = False no_draw_pile_counter = 0 if display: turn_number = 0 print(g) print("turn number :", turn_number) print("first player :", first_player) print("__________________________________________________________") while not (end_game): turn_player(g, g.players[current_player]) data_game += [deepcopy(g)] if display: turn_number += 1 if turn_number < 100: print(g) print("") print("turn_number :", turn_number) print("current player :", current_player) print( "__________________________________________________________" ) end_game, no_draw_pile_counter = check_end_game( g, no_draw_pile_counter) current_player = (current_player + 1) % players_number # Results display if g.error_tokens == 0: lost = True if display: print("game lost") else: lost = False return data_game, first_player, sum(g.fireworks.values()), lost
def launch_game(players_number, display): # use a constant seed for the tests #seed(123) g = game() g.deal_cards(players_number) first_player = randrange(players_number) current_player = first_player end_game = False no_draw_pile_counter = 0 if display: turn_number = 0 print(g) print("turn number :", turn_number) print("first player :", first_player) print("__________________________________________________________") while not (end_game): turn_player(g, g.players[current_player]) if display: turn_number += 1 if turn_number < 100: print(g) print("") print("turn_number :", turn_number) print("current player :", current_player) print( "__________________________________________________________" ) end_game, no_draw_pile_counter = check_end_game( g, no_draw_pile_counter) current_player = (current_player + 1) % players_number # Results display if g.error_tokens == 0: lost = True if display: print("game lost") else: lost = False return g, sum(g.fireworks.values()), lost, g.error_tokens
def launch_game_genetic(g, display): first_player = randrange(len(g.players)) current_player = first_player end_game = False no_draw_pile_counter = 0 if display: turn_number = 0 print(g) print("turn number :", turn_number) print("first player :", first_player) print("__________________________________________________________") while not (end_game): turn_player_genetic(g, g.players[current_player]) if display: turn_number += 1 if turn_number < 100: print(g) print("") print("turn_number :", turn_number) print("current player :", current_player) print( "__________________________________________________________" ) end_game, no_draw_pile_counter = check_end_game( g, no_draw_pile_counter) current_player = (current_player + 1) % len(g.players) # Results display if g.error_tokens == 0: lost = True if display: print("game lost") else: lost = False return g, sum(g.fireworks.values()), lost
def launch_game_nn(players_number, display, model): # use a constant seed for the tests #seed(123) g = game() g.deal_cards(players_number) first_player = randrange(players_number) current_player = first_player ## create the game state dataframe colors_list = ['blue', 'red', 'green', 'yellow', 'white'] values_list = [1, 2, 3, 4, 5] cards_in_deck_indexes = [0, 1, 2, 3] next_players_indexes = range(1, players_number) # general game information game_state = pd.DataFrame(columns=[ 'info_tokens', 'error_tokens', 'blue_firework', 'red_firework', 'green_firework', 'yellow_firework', 'white_firework' ]) # discard pile composition for color in colors_list: for value in values_list: game_state[str(value) + " " + color + " in the discard pile"] = None # player deck for card in cards_in_deck_indexes: for color in colors_list: game_state["info : card " + str(card) + " is " + color] = None for value in values_list: game_state["info : card " + str(card) + " is " + str(value)] = None # next players' decks for player in next_players_indexes: for card in cards_in_deck_indexes: for color in colors_list: game_state["player " + str(player) + " turn(s) after : card " + str(card) + " is " + color] = None for value in values_list: game_state["player " + str(player) + " turn(s) after : card " + str(card) + " is " + str(value)] = None # next players' deck information for player in next_players_indexes: for card in cards_in_deck_indexes: for color in colors_list: game_state["player " + str(player) + " turn(s) after : info : card " + str(card) + " is " + color] = None for value in values_list: game_state["player " + str(player) + " turn(s) after : info : card " + str(card) + " is " + str(value)] = None # choices for card in cards_in_deck_indexes: game_state["play card " + str(card)] = None game_state["discard card " + str(card)] = None for player in next_players_indexes: for color in colors_list: game_state["say to player " + str(player) + " the " + color] = None for value in values_list: game_state["say to player " + str(player) + " the " + str(value)] = None game_state.loc[0] = 0 end_game = False no_draw_pile_counter = 0 if display: turn_number = 0 print(g) print("turn number :", turn_number) print("first player :", first_player) print("__________________________________________________________") # the game starts from here while not (end_game): neural_network_predictions(g, g.players[current_player], players_number, game_state, model) if display: turn_number += 1 if turn_number < 100: print(g) print("") print("turn_number :", turn_number) print("current player :", current_player) print( "__________________________________________________________" ) end_game, no_draw_pile_counter = check_end_game( g, no_draw_pile_counter) current_player = (current_player + 1) % players_number # Results display if g.error_tokens == 0: lost = True if display: print("game lost") else: lost = False return g, sum(g.fireworks.values()), lost
def add_data_with_one_game(data, players_number, index): g = game() g.deal_cards(players_number) first_player = randrange(players_number) current_player = first_player end_game = False no_draw_pile_counter = 0 starting_index = index turn_type = 'first' # # display # turn_number = 0 # print(g) # print("") # print("turn_number :", turn_number) # print("first player :", first_player) # print("__________________________________________________________") while not (end_game): data = turn_player_data_neural_network(g, players_number, g.players[current_player], data, turn_type, index) turn_type = 'regular' index += 1 # turn_number += 1 # if turn_number < 17: # print(g) # print("") # print("turn_number :", turn_number) # print("current player :", current_player) # print("next player :", (current_player + 1) % players_number) # print("__________________________________________________________") end_game, no_draw_pile_counter = check_end_game( g, no_draw_pile_counter) current_player = (current_player + 1) % players_number # update the game results data.loc[starting_index:index - 1, 'final_score'] = sum(g.fireworks.values()) data.loc[starting_index:index - 1, 'game_lost'] = int(g.error_tokens == 0) # update the "turn+5" features for i in range(index - players_number): data.loc[i, 'score_evolution_turn+5'] = sum( data.loc[i:i + 4, 'score_evolution_turn+1']) data.loc[i, 'errors_turn+5'] = sum(data.loc[i:i + 4, 'error']) for i in range(index - players_number, index): data.loc[i, 'score_evolution_turn+5'] = sum( data.loc[i:index - 1, 'score_evolution_turn+1']) data.loc[i, 'errors_turn+5'] = sum(data.loc[i:index - 1, 'error']) # clear the last row, that is altered by this game but is actually for the next game data.loc[index] = 0 return data, index