1
-- | 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 图像替换我使用的表示(来自光泽的圆圈),但是当我尝试加载这面墙时,我什至无法加载一个原因,它在最后一行出现错误我在这里分享:不在“墙”范围内

有人能明白为什么会这样吗?

4

1 回答 1

2

当您定义 时main,您在其中创建的变量无法在 的定义之外访问maininitialState在 的定义之外main

您需要通过更改来传递wallinitialState如下main所示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)
于 2016-12-30T06:07:31.633 回答