c++ - 如何在 C++ 中为 PacMan 编写 map

标签 c++ oop pacman

谁能告诉我如何用 C++ 为 PacMan 创建 map 。 有任何关于入门的建议吗?提前致谢。

最佳答案

这是一个相当广泛的问题,取决于其他要求。基本上我会选择一个只代表单元格的二维数组。每个单元格将包含:

  1. 一面墙
  2. 单向墙(代表怪物通过的门)
  3. 一个空单元格
  4. 有食物的细胞
  5. 一个“传送单元”,它将把吃 bean 人送到不同的地方(代表左右两侧的两个单元)

怪物和吃 bean 人本身不会出现在 map 中。相反,每个人都应该在 map 上有自己的位置。

这不需要 C++,它只需要 C,但如果您有意使用 C++ 解决方案,您可以将数组替换为 vector ,或者在本例中为 vector 的 vector 。

怪物将如何移动

如果您想从 map 中的 B 点到达 A 点,您可以使用各种算法中的任何一种来找到 map 中的最短路径 - 例如 A*算法。但是,在这种情况下,您需要考虑以下几点:

  1. 吃 bean 本身总是在移动,这会从一步到另一步改变路径。
  2. 你不希望所有的怪物都有相同的路径,否则你不会真的有几个怪物,因为它们都会移动相同。
  3. 你不希望怪物非常有效,因为那样游戏会变得太难并且不会有太多乐趣。

我建议在怪物到达“十字路口”时使用一些随机决定,同时普遍偏向吃 bean 人本身。所以如果怪物在一个有 3 个方向的点,比如东、西和北,而吃 bean 人在北边,我会随机决定北边 40% 的几率,东边 30% 的几率和 30% %向西。

关于c++ - 如何在 C++ 中为 PacMan 编写 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4527383/

相关文章:

c++ - 直接丢失或间接丢失-Valgrind问题

c++ - 使用 'delete' 运算符清理内存时出现“调试断言失败”错误

c - 吃 bean 的搜索算法

c - 具有节点优先级的 A* 寻路

c# - 如何合成静态虚拟/抽象成员?

java - 如何在 Slick2D 中向图像/ Sprite 添加碰撞?

c++ - 更改模型后 View 未更新

c# - 将第 3 方 C++ DLL 引用到 VS 2013 项目中

c++ - ChaiScript 和 STL

java - 从 java 方法返回两个值