Haskell gloss loading.bmp ——|主要功能 main::IO() main=do 墙(状态->图片)->(事件->状态->状态)->(浮动->状态->状态)->IO() 播放初始状态drawState reactEvent reactTime=播放 (InWindow“游戏”(900900)(0,0))--窗口化 (格雷恩0.5)——背景色 1--刷新率 初始状态——初始状态 drawState——绘制游戏状态 reactEvent——对事件进行指示 反应时间——对时间作出反应 --|一局代表 类型状态=(映射、图片) --|初始博弈状态 initialState::State initialState=((地图13 0),墙)

Haskell gloss loading.bmp ——|主要功能 main::IO() main=do 墙(状态->图片)->(事件->状态->状态)->(浮动->状态->状态)->IO() 播放初始状态drawState reactEvent reactTime=播放 (InWindow“游戏”(900900)(0,0))--窗口化 (格雷恩0.5)——背景色 1--刷新率 初始状态——初始状态 drawState——绘制游戏状态 reactEvent——对事件进行指示 反应时间——对时间作出反应 --|一局代表 类型状态=(映射、图片) --|初始博弈状态 initialState::State initialState=((地图13 0),墙),haskell,gloss,Haskell,Gloss,函数映射创建我的映射。 我的游戏已经运行良好,但我需要用一些BMP图像替换我使用的表示(来自光泽的圆圈),但我甚至无法加载一个原因当我尝试加载此墙时,我在此处共享的最后一行中出现错误: 不在“墙”的范围内 有人知道为什么会发生这种情况吗?当您定义main时,您在那里创建的变量在main的定义之外是无法访问的初始状态不在main的定义范围内 您需要通过如下更改main和initialState将wall传递到initialState: -- | Main function main :: IO (

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


有人知道为什么会发生这种情况吗?

当您定义
main
时,您在那里创建的变量在
main
的定义之外是无法访问的<代码>初始状态不在
main
的定义范围内

您需要通过如下更改
main
initialState
wall
传递到
initialState

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

谢谢你,我会试试这个,告诉你是怎么回事。
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)