NCurses不断更新moveCursor中的x和y坐标

问题描述 投票:2回答:1

我想用类似蛇的机制制作某种类型的游戏,你用箭头键来改变蛇的坐标。但由于变量的重新分配不是haskell中的事情,我不确定如何做到这一点。这是我的代码:

import Control.Monad
import UI.NCurses

main :: IO ()
main = runCurses $ do
    w <- defaultWindow
    forever $ do
        e <- getEvent w Nothing
        updateWindow w $ do
            moveCursor 0 0
            drawString (show e)
        render

我希望它打印按下的键(drawString (show e)),然后将光标更改为前一个x + 1,前一个y + 1,然后按下下一个键,然后更改光标,依此类推。

你是如何在NCurses做到这一点的?如果重新分配是可能的,那就简单了

loop forever:
moveCursor x y
print
x = x+1
y = y+1

但重新分配不起作用,所以我可以做什么呢?

haskell ncurses
1个回答
5
投票

诅咒,ncurse和recurse:

loop w x y = do
    e <- getEvent w Nothing
    updateWindow w $ do
        moveCursor x y
        drawString (show e)
    render
    loop w (x+1) (y+1)

main = runCurses $ do
    w <- defaultWindow
    loop w 0 0
© www.soinside.com 2019 - 2024. All rights reserved.