自学Python:抢30游戏

作者: 小强聊成长 | 来源:发表于2022-01-22 11:27 被阅读0次

由两个人玩“抢30”游戏,游戏规则是:第一个人先说“1”或“1,2”,第二个人要接着往下说一个或两个数,然后又轮到第一个人,再接着往下说一个或两个数。

这样两人反复轮流,每次每个人说一个或两个数都可以,但是不可以连说三个数,谁先抢到30,谁得胜。

在大家不知情的情况下,不管先说后说,都有赢的可能性,但游戏里潜藏着人为可控的必胜因素。还可以发现,失败者报1个数,获胜者就报2个数;失败者报2个数,获胜者就只报1个数。所以获胜者总能迅速报数。

结论:如果有人利用数学规律掌握了必胜的秘诀,巧妙设计,就可以做到每战必赢,这个游戏其实是不公平的。

下面直接上代码:

########################

import random

def input_num(t):# 定义输入函数

    a = int(input("请开始输入1或者2:"))

    while a > 2 or a < 1 or a + t > 30:

        if a > 2 or a < 1 or a + t > 30:

            print("输入错误,请重新输入!")

        else:

            print("你输入的是 %d" % (t + a))

        a = int(input("请输入:"))

    print("你输入的是: %d" % (t + a))

    return t + a  # 返回当前已经取走的数的累加和

def copu(s):# 计算谁会胜利

    c = 0

    print("电脑输入: ", end="")

    if (s + 1) % 3 == 0:  # 若剩余的数的模为1,则取1

        s = s + 1

        print(s)

    else:

        if (s + 2) % 3 == 0:

            s = s + 2  # 若剩余的数的模为2,则取2

            print(s)

        else:

            c = random.randint(1, 2)    # 否则随机取1或2

            s = s + c

            print(s)

    return s

if __name__ == "__main__":

    tol = 0

    print("***********抢30游戏开始 **************")

    # 取随机数决定机器和人谁先走第一步。若为1,则表示人先走第一步

    if (random.randint(1, 2) == 1):

        tol = input_num(tol)

    while tol != 30:  # 游戏结束条件

        tol = copu(tol)

        if tol == 30:  # 计算机取一个数,若为30则机器胜利

            print("机器胜利!")

        else:

            tol = input_num(tol)

            if tol == 30:  # 人取一个数,若为30则人胜利

                print("人胜利 !")

    print("************游戏结束********************")

########################

执行结果如下:

***********抢30游戏开始 **************

电脑输入: 2

请开始输入1或者2:3

输入错误,请重新输入!

请输入:2

你输入的是: 4

电脑输入: 6

请开始输入1或者2:1

你输入的是: 7

电脑输入: 9

请开始输入1或者2:2

你输入的是: 11

电脑输入: 12

请开始输入1或者2:1

你输入的是: 13

电脑输入: 15

请开始输入1或者2:2

你输入的是: 17

电脑输入: 18

请开始输入1或者2:1

你输入的是: 19

电脑输入: 21

请开始输入1或者2:2

你输入的是: 23

电脑输入: 24

请开始输入1或者2:1

你输入的是: 25

电脑输入: 27

请开始输入1或者2:2

你输入的是: 29

电脑输入: 30

机器胜利!

************游戏结束********************

________________END______________

相关文章

网友评论

    本文标题:自学Python:抢30游戏

    本文链接:https://www.haomeiwen.com/subject/eywbcrtx.html