Exemple #1
0
def playAI(numGames, numSteps, model):
    sum = 0
    highScore = 0
    i = 1
    for _ in range(numGames):
        game = SnakeGame()
        for _ in range(numSteps):
            angle, appleDV_Normalized, snakeDV_Normalized = angleSnakeApple(
                game.snake.positions, game.apple.position)
            currentDV, isFrontBlocked, isLeftBlocked, isRightBlocked = blockedDirectionsTrain(
                game.snake.positions, game.apple.position)
            X = [
                isLeftBlocked, isFrontBlocked, isRightBlocked,
                appleDV_Normalized[0], snakeDV_Normalized[0],
                appleDV_Normalized[1], snakeDV_Normalized[1]
            ]
            # X = [isLeftBlocked, isFrontBlocked, isRightBlocked, angle]
            X = np.array(X).reshape(-1, len(X))
            predicted_direction = np.argmax(np.array(model.predict(X))) - 1
            # print(predicted_direction)
            updated_direction, button_direction = directionVector(
                game.snake.positions, angle, predicted_direction)

            if isBlocked(game.snake.positions, currentDV) == 1:
                # print(X)
                # print(predicted_direction)
                break

            _, _, _ = game.run_game(buttonDirection=button_direction)
        print("GAME " + str(i) + " SCORE = " + str(game.score))
        sum += game.score
        i += 1
        if (game.score > highScore): highScore = game.score
    return sum // numGames, highScore