Windows中Haskell控制台游戏的简单游戏循环

时间:2014-04-02 19:08:49

标签: haskell

我想在控制台中制作蛇并将其写入Haskell。

我应该如何定期刷新显示器(通过清除它或只是推入新的东西)?我不需要固定的帧率或任何花哨的东西。只是一个简单的循环,每隔x毫秒执行一些代码。

其次,如何在不阻止输入的情况下从控制台正确获取输入,并且不需要我按Enter键。

我已经阅读了几个解决方案,但它们似乎都无法在Windows上正常工作。我做的是Haskeline,我试图用这个代码

main = 
    runInputT defaultSettings loop
    where
        loop :: InputT IO ()
        loop = do
            gotInput <- hReady stdin
            if gotInput
            then do
                input <- getInputChar ""
                case input of
                    Just chr -> outputStrLn [chr]
                    Nothing -> return ()
            else return ()

这里的问题是当我需要与Haskeline兼容的时候,hReady stdin会返回一个IO monad。请原谅这个术语,我对Monads很新,对Haskell来说也很新。

1 个答案:

答案 0 :(得分:3)

查找liftIO(来自Control.Monad.IO.Class)。然后输入:gotInput&lt; - liftIO $ hReady stdin