Python學習之Craps賭博遊戲篇

極限之旅發表於2019-05-18

在此先安利一波大佬的Python學習專案地址:https://github.com/jackfrued/Python-100-Days

這些天一直在看著大佬的專案學習Python,這是第五天迴圈學習完的練習,感覺很有意思,就照著意思寫了一下,期間也改進了很多不滿意的地方,個人認為這個例子真的很?,

可以根據執行中產生的很多問題一步步去解決,達到自己理想的效果

Craps賭博遊戲:
玩家搖兩顆色子 如果第一次搖出7點或11點 玩家勝
如果搖出2點 3點 12點 莊家勝 其他情況遊戲繼續
玩家再次要色子 如果搖出7點 莊家勝
如果搖出第一次搖的點數 玩家勝
否則遊戲繼續 玩家繼續搖色子
玩家進入遊戲時有1000元的賭注 全部輸光遊戲結束

這是那位大佬的版本:

 1 from random import randint
 2 
 3 money = 1000
 4 while money > 0:
 5     print('你的總資產為:', money)
 6     needs_go_on = False
 7     while True:
 8         debt = int(input('請下注: '))
 9         if debt > 0 and debt <= money:
10             break
11     first = randint(1, 6) + randint(1, 6)
12     print('玩家搖出了%d點' % first)
13     if first == 7 or first == 11:
14         print('玩家勝!')
15         money += debt
16     elif first == 2 or first == 3 or first == 12:
17         print('莊家勝!')
18         money -= debt
19     else:
20         needs_go_on = True
21 
22     while needs_go_on:
23         current = randint(1, 6) + randint(1, 6)
24         print('玩家搖出了%d點' % current)
25         if current == 7:
26             print('莊家勝')
27             money -= debt
28             needs_go_on = False
29         elif current == first:
30             print('玩家勝')
31             money += debt
32             needs_go_on = False
33 
34 print('你破產了, 遊戲結束!')

大佬的版本我覺得只有一個不友好的地方就是當輸入為空時,會出現一個ValueError的異常,這樣我認為不太友好,所以改版了一下,下面是我的版本

 1 from random import randint
 2 money=1000
 3 while money>0:
 4     touzhu=0
 5     try:
 6         touzhu = int(input('你投注的金額是:'))
 7     except ValueError:
 8         print('輸入為空',end=', ')
 9         #touzhu=int(input())
10     finally:
11         flag=False
12         if touzhu <= 0:
13             print('投注無效,請重新投注')
14         elif touzhu > money:
15             print('投注超過了你的資產總和,請重新投注')
16         else:
17             shuzi=randint(1,6)+randint(1,6)
18             #print('本次搖出的點數為:%d'%shuzi)
19             cun=shuzi
20             if shuzi==7 or shuzi==11:
21                 print('恭喜,你贏了!')
22                 money+=touzhu
23             elif shuzi==2 or shuzi==3 or shuzi==12:
24                 print('不好意思,你輸了!')
25                 #zhuangjia+=touzhu
26                 money-=touzhu
27             else:
28                 flag=True
29         zongtouzhu = 0
30     while flag:
31         jiazhu=-1
32         try:
33             jiazhu=int(input('你的加註金額是:'))
34         except ValueError:
35             print('輸入為空',end=', ')
36         finally:
37             zongtouzhu+=jiazhu
38             flag=False
39             if zongtouzhu+touzhu > money:
40                 print('加註超過了你的資產總和,請重新加註')
41                 zongtouzhu-=jiazhu
42                 flag=True
43             elif jiazhu < 0:
44                 #可以不加註,則加註為0
45                 print('加註無效,請重新加註')
46                 flag=True
47                 zongtouzhu-=jiazhu
48             else:
49                 shuzi=randint(1,6)+randint(1,6)
50                 #print('本次搖出的點數為:%d'%(shuzi))
51                 if shuzi==7:
52                     print('不好意思,你輸了!')
53                     money-=(touzhu+zongtouzhu)
54                     #zhuangjia+=touzhu
55                 elif shuzi==cun:
56                     print('恭喜,你贏了!')
57                     money+=(touzhu+zongtouzhu)
58                 else:
59                     flag=True
60     #print(money)
61 print('你已經破產,遊戲結束!')

本來按照遊戲原本的思路去寫的,寫著寫著就想要不第二次以後搖色子來個加註吧,這樣更刺激嘛,哈哈哈哈,另這個版本當輸入為空時,提示為無效,可以重新投注,遊戲繼續,

不會出現紅色異常的,其他就沒什麼改進了,想加個介面做成一個完整的搖色子游戲,可是這塊還不會,繼續加油了

還請路過的大佬指點不足啊

相關文章