【问题标题】:Haskell gloss loading .bmpHaskell 光泽加载 .bmp
【发布时间】:2017-05-14 10:22:20
【问题描述】:
-- | Main function
main :: IO ()
main = do 
          wall <- loadBMP "wall.bmp" -- loads wall image
          play initialState drawState reactEvent reactTime


-- | Function that creates the game
play :: State -> (State -> Picture) -> (Event -> State -> State) -> (Float -> State -> State) -> IO ()
play initialState drawState reactEvent reactTime = play
            (InWindow "Game" (900, 900) (0, 0))      -- Window ize
            (greyN 0.5)                              -- background coloer
            1                                        -- refresh rate
            initialState                             -- initial state
            drawState                                -- draws game state
            reactEvent                               -- teacts to evente
            reactTime                                -- reacts to time

-- | One game represenction
type State = (Map,Picture)

-- | Initial game state
initialState :: State
initialState = ((map 13 0),wall)

函数映射创建我的映射。 我的游戏已经运行良好,但我需要用一些 BMP 图像替换我使用的表示(来自光泽的圆圈),但是当我尝试加载这面墙时,我什至无法加载一个原因,它在最后一行出现错误我在这里分享: 不在“墙”范围内

有人知道为什么会这样吗?

【问题讨论】:

    标签: haskell gloss


    【解决方案1】:

    当您定义main 时,您在其中创建的变量无法在main 的定义之外访问。 initialState 不在main 的定义范围内。

    您需要通过更改 maininitialStatewall 传递到 initialState,如下所示:

    main :: IO ()
    main = do 
              wall <- loadBMP "wall.bmp" -- loads wall image
              play (initialState wall) drawState reactEvent reactTime
    

     

    initialState :: Picture -> State
    initialState wall = ((map 13 0),wall)
    

    【讨论】:

    • 谢谢你,我会试试这个并告诉它是怎么回事。
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2021-04-06
    • 2016-03-31
    • 2019-05-09
    相关资源
    最近更新 更多