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賭博游戲
這個代碼的主要思想是善于利用回圈與分支結構的相結合,
最后遠離賭博,珍愛自己
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292589.html
標籤:其他
上一篇:2021百度之星初賽三
