Windows中Haskell控制台游戏的简单游戏循环
我想在控制台中制作snake并用Haskell编写它 我应该如何定期刷新显示器(通过清除它或只是推送新内容)?我不需要固定的帧率或任何花哨的东西。只是一个简单的循环,每x毫秒执行一次代码 其次,我怎样才能正确地从控制台获取输入,而不阻塞它,也不需要我按enter键 我读过一些解决方案,但它们似乎都不能在windows上正常工作。有一个是Haskeline,我试着用它来编写代码Windows中Haskell控制台游戏的简单游戏循环,haskell,Haskell,我想在控制台中制作snake并用Haskell编写它 我应该如何定期刷新显示器(通过清除它或只是推送新内容)?我不需要固定的帧率或任何花哨的东西。只是一个简单的循环,每x毫秒执行一次代码 其次,我怎样才能正确地从控制台获取输入,而不阻塞它,也不需要我按enter键 我读过一些解决方案,但它们似乎都不能在windows上正常工作。有一个是Haskeline,我试着用它来编写代码 main = runInputT defaultSettings loop where
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 ()
main=
RunInputDefaultSettings循环
哪里
循环::输入IO()
循环=do
gotInput返回()
否则返回()
这里的问题是,当我需要一个与Haskeline兼容的IO monad时,hReady stdin会返回一个IO monad。恕我直言,我对Monad非常陌生,对Haskell也非常陌生。查找liftIO(来自Control.Monad.IO.Class)。然后输入:GotHey!这非常简单。它起作用了。周期循环部分呢?不再返回(),而是再次调用循环。这将建立循环。