## 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('未分胜负,游戏继续!')
-
玩家胜:
-
庄家胜:
-
胜负未分:
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('胜负未分,游戏继续!!')
-
玩家胜:
-
庄家胜:
要求二
现在完成了要求一,那么我们就更进一步,加上初始资金,
再看一下要求二:
游戏开始之前,玩家有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赌博游戏的主要内容,如果未能解决你的问题,请参考以下文章