module Game.HSnake.AI where import Control.Lens import Game.HSnake.Basic import Game.HSnake.Game import Game.HSnake.Player import Game.HSnake.Snake computeAIPlayerMove :: Player -> GameState -> Direction computeAIPlayerMove pl gameState = circleAIPlayer pl circleAIPlayer :: Player -> Direction circleAIPlayer pl -- corner cases | headPos^.x == 1 && dir == West && headPos^.y <= 2 = South | headPos^.x == 1 && dir == West && headPos^.y > 2 = North | headPos^.x == (numRectsX - 1) && dir == East && headPos^.y <= 2 = South | headPos^.x == (numRectsX - 1) && dir == East && headPos^.y > 2 = North | headPos^.y == 1 && dir == North && headPos^.x >= 2 = West | headPos^.y == 1 && dir == North && headPos^.x < 2 = East | headPos^.y == (numRectsY - 1) && dir == South && headPos^.x >= 2 = West | headPos^.y == (numRectsY - 1) && dir == South && headPos^.x < 2 = East -- normal operation | headPos^.y <= 2 = South | headPos^.y >= (numRectsX - 2) = North | headPos^.y <= 2 = West | headPos^.y >= (numRectsY - 2) = East | otherwise = pl^.snake^.direction where headPos = head $ pl^.snake^.position dir = pl^.snake^.direction