|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是一个关于实现二人黑杰克/21点游戏的需求。根据要求,你需要编写一系列的函数,并在main()函数中调用这些函数。下面将逐个解释需要实现的函数及其功能。
a) instructions(): 这个函数应该简要介绍游戏规则和玩法。
b) makeADeckOf52()和shuffle: 这两个函数用于生成并洗牌一副有52个字符串元素的牌组。
c) update_hand_value(String c): 这个函数接受一个字符串参数,使用之前创建的字典来计算并更新玩家的手牌的黑杰克值。
d) dealAHand(deck): 这个函数从牌组中发出两张牌给玩家,并将这两张牌存入一个名为"hand"的列表。
e) displayHand(hand): 这个函数用于显示玩家的手牌。
f) bjHandValue(hand): 这个函数用于计算玩家手牌的总黑杰克值。
g) main(): 这个函数用于整个程序的流程控制,每轮玩家玩的时候需要初始化玩家的名字和黑杰克值,调用dealAHand()、displayHand()和bjHandValue()等函数来进行发牌和计算黑杰克值的操作,并判断胜负。
根据题目总要求,你还需要编写Player class来管理玩家对象的名字、手牌和黑杰克值等信息。
另外,你还需要创建一个Card class,它具有rank(牌面)和suit(花色)两个属性。可以为Card类添加一个名为bjValue的整型属性,用于计算卡牌的黑杰克值。你还需要根据Card类对之前的函数进行适当的修改,使其能够处理Card对象。
你还需要实现玩家可以选择是否继续要牌的功能。这意味着游戏将分为发牌和玩牌两个阶段。你需要在turn(deck)函数中实现这一部分的逻辑,直到玩家不再要牌或者手牌的黑杰克值超过21点为止。
最后,你需要在main函数中声明胜利者,即手牌总黑杰克值最高的玩家。
这是我浅浅写了一下的。但感觉有点问题
import random
class Player:
def __init__(self,name,bjvalue):
self.name=name
self.bjvalue=bjvalue
def __str__(self):
return(self.name+" has the bjvalue: "+self.bjvalue)
#def update_hand_value(self,newvalue):
#self.bjvalu=self.bjvalu+newvalue
class Card:
def __init__(self,r,s):
self.rank=r
self.suit=s
def __str__(self):
return(self.rank+self.suit)
def main():
instructions()
deck=makeADeckOf52()
i=0
while i<2:
playername=input("Enter your name: ")
total=dealAHand(deck,playername)
i=i+1
while total<21:
option=input("Do you want another card?[y/n] ")
if option=="n":
print("Your turn is over.")
else:
anothercard=random.choice(deck)
anothervalue=create_BJValue_LookUp(anothercard)
total=total+anothervalue
if total>21:
print(playername+", you lose.")
def instructions():
print("You two will play this Black Jack game in turn.")
print("Each of you can get two cards randomly and you can choose request or hold a card.")
print("The winner will be the person whose bjvalue is the closet to 21 and less than 21.")
def dealAHand(deck,playername):
chance=0
total=0
hand=[]
while chance<2:
card=random.choice(deck)
hand.append(card)
value=create_BJValue_LookUp(card)
total=total+value
chance=chance+1
display(hand)
bjHandValue(playername,total)
p=Player(playername,total)
return total
def makeADeckOf52():
#input: none
#output: a list of 52 strings
#process: pair the 4 suits with the 13 card rank values
#modeling the 52 cards:
#A-K of clubs,diamonds, hearts, spades
cardSuits = ["♣","♦","♥","♠"]
cardRanks = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
deck = []
for s in cardSuits:
for r in cardRanks:
deck.append(Card(r,s))
random.shuffle(deck)
return(deck)
def create_BJValue_LookUp(cardStr):
#assume card is in this format: A♣ , 10♥
#"♣","♦","♥","♠"
rank = cardStr[:len(cardStr)-1]
print(rank)
specialValues = {"A":1, "J":10,"Q":10,"K":10}
if rank in specialValues:
bjValue = specialValues[rank]
else:
bjValue = int(rank)
return(bjValue)
def display(l):
print(l)
def bjHandValue(n,t):
print(n+", your total BJvalue is "+t)
main()
|
|