【问题标题】:Give more "information" to the simulate function (Haskell / Gloss Library)为模拟函数提供更多“信息”(Haskell / Gloss Library)
【发布时间】:2017-01-08 11:49:54
【问题描述】:

在程序开始时,用户可以给模拟一些“信息”:

    main:: IO()
        main = do
        putStrLn("Hallo")
        val <- getLine
        startGUI(read val ::Float)

函数(startGUI):

startGUI :: Float -> IO ()
startGUI si  = simulate window background fps initialState render $ moveBall si

启动一个函数,这是模拟的某种循环。它基本上更新了游戏。

moveBall 函数定义如下:

moveBall :: Float -> Float -> PongGame -> PongGame
moveBall seconds go game = game { ballLoc = (x', y') }
...

我得到的错误信息是:

Couldn't match type ‘PongGame’ with ‘PongGame -> PongGame’
    Expected type: ViewPort -> Float -> PongGame -> PongGame
      Actual type: Float -> PongGame -> PongGame
    Possible cause: ‘moveBall’ is applied to too many arguments
    In the second argument of ‘($)’, namely ‘moveBall si’
    In the expression:
      simulate window background fps initialState render $ moveBall si

指的是startGUI函数。

提前致谢。

【问题讨论】:

    标签: haskell gloss


    【解决方案1】:

    传递启动信息的关键是通过 initalState 函数传递它们。

    startGUI :: Float -> IO ()
    startGUI si  = simulate window background fps (initialState si) render  update
    

    然后你只需要为游戏配置你的数据集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-07
      • 2023-03-08
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2022-12-27
      相关资源
      最近更新 更多