- 案例目的
本章案例研究,通过一个简单的游戏案例,帮助读者使用数据结构和算法,实现基本的游戏人工智能,从而加深了解Python数据结构和基本算法流程。
- 案例内容
猜单词游戏使用元组或列表构建待猜测的英文单词列表WORDS,使用random模块的choice()函数,从单词的元组中随机抽取一个英文单词word,然后把该英文单词的字母乱序排列,方法是每次随机抽取一个位置的字符,放入乱序的jumble字符串中,并从原word中删除该字符。
- 实验环境
Pycharm、Anaconda、Visio
- 案例研究
3.1 猜单词游戏框架
游戏一开始先显示乱序后的字符串jumble,并提示用户输入猜测的结果,如果错误将提示继续输入,直到输入正确。猜对之后,可以询问是否继续游戏,游戏也可以通过CTRL加C组合键强制中断运行。
# 时间 2022-04-05
# 作者 JohnRothan
# 题目信息 猜单词游戏
# 解题思路 请看注释说明
#导入random
import random
# 建立词库
WORDS = ['international','trade','policy','negotiation','Philippines','Department','Industry']
# 继续游戏标志isGo
isGo = "yes"
# 游戏主体,进入条件isGo=yes
while isGo in ("yes", "y","Y"):
# 随机从词库选择单词
word = random.choice(WORDS)
# 保存正确答案
answer = word
# 打断单词,存入jumble
jumble = ""
for i in word:
position = random.randrange(len(word))
jumble += word[position]
word = word[:position]+word[(position+1):]
print("乱序单词:",jumble)
guess = input("输入猜测:")
# 猜测错误,持续猜测
while guess != answer:
guess = input("错误,再次猜测:")
print("猜测正确!")
# 是否继续游戏
isGo = input("是否继续(yes/no)?")
# 非法输入提示
while isGo not in ("no","N","n","NO","No","yes","y","Y","Yes","YES"):
print("非法输入,重新输入你的选择!")
isGo = input("是否继续(yes/no)?")
#游戏结束
print("本次游戏结束!")
3.2 测试结果与流程图
3.2.1 测试结果
图 1 测试结果
3.2.2 猜单词游戏流程
图 2 猜单词游戏流程图