鱼C-小师妹 发表于 2022-1-17 22:20:21

28 - 比比谁的点数大

本帖最后由 不二如是 于 2022-7-11 18:42 编辑

在线视频:

https://www.bilibili.com/video/BV1HT4y1K7DY?p=31

市面上常见的骰子都是有 6 个面的正方体,每个面印有数字,不重复。



上一集我们实现了用户和计算机的对战,这次我们编写一个游戏,由我们指定游戏局数,让计算机 A 和 B 互相博弈~

每一盘我们都采用累加求和来比大小,并不是单纯看本局 A 和 B 的随机点数大小。

如果用户指定局数小于 99,提示重新输入。

既然是随机产生点数,就要用到“随机数生成器”,每次产生 1~6 之间的一个整数,来模拟掷骰子的点数。

要得到 6 个不同的随机值,需要调用 Python 的 random 模块提供的 random.randint() 函数即可:

random.randint(1,6)
这样就能生成 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平局")
再次执行:



好啦,我们又搞定了一个游戏啦~

这里小师妹稍微科普点有趣的知识。

博彩类的游戏是基于大脑的奖励系统:

赢了,大脑就分泌多巴胺,感到愉悦;输了,那种“赶紧再来一把扳回来”的焦虑就会迅速产生。
这种设计就让大家欲罢不能~

每一项设计都在营造一种沉浸式体验,让玩游戏的人一步步走向沉迷,不可自拔~

像赌博游戏机,能够和很多违禁药物一样,通过不断重复行为,刺激人脑中的脑神经回路分泌多巴胺,让人上瘾。

这种重复行为的频率越快,上瘾也就越迅速,所以大家一定要小心哦~

好啦,本节课就到这里,下课~

源码:**** Hidden Message *****

阿萨德按时 发表于 2022-1-18 11:07:20

{:10_254:}

Laplacee 发表于 2022-1-18 11:51:32

瞅一眼{:10_316:}

1molHF 发表于 2022-1-18 13:49:10

{:10_256:}

Aihal 发表于 2022-1-18 16:23:59


junkersykj 发表于 2022-1-18 16:41:36

{:10_254:}{:10_254:}{:10_254:}

飞吹麦浪 发表于 2022-1-18 17:57:29

我就看看不碰

小萌新。 发表于 2022-1-18 18:26:35

{:5_108:}

林菜青 发表于 2022-1-18 20:11:53

{:5_95:}

hornwong 发表于 2022-1-18 23:55:46

{:5_95:}

kaiying 发表于 2022-1-19 09:17:22

let's me see

qwb1997 发表于 2022-1-19 13:05:45

{:10_258:}

袁小达 发表于 2022-1-20 15:51:37

{:5_109:}

Oo小黄瓜oO 发表于 2022-1-20 16:09:20

666

伽羅~ 发表于 2022-1-20 17:08:41

{:10_279:}

errfgod 发表于 2022-1-20 17:25:59

{:10_257:}

quark 发表于 2022-1-20 19:42:43

来看看。。。

loveyuer 发表于 2022-1-20 19:58:38


来看看。。。

B4ika 发表于 2022-1-20 20:28:33

111

小木同学爱学习 发表于 2022-1-21 12:41:24

{:10_254:}
页: [1] 2
查看完整版本: 28 - 比比谁的点数大