packages feed

starter-snake-haskell-1.0.0: app/Main.hs

module Main where

import Battlesnake.API.GameRequest
import qualified Battlesnake.API.InfoResponse as Info
import Battlesnake.API.MoveResponse
import Battlesnake.Core.Direction
import Battlesnake.Server

main :: IO ()
main =
  runBattlesnakeServer
    snakeInfo
    startHandler
    moveHandler
    endHandler

snakeInfo :: Info.InfoResponse
snakeInfo =
  Info.InfoResponse
    { Info.apiversion = "1",
      -- Optional Customization:
      Info.author = Nothing, -- TODO: Your Battlsnake username here
      Info.color = Nothing, -- TODO: pesonalize
      Info.head = Nothing, -- TODO: pesonalize
      Info.tail = Nothing, -- TODO: pesonalize
      Info.version = Nothing -- TODO: Version number or tag for your battlesnake
    }

-- TODO:
-- implement start handler if you need to allocate ressources or data at the
-- beginning of a game
startHandler :: GameRequest -> IO ()
startHandler = const $ return ()

-- TODO:
-- implement your game logic here.
moveHandler :: GameRequest -> IO MoveResponse
moveHandler g = do
  print g
  return $ MoveResponse UP (Just "always going up!")

-- TODO:
-- implement end handler if you want to clean up after a game has ended
endHandler :: GameRequest -> IO ()
endHandler = const $ return ()