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