## Python小案例2:CRAPS赌博游戏

Posted 悾格

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了## Python小案例2:CRAPS赌博游戏相关的知识,希望对你有一定的参考价值。

Python小案例2:CRAPS赌博游戏

案例介绍:

用python实现CRAPS赌博游戏,又称色子游戏

要求一

玩家摇两颗色子,如果第一次摇出了7点或11点,玩家胜;如果摇出了2点、3点、12点,庄家胜;
如果摇出了其他的点数,游戏继续,玩家重新摇色子;如果玩家摇出了第一次摇的点数,玩家胜;
如果玩家摇出了7点,庄家胜;如果玩家摇出其他点数,游戏继续,玩家重新摇色子,直到分出胜负

要求二

游戏开始之前,玩家有1000元的初始资金,玩家可以下注,赢了获得下注的金额,输了就扣除下注的金额,如果玩家把钱输光了,游戏结束。

案例分析并写出代码

因为有两个要求,所以先将要求一的代码写出,先不将初始资金加入。

然后根据要求一,我们又可以先将其分为两部分,先分出第一局的胜负,如果未分胜负就可继续游戏。

要求一

1. 第一局胜负
import random

# 使用生成式方法将2次摇色子放入列表num1中
nums1 = [random.randrange(1, 7) for _ in range(2)]
# 利用列表的下标索引相加计算出2次摇色子的总点数
num1 = nums1[0] + nums1[1]
# 打印摇出的点数
print(f'摇出了:{num1}点')
# 根据点数判断玩家胜还是庄家胜还是游戏继续
if num1 == 7 or num1 == 11:
    print('玩家胜')
elif num1 == 2 or num1 == 3 or num1 == 12:
    print('庄家胜')
else:
    print('未分胜负,游戏继续!')
    
  1. 玩家胜:

  2. 庄家胜:

  3. 胜负未分:

2. 假设未分胜负,重新摇色子

因为要求直到分出胜负才结束,就不到需要循环多久才结束,所以使用while True循环来继续游戏

import random

# 使用生成式方法将2次摇色子放入列表num1中
nums1 = [random.randrange(1, 7) for _ in range(2)]
# 利用列表的下标索引相加计算出2次摇色子的总点数
num1 = nums1[0] + nums1[1]
# 打印摇出的点数
print(f'摇出了:{num1}点')
# 根据点数判断玩家胜还是庄家胜还是游戏继续
# 有三个判断结果,需要用到elif语句
if num1 == 7 or num1 == 11:
    print('玩家胜')
elif num1 == 2 or num1 == 3 or num1 == 12:
    print('庄家胜')
else:
    print('胜负未分,游戏继续!')
    # 不知道循环次数,用while语句
    while True:
        # 重新要一次色子
        nums2 = [random.randrange(1, 7) for _ in range(2)]
        num2 = nums2[0] + nums2[1]
        print(f'摇出了:{num2}点')
        # 判断胜负
        if num2 == num1:
            print('玩家胜')
            break
        elif num2 == 7:
            print('庄家胜')
            break
        else:
            print('胜负未分,游戏继续!!')

  1. 玩家胜:

  2. 庄家胜:

要求二

现在完成了要求一,那么我们就更进一步,加上初始资金,

再看一下要求二:

游戏开始之前,玩家有1000元的初始资金,玩家可以下注,赢了获得下注的金额,输了就扣除下注的金额,如果玩家把钱输光了,游戏结束。

这里我们就直接将初始资金加入代码,就不分步加入了,

代码实现
import random

money = 1000
# 下注
stake = int(input('请下赌注:'))
# 使用生成式方法将2次摇色子放入列表num1中
nums1 = [random.randrange(1, 7) for _ in range(2)]
# 利用列表的下标索引相加计算出2次摇色子的总点数
num1 = nums1[0] + nums1[1]
# 打印摇出的点数
print(f'摇出了:{num1}点')
# 根据点数判断玩家胜还是庄家胜还是游戏继续
if num1 == 7 or num1 == 11:
    print('玩家胜')
    money += stake
    print(f'您还剩{money}元')
elif num1 == 2 or num1 == 3 or num1 == 12:
    print('庄家胜')
    money -= stake
    print(f'您还剩{money}元')
else:
    print('胜负未分,游戏继续!')
# 进行while循环,并且将条件设为money > 0,否则循环结束
while money > 0:
    # 下注
    stake = int(input('请下赌注:'))
    # 重新要一次色子
    nums2 = [random.randrange(1, 7) for _ in range(2)]
    num2 = nums2[0] + nums2[1]
    print(f'摇出了:{num2}点')
    # 判断胜负
    if num2 == num1:
        print('玩家胜')
        money += stake
        print(f'您还剩{money}元')
    elif num2 == 7:
        print('庄家胜')
        money -= stake
        print(f'您还剩{money}元')
    else:
        print('胜负未分,游戏继续!!')
print('您已破产,Game Over!!')

由于其他分支对于我来说有点复杂,所以就只能让玩家破产!!!

关于CRAPS赌博游戏

这个代码的主要思想是善于利用循环与分支结构的相结合。

最后远离赌博,珍爱自己

以上是关于## Python小案例2:CRAPS赌博游戏的主要内容,如果未能解决你的问题,请参考以下文章

Python游戏开发工程师的起步,几款游戏开发案例

第四届图灵赛A题谷神的赌博游戏

Python Tkinter实战案例,搞定剪刀石头布小游戏,就是这么强!

实战案例|摇奖游戏的开发教程

案例:用python实现翻译小程序

十五道Python小案例,学会这些,Python基础已过关!