首页 > 解决方案 > 如何在 playIO 功能中退出游戏?

问题描述

我正在用 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 的新手。

标签: haskellgloss

解决方案


推荐阅读