简单游戏算法的链接

6
我正在阅读 那个问题,并想起了维基百科算法列表。我知道维基百科也有一份开源游戏列表,但我想要的是简单游戏算法的链接,即使是伪代码形式。
对于“简单”的游戏,我指的是数独、宝石迷阵、纸牌、扫雷、迷宫、贪吃蛇、大猩猩、国际象棋、俄罗斯方块等游戏。
如果有C#源代码则更好 :)

你是在谈论用于玩这些游戏的人工智能算法吗? - David Z
这个范围非常广泛。考虑每个问题只关注一个游戏的算法。 - Adam Davis
6个回答

7

2
广义扫雷可能是NP完全问题,但数独也是如此[Yato和Seta,2002],而国际象棋则更加复杂(EXPTIME完全问题)。实际上,数独的NP完全性并不意味着人们想要解决的问题没有可靠且快速的算法。 - Gareth Rees
事实上,你可以说人工智能就是搜索。我不知道它应该意味着什么。我认为这个陈述是错误的。 - Niyaz
@Gareth:很好的观点。与数独和国际象棋不同,我还没有尝试编写一个玩扫雷的程序。 - Dan Dyer
+1 对于“所有的 AI 都是搜索”的支持。我很确定我在我的 AI 课上听过这个引用...是赫伯特·西蒙说的吗? - awshepard

2
正如其他人所暗示的那样,“算法”对于游戏来说并不适用,除了像生命游戏这样的某些微不足道且不特别像游戏的内容。算法是一种处理已知方式的数据集以产生该数据的特定输出的方法,通常在某种时间/复杂性限制内完成。游戏并不符合这个简单的标准——它们更像模拟,通过重复地基于输入改变对象状态直到达到特定条件的方式进行操作。因此,它们几乎都遵循输入->更新->显示循环,并在更新阶段使用专门的游戏逻辑。游戏的各个部分无疑会根据简单而广为人知的算法实现,但游戏程序本身实际上只是模拟循环和其中的逻辑。

1

对于算法,不是针对游戏本身,而是用于相对复杂的任务。例如,在Bejeweled中,您有一个8x8的网格,填满了7种颜色的宝石。任何时候,每种颜色大约有8个宝石。用户移动一颗宝石以创建匹配后,屏幕上至少会消失三个宝石(都是相同颜色),并且会有三个新的宝石掉落到屏幕上。如何确保屏幕上始终至少有一次匹配可用?如何确保匹配很可能出现在屏幕周围,而不仅仅是在顶部?


我需要解决我的游戏开发问题。 - Ashraf Sayied-Ahmad

1

康威生命游戏 没有比这更简单的了。它只有四个规则:

  1. 任何活细胞如果周围少于两个活细胞,就会因为人口不足而死亡。
  2. 任何活细胞如果周围超过三个活细胞,就会因为拥挤而死亡。
  3. 任何活细胞如果周围有两个或三个活细胞,就会保持不变,进入下一代。
  4. 任何死细胞如果周围恰好有三个活细胞,就会成为一个活细胞。

它可以在任何语言中轻松实现,需要 零玩家,并产生一些有趣的图案。


0

虽然你提到的游戏很简单,但是我认为这些游戏的算法并不简单(真的没有冒犯的意思:)


0

这是大多数游戏的算法:

一旦游戏初始化...

  1. 接受用户输入
  2. 根据用户输入更新游戏状态
  3. 提供视觉反馈(更新屏幕)
  4. 检查得分变化并根据需要进行更新
  5. 检查“游戏结束”,如果游戏尚未结束,则跳转到步骤1
  6. 嗯...就这些了。

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接