NCurses постоянно обновляет координаты x и y в moveCursor - PullRequest
2 голосов
/ 06 апреля 2019

Я хочу сделать какую-то игру со змееподобной механикой, в которой вы используете свои стрелки для изменения координаты вашей змеи.Но поскольку переназначение переменных не является чем-то особенным в 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

Но переназначение не работает, так что я могу вместо этого сделать?

1 Ответ

5 голосов
/ 06 апреля 2019

Проклятие, медсестра и рекурс:

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
...