Как выйти из игры в функции playIO? - PullRequest
0 голосов
/ 06 ноября 2018

Я делаю Pacman в Haskell Gloss. Сейчас я пытаюсь выйти из игры, когда pacman съел все фишки на игровой доске. У меня есть функция, чтобы проверить, так ли это, но я не могу найти способ выйти из игры после этого.

Это потому, что у меня нет функции, которая возвращает IO a (потому что exitWith выводит это).

Вот код моего Main.hs:

window :: Display
window = FullScreen

background :: Color
background = black

fps :: Int
fps = 5

main :: IO ()
main = playIO (InWindow "Pacman" (600, 600) (0, 0)) -- Or FullScreen
          background            -- Background color
          fps               -- Frames per second
          initialState     -- Initial state
          view             -- View function
          input            -- Event function
          step             -- Step function from controller

Функция playIO имеет следующую сигнатуру типа:

playIO :: Display -> 
          Color -> 
          Int -> 
          world -> 
          (world -> IO Picture) ->
          (Event -> world -> IO world) -> 
          (Float -> world -> IO world) -> 
          IO ()

Возможно, я что-то упускаю, но я хотел бы выйти из цикла функции playIO, когда победитель окажется. Следующая функция может быть полезна:

exitWith :: ExitCode -> IO a

Любой совет очень важен, я все еще новичок в Haskell / Gloss.

...