Я делаю 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.