Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,修改21点游戏_Python_Python 2.7 - Fatal编程技术网

Python,修改21点游戏

Python,修改21点游戏,python,python-2.7,Python,Python 2.7,我需要帮助完成一项分配给我的任务 我被要求修改21点游戏下面的部分,以便庄家向每位玩家发一张牌,除非有平局,否则最高的牌获胜 我无法获得正确的代码 这就是我所拥有的: 对于仍在玩的玩家: 如果player.total>self.players.total: player.win() elif player.total10: val=10 其他: val=无 返回值 #此对象返回一个介于1和10之间的数字, #表示21点卡的价值 BJ_级甲板(卡牌甲板): #定义21点牌组 def填充(自我):

我需要帮助完成一项分配给我的任务

我被要求修改21点游戏下面的部分,以便庄家向每位玩家发一张牌,除非有平局,否则最高的牌获胜

我无法获得正确的代码

这就是我所拥有的:
对于仍在玩的玩家:
如果player.total>self.players.total:
player.win()
elif player.total
以下是代码的其余部分:
导入卡片、游戏
BJ_类卡(卡.卡):
#定义21点卡
ACE_值=1
@财产
def值(自身):
如果self.u面朝上:
val=BJ_Card.CARDS.index(self.Card)+1
如果val>10:
val=10
其他:
val=无
返回值
#此对象返回一个介于1和10之间的数字,
#表示21点卡的价值
BJ_级甲板(卡牌甲板):
#定义21点牌组
def填充(自我):
对于BJ_卡中的西服。西服:
对于BJ_卡中的卡。卡:
自我卡。附加(BJ_卡(卡,套装))
BJ_类手牌(卡片手牌):
#定义21点手
定义初始化(self,name):
超级(BJ_Hand,self)。_init
self.name=名称
定义(自我):
rep=self.name+“:\t”+super(BJ\u Hand,self)。\u str
如果为self.total:
rep+=“(“+str(self.total)+”)”
退货代表
@财产
def总计(自身):
#如果一张卡的值为None,则total为None
对于self.cards中的卡:
如果不是卡值:
一无所获
#添加卡值
t=0
对于self.cards中的卡:
t+=卡的价值
#检查手上是否有Ace
包含\u ace=False
对于self.cards中的卡:
如果card.value==BJ_card.ACE_值:
包含_ace=True
#将Ace视为1
包含_ace=1
返回t
def已损坏(自身):
返回self.total>21
BJ_类玩家(BJ_手):
#定义21点玩家
def正在碰撞(自身):
response=Games.askYesNo(“\n”+self.name+”,是否要另一个
卡片(是/否):“”)
返回响应==“y”
def半身像(自我):
打印(self.name,“半身像”)
self.lose()
def丢失(自我):
打印(self.name,“丢失”)
def win(自我):
打印(self.name,“wins”)
def推送(自):
打印(self.name,“draws”)
BJ_级经销商(BJ_手):
#定义21点庄家
def正在碰撞(自身):
返回自我总数<17
def半身像(自我):
打印(self.name,“半身像”)
def flip_第一张卡(自):
第一张卡片=自我卡片[0]
第一张卡片翻转()
B类游戏(对象):
#定义21点游戏
定义初始化(self,名称):
self.players=[]
对于名称中的名称:
player=BJ_player(姓名)
self.players.append(播放器)
self.dealer=BJ_经销商(“经销商”)
self.deck=BJ_deck()
self.deck.populate()
self.deck.shuffle()
@财产
def仍在播放(自我):
sp=[]
对于self.players中的玩家:
如果不是玩家。是否被抓获()
sp.append(播放器)
返回sp
def-附加卡(自身、玩家):
而不是player.is_busted()和player.is_hiting():
self.deck.deal([玩家])
打印(播放器)
如果player.is_busted():
player.bust()
def播放(自我):
#向所有玩家发放首张1张牌
self.deck.deal(self.players,每手=1)
对于self.players中的玩家:
打印(播放器)
对于在self.still_播放中的玩家:
如果player.total>self.players.total:
player.win()
elif player.total
是BJ_玩家类/对象的列表。您正在调用self.players.total,即尝试获取python列表的属性total,该列表不存在,因为它不是列表的属性。我想你是想做一些更像

for player in self.players:
    print(player.total)

