進口?規則,?配置
進口?隨機,?時間,?操作系統(Operating System)
班級?卡片(對象):
" " " docstring?為了什麽?單值“”
def?__init__(self):
#?對應於牌面的點數(A代表14)
自我積分?=?{'2':2,?'3':3,?'4':4,?'5':5,?'6':6,?'7':7,?'8':8,?'9':9,?'10':10,?' J':11,?'問':12,?' K':13,?答:14
#?壹副有52張牌的牌(給國王)
self.cards?=?{1:'黑桃A ',?2:‘黑桃2’?3:‘黑桃3’?4:‘黑桃4’?5:‘黑桃5’,?6:‘黑桃6’?7:‘黑桃7’?8:“黑桃8”?9:'黑桃9 ',10:'黑桃10 ',11:'黑桃J ',12:'黑桃Q ',13:'黑桃K '
,14:'紅桃A ',15:'紅桃2 ',16:'紅桃3 ',17:'紅桃四',18:'紅桃5 ',19。
,27:'梅A ',28:'梅2 ',29:'梅3 ',30:'梅4 ',31:'梅5 ',32:'梅6 ',33:'梅7 ',34:'梅8 ',35:。
,40:'街區A ',41:'街區2 ',42:'街區3 ',43:'街區4 ',44:'街區5 ',45:'街區6 ',46:'街區7 ',47:'街區8 ',48:。
self.keys?=?list(self . cards . keys())#?列表卡字典鍵,方便操作。
self.newkeys?=?[] #?洗牌後的新順序。
#?按牌面返還積分
def?retPoint(self,?卡片):
回歸?self . points[card[6:]]#?卡片對應的點數,切片時註意漢字的len。
#?洗牌
def?洗牌(自己):
random.shuffle(self.keys)#?打亂按鍵的順序,盡量隨機化。
#?剪卡
def?剪切卡(自我):
startKey?=?random.randint(0,51)#?從52張卡中隨機選擇壹個數字(為什麽不是1-52,因為妳想從列表中得到相應的數字)。
self.newkeys?=?self . keys[start key:]+self . keys[0:start key]#?從開始鍵開始,腰牌
#?交易
def?perflop(自己):
card1?=?self . cards[self . new keys[0]]#?第壹張卡片
卡片2?=?self . cards[self . new keys[1]]#?第二張卡
card3?=?self . cards[self . new keys[2]]#?第三張牌
point1?=?self . retpoint(card 1)#?第壹張牌的點數
point2?=?self . retpoint(card 2)#?第二張卡中的點數
第三點?=?self . ret point(card 3)#?第三張牌點數
#?先展示點數小的牌,再展示點數大的牌。
如果?point1?& gt?第二點:
回歸?[卡片2,卡片1,點數2,點數1,點數1-點數2-1,卡片3,點數3]
否則:
回歸?[卡片1,卡片2,點數1,點數2,點數2-點數1-1,卡片3,點數3]
班級?銀行家(反對):
" " " docstring?為了什麽?銀行家"""
def?__init__(self):
self.card?=?卡片()
self.getCards=[]
自我。錢?=?金錢()
#?開業準備
def?準備好(自己):
打印?莊家:>?準備開始,請準備進入!'
打印?莊家:>?下註規則:每位玩家下註的金額必須是$5的倍數(例如$5/$50/$100等。),而且我買得起!'
#?開始
def?開始(自己):
self.card.shuffle()
self.card.cutCard()
self.getCards?=?self.card.perflop()
打印?莊家:>?前兩張打開的牌:% s% s?%?(self.getCards[0],?self.getCards[1])
跨度?=?self . get cards[4]#?跨度
如果?跨度?==?0: #?點連接
打印?莊家:>?兩張牌點數相連,平手!'
回歸?假#?直接準備下壹場比賽。
否則:
如果?跨度?& gt?0: #?點是不相連的。
打印?莊家:>?跨度:?%d '?%?跨度
回歸?真#?第三張牌的處理
否則:#?壹副
打印?莊家:>?兩個壹對,別加註了!'
回歸?假#?直接交給第三張牌。
#?第三張牌
def?第三張卡片(自己):
card3?=?self.getCards[5]
第三點?=?self.getCards[6]
跨度?=?self . get cards[4]#?跨度
如果?跨度?==?0: #?點連接
打印?系統:>?玩家平衡?$%d '?%?self . money . Jin(self . money . zonjiazhu())
及格
否則:
打印?莊家:>?第三張打開的牌:% s?%?卡片3
宗竹?=?self . money . zonjiazhu()#?總下註金額
如果?跨度?& gt?0: #?點是不相連的。
如果?第三點?& lt=?self.getCards[2]?還是?第三點?& gt=?self.getCards[3]:
打印?系統:>?不好意思!莊家贏了這場遊戲!'
打印?系統:>?玩家平衡?$%d '?%?self.money.chu()
埃利夫?第三點?& gt?self.getCards[2]?還是?第三點?& lt?self.getCards[3]:
打印?系統:>?恭喜玩家們!,
如果?跨度?==?1:
打印?贏的賠率5:1金額:?$%d!?%?(宗竹?*?6)
打印?系統:>?玩家平衡?$%d '?%?self.money.jin(宗澤?*?6) #?跨度1,5倍賠率+1倍總投註額。
埃利夫?跨度?==?2:
打印?贏得4:1的賠率。金額:?$%d!?%?(宗竹?*?5)
打印?系統:>?玩家平衡?$%d '?%?self.money.jin(宗澤?*?5) #?跨度2.4倍賠率+1倍總下註額
埃利夫?跨度?==?3:
打印?贏得2:1的賠率。金額:?$%d!?%?(宗竹?*?3)
打印?系統:>?玩家平衡?$%d '?%?self.money.jin(宗澤?*?3) #?跨度3,2倍賠率+1倍總下註額
否則:
打印?贏賠率1:1:?$%d!?%?(宗竹?*?2) #?用括號括起來,以防止被認為是將前面的文本打印了兩次。
打印?系統:>?玩家平衡?$%d '?%?self.money.jin(宗澤?*?2) #?剩余跨度,5倍賠率+1倍總投註額。
否則:
及格
否則:#?壹對夫婦?跨度?& lt?0
如果?第三點?==?self.getCards[2]:
打印?系統:>?恭喜玩家們!贏的賠率11:1:?$%d!?%?宗竹?*?12
打印?系統:>?玩家平衡?$%d '?%?self.money.jin(宗澤?*?12) #?11倍賠率,加上之前的總投註,就是12倍總投註。
否則:
打印?系統:>?第三張牌點數不同,而且是和棋!'
打印?系統:>?玩家平衡?$%d '?%?self.money.jin(宗竹)
self.end()
#?結束
def?結束(自己):
打印?系統:>?玩家的總下註金額是否清零?$%d '?%?self . money . zonjiazhu(--(self . money . zonjiazhu()))#?總下註金額被清除(10-10)
打印?系統:>?請等待下壹場比賽開始。'
打印?' - '
時間.睡眠(1)
班級?玩家(對象):
" " " docstring?為了什麽?玩家“”
def?__init__(self):
self.card?=?卡片()
自我。錢?=?金錢()
def?joinGame(自己):
什麽時候?真實:
comd?=?Raw_input ('System:>?要不要加入這個遊戲(y/n,輸入默認y,5秒後默認n,退出輸入q)?:?')
如果?comd?==?是嗎?還是?comd?==?'':
平衡?=?self.money.chkBalance()
如果?平衡?==?0:
打印?系統:>?不好意思!您的余額為0美元,因此您不能下註。妳要退出遊戲!'
打印?系統:>?請在進入遊戲前修改金錢文件中的余額數量!'
回歸?問
否則:
打印?系統:>?玩家平衡?$%d '?%?平衡
打印?系統:>?玩家的總下註額是多少?$%d '?%?self . money . zonjiazhu()#?總下註金額已被清除。
時間.睡眠(0.5)
回歸?真實的
埃利夫?comd?==?n ':
打印?玩家:>?我不想加入這個遊戲!'
回歸?錯誤的
埃利夫?comd?==?問:
打印?系統:>?玩家退出遊戲!'
回歸?問
否則:
打印?系統:>?命令錯誤,只能輸入字母y或n或q或直接輸入!'
時間.睡眠(0.5)
繼續
#?直接輸入還是輸入0,放棄這個遊戲?/?放棄加註
def?放棄(自我,輸入):
如果?輸入?==?''?還是?輸入?==?'0':
回歸?真實的
#?(在賭博中)下賭註
def?下註(自己):
什麽時候?真實:
firstBet?=?Raw_input ('System:>?玩家請下註(需要是$%s的倍數,通過,請直接輸入!):?'?%?self.money.base)
#?放棄這個遊戲
如果?self.giveUp(firstBet):
打印?玩家:>?傳球!'
時間.睡眠(0.5)
回歸?錯誤的
#?檢查輸入的金額。
輸入?=?self.money.chkInput(firstBet)
如果?輸入?==?缺少':
繼續
埃利夫?輸入?==?超越':
繼續
埃利夫?輸入:
打印?玩家:>?打賭?$%s '?%?firstBet
打印?系統:>?玩家平衡?$%d '?%?self.money.chu(int(firstBet))
打印?系統:>?玩家的總下註額是多少?$%d '?%?self . money . zong Jia Zhu(int(first bet))
時間.睡眠(0.5)
回歸?真實的
否則:
繼續
#?加註(再次下註)
def?againBet(self):
什麽時候?真實:
秒賭?=?Raw_input ('System:>?玩家們,請舉手(需要是$%s的倍數,STAND,請直接輸入!):?'?%?self.money.base)
#?放棄加註
如果?self.giveUp(秒註):
打印?玩家:>?站好!'
打印?系統:>?玩家平衡?$%d '?%?self.money.chkBalance()
打印?系統:>?玩家的總下註額是多少?$%d '?%?self . money . zonjiazhu()
時間.睡眠(0.5)
回歸?真#?放棄加註,開第三張牌。
#?檢查輸入的金額。
againInput?=?self.money.chkInput(秒註)
如果?againInput?==?缺少':
繼續
埃利夫?againInput?==?超越':
繼續
埃利夫?再次輸入:
打印?玩家:>?養?$%s '?%?秒賭
打印?系統:>?玩家平衡?$%d '?%?self.money.chu(int(secondBet))
打印?系統:>?玩家的總下註額是多少?$%d '?%?self . money . zong Jia Zhu(int(second bet))
時間.睡眠(0.5)
回歸?真實的
否則:
繼續
班級?錢(物):
" " " docstring?為了什麽?錢"""
def?__init__(self):
self.base?=?config.base #?下註金額基數
self.rwFile?=?RWFile()
#?數錢,付賬
def?楚(賽爾夫,錢=0):
輸?=?self . rwfile . readfile(self . rwfile . money file path)-money
self . rwfile . writefile(self . rwfile . money file path,?輸)
回歸?失去
#?賺錢
def?金(自我,錢=0):
贏?=?self . rwfile . readfile(self . rwfile . money file path)+money
self . rwfile . writefile(self . rwfile . money file path,?贏)
回歸?勝利
#?總下註金額
def?宗家主(自我,錢=0):
宗竹?=?self . rw file . readfile(self . rw file . amount file path)+money
self . rwfile . writefile(self . rwfile . amountfilepath,?宗竹)
回歸?宗竹
#?檢查輸入的金額。
def?chkInput(self,編號):
如果?number . is digit():#?數字
如果?self.chkBalance()?==?0:
打印?提醒:>?您當前的余額為0美元。您不能添加它!' #?這是“加註”,為什麽不是“下註”?因為玩家加入遊戲後會查看玩家余額,如果是$0,會直接提示遊戲無法繼續,要求退出!不給下註的機會,所以沒有$0余額也可以下註,但是可以加註,因為第壹次全押了!
時間.睡眠(0.5)
回歸?缺乏
埃利夫?int(數字)?& lt=?self . chk balance():#?輸入的金額在玩家的余額範圍內。
如果?int(數字)?%?self.base?==?0: #?輸入的金額是基數的倍數。
回歸?真實的
否則:
打印?提醒:>?輸入的金額必須是$%s的倍數,請重新輸入!?%?自我基地
時間.睡眠(0.5)
回歸?錯誤的
否則:
打印?提醒:>?輸入的金額$%s已超過您當前的余額$%d,請重新輸入!?%?(number,self.chkBalance())
時間.睡眠(0.5)
回歸?超越
否則:
打印?提醒:>?對不起,您沒有輸入金額數字,請重新輸入!'
時間.睡眠(0.5)
回歸?錯誤的
#?查詢余額
def?chkBalance(自我):
平衡?=?self . rw file . readfile(self . rw file . money file path)
回歸?平衡
班級?RWFile(對象):
" ""讀取和寫入金錢和總下註金額的文本文件" " "
def?__init__(self):
self.moneyFilePath?=?money.txt ' #?Txt文本必須是utf8格式。
self.amountFilePath?=?amount.txt ' #?Txt文本必須是utf8格式。
#?Read(返回讀取的數字)
def?readFile(self,文件路徑):
f?=?打開(文件路徑,' r ')
錢?=?閱讀()
如果?錢?==?''?然後呢。不是嗎?money.isdigit():
打印?存放玩家金錢的文件:?“%s”?的內容不是金額數字,系統已經恢復到初始值!'
錢?=?config.money #?恢復到配置中的貨幣編號。
f .關閉
回歸?int(貨幣)
#?寫
def?writeFile(self,文件路徑,?錢?=?0):
f?=?打開(文件路徑,' w ')
f.write(str(金錢))
f.close()
#?檢查配置文件、貨幣文件、金額文件。
def?chkFile(自身):
#?檢查配置文件
如果?不是嗎?str(config.base)。isdigit()?還是?不是嗎?str(config.money)。isdigit():
打印?配置文件config.py不正確!必須是前後沒有空格的數字!'
回歸?錯誤的
#?錢檔存在嗎?
如果?不是嗎?OS . path . is file(self . money file path)?還是?不是嗎?OS . path . is file(self . amount file path):
f1?=?打開(self.moneyFilePath,' w ')
f1.write(config.money)
f1.close()
f2?=?打開(self.amountFilePath,' w ')
f2.write('0 ')
f2.close()
回歸?真實的
回歸?真實的
def?main():
#?顯示遊戲規則
打印?遊戲規則
#?a=[]
#?為了什麽?我?在?範圍(2,15):
#?a .附錄(壹)
#?打印?a
銀行家?=?銀行家()
玩家?=?玩家()
rwFile?=?RWFile()
如果?不是嗎?rwFile.chkFile():
返回
什麽時候?真實:
banker . ready()#?銀行家準備好了
playComd?=?player . join game()#?系統提示玩家是否加入遊戲。
如果?playComd?==?問:
破裂
埃利夫?playComd:
#?加入
如果?player . bet():#?玩家下註
#?(在賭博中)下賭註
如果?banker . start():#?莊家開始遊戲,發了前兩張牌。
如果?player . again bet():#?玩家加註
banker . third card()#?莊稼發第三張牌
否則:
banker . third card()#?莊稼發第三張牌
否則:
#?不打賭
banker . end()#?莊家結束了遊戲。
否則:
#?及格
banker . end()#?莊家結束了遊戲。
繼續
如果?__name__?==?__main__ ':
主()
運行結果
-
莊家:>?準備開始,請準備進入!
莊家:>?下註規則:每位玩家下註的金額必須是$5的倍數(例如$5/$50/$100等。),而且我買得起!
系統:>?要不要加入這個遊戲(y/n,輸入默認y,5秒後默認n,退出輸入q)?:?
系統:>?玩家平衡?$18705
系統:>?玩家的總下註額是多少?$0
系統:>?玩家請下註(需要是5美元的倍數,通過,請直接輸入!):?55
玩家:>?打賭?$55
系統:>?玩家平衡?$18650
系統:>?玩家的總下註額是多少?$55
莊家:>?前兩張公開牌:梅花J和紅心a。
莊家:>?跨度:?2
系統:>?玩家請舉手(需要是5美元的倍數,站著請直接進入!):?55
玩家:>?養?$55
系統:>?玩家平衡?$18595
系統:>?玩家的總下註額是多少?$110
莊家:>?第三張牌:鉆石9
系統:>?不好意思!莊家贏了這場遊戲!
系統:>?玩家平衡?$18595
系統:>?玩家的總下註金額是否清零?$0
系統:>?請等待下壹場比賽開始。
-
莊家:>?準備開始,請準備進入!
莊家:>?下註規則:每位玩家下註的金額必須是$5的倍數(例如$5/$50/$100等。),而且我買得起!
系統:>?要不要加入這個遊戲(y/n,輸入默認y,5秒後默認n,退出輸入q)?:?q
系統:>?玩家退出遊戲!
& gt& gt& gt