В цикле Pygame отображается только последний кадр / ход - PullRequest
3 голосов
/ 14 апреля 2019

Я ссылаюсь на учебник для игры со змеями, использующей Tensorflow и Pygame.

Ссылка: https://github.com/tolotrasam/snakegame_ai_tensorflow/tree/master/dist

Для методов «некоторые случайные игры сначала» и «оценивать» я хочу отобразить всю игру, а не только финальный кадр. Например: в коде player.py метод «Некоторые случайные игры сначала» отображает только кадр последнего шага. Я хочу визуализировать каждый кадр каждой сыгранной игры. Как это будет сделано?

Кроме того, как бы я использовал этот код для отображения «обученной» модели, такой как сохраненные данные в сгенерированном файле save.py?

Любая помощь будет оценена.

Ссылочный код:

LR = 1e-3
goal_steps = 300
score_requirement = 50
initial_games = 5000

def some_random_games_first():
    # Each of these is its own game.
    for episode in range(10):

        env = game()
        env.reset()
        first = True
        for _ in range(goal_steps):

            # action = random.randrange(0, 3)
            action = random.randrange(0, 3)
            # action = 2

            if first:
                first = False
                action = 2

            # do it! render the previous view
            env.render()
            observation, reward, done, info = env.step(action)
            a = 0
            if done: break

Игра Snake можно найти по ссылке GitHub, не хочу вставлять весь этот код.

Метод визуализации:


def render(self):
        # score
        d = self.screen.blit(self.bg, SCORE_POS, pygame.Rect(SCORE_POS, (50, 100)))
        f = pygame.font.Font(None, 12)
        scoreimage = f.render(SCORE_PREFIX + str(self.currentscore), True, SCORE_COLOR)
        d2 = self.screen.blit(scoreimage, SCORE_POS)

        # drawing
        dirty = self.all.draw(self.screen)
        dirty.append(d)
        dirty.append(d2)

        # updating screen
        pygame.display.update(dirty)

        # waiting
        self.clock.tick(FPS)

...