在这个项目中,学生将探索如何使用不同的人工智能算法来驱动或玩各种类型的电脑游戏。他们将研究几个简单游戏的代码,看看电脑是如何玩这些游戏,如何根据人类玩家的选择提高自己的性能。最后,学生将用人工智能的角色或对象编写一个原始的游戏应用程序。
5. 活动3:开发一个AI计算机游戏
在这个活动中,学生将利用他们关于人类如何玩游戏的概念性知识,思考如何编写程序让计算机智能地玩游戏。在这个过程中,学生将试验两个用Python编写的程序。即使没有python编程语言背景的学生,只要掌握基本编程技能和文本知识,也可以在此基础上学习。
1.学生互相玩10轮“石头剪刀布”游戏并讨论:作为人类,你是如何玩游戏?你的选择总是随机的吗?它们有规律可循吗?你是否试图适应其他玩家的行为?长时间玩游戏时,你是否会改变你的策略?
2.让学生为电脑编写并改进一个游戏的伪代码程序玩“石头剪刀布”游戏。
(1)让学生分组使用自然语言伪代码写一个程序来与人对抗玩“石头剪子布”。
(2)学生与电脑至少进行10轮 “石头剪刀布1.0”游戏。让学生回顾Python代码,并与之前的代码进行对比:
电脑是如何选择出什么手势的?参考答案:这不是真正的选择,它只是从第15行和第16行生成的一个随机选择。
电脑的获胜策略是什么?参考答案。没有什么策略,是运气。
这是一个人工智能的例子吗?参考答案。不是,因为没有自主的、基于感知的决策。电脑不会对玩家的动作有智能反应。
(3)让学生使用进行至少10轮“石头剪刀布2.0”游戏。告诉他们回顾所提供的Python代码,并思考它与他们写的伪代码和第一个石头剪子布的代码相比有何不同。
这个电脑是如何选择玩什么的?答案:首先,随机选择,然后5轮比赛后,计算机会确定玩家最常用的手势,并会选择击败这一步手势(例如,如果玩家最多出石头,那么AI将出布)。
这是AI的一个例子吗?答案: 根据Al Sweigart 的定义,这个程序演示了一个简单的AI,因为电脑跟踪并响应玩家最常出的手势。当玩家调整他们的游戏方式时,电脑也在调整。
要打败一个玩家需要收集什么数据?这些数据在代码中的什么位置?答案: 第14行和第15行构建了一个移动数组,第16-18行计算移动的数量和类型。
这是不是让电脑在剪刀石头布游戏中对玩家做出聪明反应的唯一方法?答案:不是,其他的选择包括跟踪所有玩家的手势以提高反应;跟踪最好的玩家并模仿;识别人类如何选择他们的手势的动作。
计算机需要收集哪些数据来模拟特定的玩家?答案: 为了模拟一个人,电脑需要收集更多回合的游戏,寻找模式和计数。它需要把很多游戏的跟踪数据保存到一个特定玩家的外部文件或数据库中。
(4)两个学生互相改进他们的伪代码,以确保电脑能够智能地响应玩家,小组与小组进行对比,讨论以上让电脑智能地玩剪刀石头布的各种方法哪一种最像人类。