0

在 PL 课上,我们被要求用Gloss制作一个 pacman 克隆,但我在制作地图时遇到了困难。

我的方法是采用经典 pacman 第一级的 .png,并将其粘贴到渲染函数中,这样我就不需要手动绘制所有内容。

尽管如此,通过这样做,游戏会严重滞后,我假设这是因为游戏在每一步都渲染了地图。

有没有办法将地图一次渲染为背景,或者避免巨大的滞后?还是我采取了不好的方法,如果我使用图片模块手动绘制组件会更好?

我附加了渲染功能,以防万一我接线不好:

render :: PacmanGame -> IO Picture
render game = do
  sprite <- fmap (head) (playerSprites $ player game)
  let playerOne = uncurry translate (playerPos $ player game) $ sprite
  map' <- pacmanMap 
  return $ pictures [map', playerOne]

在哪里pacmanMap :: IO Picture

4

1 回答 1

0

看起来您在每次调用render. 您需要运行一次pacmanMap :: IO Picture操作,例如在启动时;然后你可以从你的函数中返回结果静态。例如,您可以将当前背景图像的引用存储在 中,或者将其作为附加参数传递给.mainPicturerenderPacmanGamerender

于 2020-10-24T04:52:44.943 回答