简体   繁体   中英

Haskell gloss loading .bmp

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

The function map creates my map. My game is already running fine, but I need to replace the representations i used (circles from gloss) with some BMP images, but i can't load even one cause when i try to load this wall it appears an error in the last line I shared here: not in scope 'wall'

Can someone see why this is happening?

When you define main , the variables you create there aren't accessible outside of the definition of main . initialState is outside the definition of main .

You need to pass wall into initialState by changing main and initialState like this:

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM