求下列題目的程式碼
題目要求:
設計十點半的遊戲賭盤
===================
撲克牌點數
牌面A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K
A-10 點數分別為 1-10點,J, K, Q 皆為 0.5點。
牌面總點數大於10.5點,即為爆牌且該方不得再要牌。
強制停止閒家要牌階段的條件
1閒家爆牌,閒家立賠且閒家不得再要牌。
2閒家總牌面為一張10搭配一張J、Q或K,莊家立賠且閒家不得再要牌。
3閒家總牌面擁有五張牌且未爆牌,莊家立賠且閒家不得再要牌。
遊戲流程 (下列範圍皆包含上限及下限):
1輸入閒家人數,人數介於1-3人。
2輸入各閒家下注點數,點數介於1-10點,每個點數之間用一個空格區隔。
3閒家各派發一張牌,每張牌之間以一個空格區隔。
4輪流進入各閒家要牌階段,輸入Y表示要牌,輸入N表示停牌,接著輸入點數,可持續要牌,直到該位閒家停牌或符合前述強制停止要牌階段的條件後,才會進入下一位閒家的要牌階段。
5各閒家皆停牌後,莊家先發一張牌給自己,之後可選擇是否要牌,直到停牌或爆牌。
6若莊家爆牌,則須賠點給未爆牌的閒家且遊戲結束。
7莊家停牌後遊戲結束,將與未爆牌閒家分別比較點數,點數較大者勝,若點數相同則視為莊家勝。
8輸出莊家與各閒家的賠點或勝點,賠點以負號表示,勝點以正號表示。
輸入範例註解:
3 閒家人數為3人
2 10 5 各閒家下注點數
Q 3 10 各閒家獲派的第一張牌
Y 第一位閒家選擇要牌
2 第一位閒家獲得2
Y 第一位閒家選擇要牌
7 第一位閒家獲得7
N 第一位閒家選擇停牌
Y 第二位閒家選擇要牌
8 第二位閒家獲得8,總點數11導致爆牌,閒家立賠且閒家不得再要牌
Y 第三位閒家選擇要牌
Q 第三位閒家獲得Q,總牌面為10和Q,莊家立賠且閒家不得再要牌
8 莊家獲得第一張牌
Y 莊家選擇要牌
2 莊家獲得2
N 莊家停牌
輸出範例註解:
Player1 -2
Player2 -10
Player3 +5
Bank +7
import random
class Cards:
def init(self,name,allcards):
self.name = name
self.allcards = allcards
def shuffle_card(self):
print(list(set(self.allcards)))
def take_card(self):
z1 = self.allcards
random.shuffle(z1)
print(f'{self.name}您随机抽取的牌为:{z1[0]}')
def draw(self):
num = int(input('请输入指定的牌顺序:').strip())
print(f'{self.name}您抽取的第{num}张牌为:{self.allcards[num - 1]}')
def sorting(self):
print(self.allcards)
def end(self):
exit()
print('1.洗牌\n2.随机抽取一张\n3.指定抽取一张\n4.从小到大排序\n5.退出\n')
n = input('请输入用户名:').strip()
while 1:
allcards = []
lis1 = ['红心', '草花', '黑桃', '方片']
for i in lis1:
for k in range(1, 14):
if k == 1:
allcards.append((i, 'A'))
elif k == 11:
allcards.append((i, 'J'))
elif k == 12:
allcards.append((i, 'Q'))
elif k == 13:
allcards.append((i, 'K'))
else:
allcards.append((i, k))
num = int(input('请输入序号选择:').strip())
s1 = Cards(n,allcards)
dic = {1: s1.shuffle_card,2: s1.take_card,3: s1.draw,4: s1.sorting,5: s1.end}
dicnum
进阶版
import random
class Poker:
rank = ['A'] + [str(i) for i in range(2,11)] + list('JQK')
color = '黑桃 红心 方片 梅花'.split()
def init(self,username):
self.username = username
self.cards = [(c,r) for c in self.color for r in self.rank]
def shuffle(self):
random.shuffle(self.cards)
return self.cards
def _random(self):
card = random.choice(self.cards)
return f'{self.username}您随机抽取的牌为: {card[0]}{card[1]}'
def appoint(self):
num = input('请输入选项:').strip()
card = self.cards[int(num)-1]
return f'{self.username}您抽取的第{num}张牌为: {card[0]}{card[1]}'
def sort(self):
self.sort_card = [(c,r)for r in self.rank for c in self.color]
return self.sort_card
def exit_out(self):
exit('成功退出程序')
def main():
choice_dict = {
1 : Poker.shuffle,
2 : Poker._random,
3 : Poker.appoint,
4 : Poker.sort,
5 : Poker.exit_out,
}
while 1:
username = input('请输入用户名:').strip()
obj = Poker(username)
print(
'''
1.洗牌
2.随机抽取一张
3.指定抽取一张
4.从小到大排序
5.退出
'''
)
choice_num = input('请输入选项:').strip()
print(choice_dictint(choice_num))
if name == 'main':
main()