马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2022-7-11 18:42 编辑
在线视频:
市面上常见的骰子都是有 6 个面的正方体,每个面印有数字,不重复。
上一集我们实现了用户和计算机的对战,这次我们编写一个游戏,由我们指定游戏局数,让计算机 A 和 B 互相博弈~
每一盘我们都采用累加求和来比大小,并不是单纯看本局 A 和 B 的随机点数大小。
如果用户指定局数小于 99,提示重新输入。
既然是随机产生点数,就要用到“随机数生成器”,每次产生 1~6 之间的一个整数,来模拟掷骰子的点数。
要得到 6 个不同的随机值,需要调用 Python 的 random 模块提供的 random.randint() 函数即可:
这样就能生成 A 和 B 每局掷出的随机点数。
既然游戏需要统计最终结果,我们需要定义两个变量 a1 和 b1,用于记录每个人投掷点数的累加和。
为了记录每个人的获胜盘数,需要再定义两个变量 a 和 b,用于记录每个人获胜的盘数。
每一盘 A 获胜,a 加 1,反正 B 加 1,打平则两边都不加 1。
程序其实并不难,这次我们再介绍一个新玩意:time 模块。
在结果出来前,我们让程序暂停 3 秒,增加一些悬念:
print("加速统计结果中...")
time.sleep(3)
更多关于 time 模块相关的知识点,请读者自行查阅,基本上任何跟时间相关的操作都会涉及到 time 模块。
为了提升一些游戏难度,我们要求用户来输入游戏次数,并不得少于99局。
如果不符合就重复提示,直到输入正确程序才继续执行:
import random
import time
if __name__ == "__main__":
print("===比大小游戏开始咯,请输入计算机A和B的比赛局数,最少99局===")
round = int(input("局数:"))
while round < 99:
print("游戏局数必须大等于99局哦")
round = int(input("局数:"))
这里通过一个 while 循环就可以实现重复提示。
接下来就是程序核心部分,生成随机点数并进行结果统计。
由于是进行 round 局比赛,所以每局比赛都要统计一次点数和。
如果本局内 a1 大于 b1 则表示 A 获胜。反之,则是 B 获胜:
a,b = 0,0
print(f"A和B共进行{round}局比赛")
for i in range(1,round):
a1,b1 = 0,0
for j in range(1,7):
a1 = a1 + random.randint(1,6)
b1 = b1 + random.randint(1,6)
if a1 > b1:
a += 1
else:
b += 1
最后我们输出结果,通过 a 和 b 值来看谁获胜。
a 大于 b 说明 A 获胜,反之则 B 获胜:
print("加速统计结果中...")
time.sleep(3)
if a > b:
print(f"{a}:{b}获胜者为A")
else:
print(f"{a}:{b}获胜者为B")
我们来执行下:
看似没问题了对不对?!
但是!游戏中还有可能出现一种在说明中没有直接说的可能:“平局”!
也就是说会有一种可能存在 a 和 b 是相同,也就是最终胜负数一样。
如果出现这种情况,按照现有程序都是属于 else 的情况,最终会误判 B 获胜。
作为一名程序员,我们写程序一定要全面考虑各种情况,不能只局限于题目所说的。
修改 else 中的代码:
if a1 > b1:
a += 1
else:
if a1 < b1:
b += 1
以及:
if a > b:
print(f"{a}:{b}获胜者为A")
else:
if a < b:
print(f"{a}:{b}获胜者为B")
else:
print("A和B平局")
再次执行:
好啦,我们又搞定了一个游戏啦~
这里小师妹稍微科普点有趣的知识。
博彩类的游戏是基于大脑的奖励系统:
赢了,大脑就分泌多巴胺,感到愉悦;输了,那种“赶紧再来一把扳回来”的焦虑就会迅速产生。
这种设计就让大家欲罢不能~
每一项设计都在营造一种沉浸式体验,让玩游戏的人一步步走向沉迷,不可自拔~
像赌博游戏机,能够和很多违禁药物一样,通过不断重复行为,刺激人脑中的脑神经回路分泌多巴胺,让人上瘾。
这种重复行为的频率越快,上瘾也就越迅速,所以大家一定要小心哦~
好啦,本节课就到这里,下课~
源码: |