石头剪刀布
1. 创建资源
开始实验之前,您需要先创建实验相关资源。
- 在实验室页面,单击创建资源。
- (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。
说明:资源创建过程需要3~5分钟(视资源不同开通时间有所差异,ACK等资源开通时间较长)。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。
实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。
资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息
2. 实验步骤
- 实验资源创建完毕后的界面如图1所示。
图1 资源创建完毕后的界面
- 该实验要求编写一个简单的人机对战游戏。对此问题进行简单分析,可以从以下几个方面进行整体考虑:
- 关于出拳:由于是人机对战游戏,计算机和用户是游戏主体,因此计算机出拳必须通过随机数产生,而用户出拳需要从键盘输入;
- 关于单局的胜负判定:此游戏中的出拳有3种状态,分别为石头、剪刀和布,为了处理方便可以分别用如0、1、2这样的数来代表(也可用其它数字表示)。以这些设定为例,可以穷举出除出拳一样的所有状态,这里共有6种状态,分别如下:
表1 双方出拳示意及胜负判定表
计算机 出拳值 |
用户 出拳值 |
计算机出拳值-用户出拳值 |
胜负判定 |
一般性判定规则 |
0 |
1 |
-1 |
计算机胜 |
如果差值为-1或2则计算机胜; 如果差值为1或-2则用户胜 |
0 |
2 |
-2 |
用户胜 |
|
1 |
0 |
1 |
用户胜 |
|
1 |
2 |
-1 |
计算机胜 |
|
2 |
0 |
2 |
计算机胜 |
|
2 |
1 |
1 |
用户胜 |
- 关于游戏胜负的判定:表1给出了单局游戏的胜负判定规则,但整个游戏的胜负还要进行“三局两胜”,因此,只有在一方先达到胜两局的情况下,才能确定游戏的胜负。如何实现先达到胜两局的这一判定呢?其实可以采用最简单的积分方法,每胜一局者,为其积1分,累计积分先达到2分的判定该方获胜。
另外还有一些细节上的考虑,如下面几点:
- 如何生成范围在0-2之间的随机整数;
- 要进行多轮猜拳,循环如何处理,用何种结构更好?
- 胜负判定的具体表达式如何写出?
- 还需要一些外部变量吗?需要几个?都起什么作用?
- 所有思考后得到的语句顺序如何调整?
- 根据上述总体思考和细节考虑,写出一个简单的单轮猜拳的样本,具体代码如下:
import random as r print("+----------------------------+") print("+ +") print("+ 欢迎进入石头剪刀布游戏 +") print("+ 0:石头 1:剪刀 2:布 +") print("+ +") print("+----------------------------+") c_box=r.randint(0,2) #用来记录计算机的出拳 p_box=int(input("请输入您的出拳:")) #用来记录用户的出拳 d=c_box-p_box #计算机出拳与用户出拳之差 print("计算机的出拳为%d,您的出拳为%d"%(c_box,p_box)) if d==-1 or d==2: print("抱歉,您输了!") elif d==-2 or d==1: print("恭喜,您赢了!") elif d==0: print("平局!")
3.1 在命令窗口,执行如下命令,进入源代码编辑窗口。
vim p3-1.py
3.2 进入程序编辑状态后,先按键盘上的i键进入插入模式,然后将上述代码添加进去。添加完成后,按键盘左上角的Esc键退出编辑模式,然后输入:wq保存并退出配置文件。保存退出前的界面如图2所示。
图2 源代码编辑窗口
3.3 在命令窗口,执行如下命令:
python3 p3-1.py
执行后的结果如图3所示。
图3 p3-1.py程序的执行结果
上述代码仅是完成了一次猜拳过程,与实验内容的要求不完全相符,请同学自行改造程序,使其能够满足实验内容的要求。
- 改造上述程序代码,使其能够满足实验内容的要求,将其存为“p3-2.py”,并调试通过。
3. 实验要求
- 请将上面实验的每一步截图,分别用e5-1.jpg、e5-2.jpg、……、e5-n.jpg保存,至少截取5张图,并将所有实验内容的Python代码及截图一起打包提交到学习平台上,压缩包格式统一为zip格式。
- 西安交通大学的同学,请将文件命名为“你的学号-Py3.zip”;非西安交通大学的同学,请将文件命名为“你的学校-你的姓名-Py3.zip”或“你的姓名-Py3.zip”。
- 所有文档请于实验截止日期前提交。
实验链接:https://developer.aliyun.com/adc/scenario/58ceffe667bd4ff4b9e4d114d81adf5f