def generateTrainingData(self,
                             size=LearningConfigs.SAMPLE_SIZE,
                             aim=LearningConfigs.AIM_SCORE):
        print("Begin generating training data...")

        data = []
        dataSize = 0

        while dataSize < size:
            game = Game()
            cache = []
            score = 0

            while True:
                movement = random.randint(-1, 1)
                observer, reward, length, lose = game.moveByRelativeDirection(
                    movement)
                if not lose:
                    cache.append([observer, self.__oneHotMove(movement)])
                    score += reward
                else:
                    break

            if (score >= aim):
                data.append([cache, score])
                dataSize += 1
                print("Training data({:d}/{:d}): Score = {:d}".format(
                    len(data), size, score))

        print("Training data ready!")
        return data
Exemplo n.º 2
0
def test(nn):
    game = Game()

    dirc = 0
    while True:
        observe, reward, length, lose = game.moveByRelativeDirection(dirc)
        print("[Ding]: dirc = {:d}, len = {:d}".format(dirc, length))
        print(observe)
        if not lose:
            dirc = nn.predict(observe)
        else:
            return length
Exemplo n.º 3
0
game = Game(screen)

while True:
    event = None
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                direction = 0
            elif event.key == pygame.K_RIGHT:
                direction = 1
            elif event.key == pygame.K_DOWN:
                direction = 2
            elif event.key == pygame.K_LEFT:
                direction = 3
            else:
                continue

            observe, reward, len, lose = game.moveByAbsoluteDirection(
                direction)
            if lose:
                sys.exit()

    if event is None:
        observe, reward, len, lose = game.moveByRelativeDirection(0)
        if lose:
            sys.exit()

    pygame.display.update()
    pygame.time.Clock().tick(configs.GAME_FPS)