【问题标题】:Making a Map in Gloss用光泽制作地图
【发布时间】:2021-02-07 02:16:39
【问题描述】:

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

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

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

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

我附加了渲染函数,以防我接线不好:

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

【问题讨论】:

    标签: haskell gloss


    【解决方案1】:

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

    【讨论】:

    • 非常感谢!我将 pacmanMap 绑定到 Main 中的一个变量,然后将其作为参数传递给 render 并且延迟消失了。这让我在处理绑定时有了新的视角。
    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多