コード例 #1
0
ファイル: main.py プロジェクト: kiri11-mi1/Arkanoid
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)
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
0
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