这样,您就可以访问每个玩家的总数。但是,类BJ_Player似乎也没有total属性,因此您需要将其添加到类中,然后使用类似于上面给出的循环。

请解释代码的实际问题。你在哪一部分验证过作品?当前发生的情况与您预期发生的情况?我正在修改此21点游戏,以完成我的任务。游戏将获得最高的牌赢,我一直在修改的部分是:对于处于self.still\u playing状态的玩家:if player.total>self.players.total:player.win我的脑子里想不出如何衡量一张牌上的玩家
import Cards, Games

class BJ_Card(Cards.Card):
# Defines a Blackjack card
    ACE_VALUE = 1
    @property
    def value(self):
        if self.is_face_up:
            val = BJ_Card.CARDS.index(self.card) + 1
            if val > 10:
                val = 10
        else:
            val = None
        return val
    # This object returns a number between 1 and 10,
    # representing the value of a Blackjack card

class BJ_Deck(Cards.Deck):
# Defines a Blackjack deck
    def populate(self):
        for suit in BJ_Card.SUITS:
            for card in BJ_Card.CARDS:
                self.cards.append(BJ_Card(card, suit))

class BJ_Hand(Cards.Hand):
# Defines a Blackjack hand
    def __init__(self, name):
        super(BJ_Hand, self).__init__()
        self.name = name
    def __str__(self):
        rep = self.name + ":\t" + super(BJ_Hand, self).__str__()
        if self.total:
            rep += "(" + str(self.total) + ")"
        return rep
    @property
    def total(self):
    # If a card has the value None, then total is None
        for card in self.cards:
            if not card.value:
                return None
        # Add card values
        t = 0
        for card in self.cards:
            t += card.value
        # Check if hand contains an Ace
        contains_ace = False
        for card in self.cards:
            if card.value == BJ_Card.ACE_VALUE:
                contains_ace = True
        # treat Ace as 1
        contains_ace = 1
        
        return t
    def is_busted(self):
         return self.total > 21

class BJ_Player(BJ_Hand):
# Defines a Blackjack player
     def is_hitting(self):
        response = Games.askYesNo("\n" + self.name + ", do you want another 
card? (Y/N): ")
        return response == "y"
    def bust(self):
        print(self.name, "busts.")
        self.lose()
    def lose(self):
        print(self.name, "loses.")
    def win(self):
        print(self.name, "wins.")
    def push(self):
        print(self.name, "draws.")
    
class BJ_Dealer(BJ_Hand):
# Defines a Blackjack dealer
    def is_hitting(self):
        return self.total < 17
    def bust(self):
        print(self.name, "busts.")
    def flip_first_card(self):
        first_card = self.cards[0]
        first_card.flip()
    
class BJ_Game(object):
# Defines a Blackjack game
    def __init__(self, names):
        self.players = []
        for name in names:
            player = BJ_Player(name)
            self.players.append(player)
        self.dealer = BJ_Dealer("Dealer")
        self.deck = BJ_Deck()
        self.deck.populate()
        self.deck.shuffle()
    @property
    def still_playing(self):
         sp = []
        for player in self.players:
            if not player.is_busted():
                sp.append(player)
        return sp
    def __additional_cards(self, player):
        while not player.is_busted() and player.is_hitting():
            self.deck.deal([player])
            print(player)
            if player.is_busted():
                player.bust()
    def play(self):
        # Deal initial 1 card to all players
        self.deck.deal(self.players, per_hand = 1)
        for player in self.players:
            print(player)
        
        
        for player in self.still_playing:
            if player.total > self.players.total:
                player.win()
            elif player.total < self.players.total:
                player.lose()
            else:
                player.push()
        
    

    # Remove everyone's cards
        for player in self.players:
            player.clear()              
        

def main():
    print("\nWelcome to the Python Blackjack game.\n")
    names = []
    number = Games.askForNumber("How many players? (2-7): ", low = 2, high = 
8)
    print()
    i = 1
    for i in range(number):
        name = input("Enter player name: ")
        if name == "":
            names.append("Anon")
            print()
            i += 1
        else:
            names.append(name)
            print()
            i += 1
    game = BJ_Game(names)
    again = "Y"
    while again == "y" or again == "Y":
        game.play()
        again = Games.askYesNo("\nDo you want to play again?: ")
main()
self.players
for player in self.players:
    print(player.total)