2
カードを扱うプログラムを作成しようとしていますが、カードオブジェクトを1人のプレイヤーに渡すと、属性 "手"1つしか指定されていない場合、オブジェクトは複数のオブジェクトクラス属性に追加されます
コードは以下のとおりです。ご了承ください! stackoverflowインデント形式を正しく実行しなかった場合は、私の謝罪します。質問を投稿するのは初めてのことです。
import random
class Player(object):
def __init__(self,name,balance=100,hand=[]):
self.name = name
self.balance = balance
self.hand = hand
def reveal_all(self):
'''
This method prints out a player's hand.
'''
reveal = []
for x in self.hand:
reveal = reveal + [x.name]
print(reveal)
class Card(object):
def __init__(self,name,val):
self.name = name
self.val = val
card_ob1 = Card('2 of Hearts',2)
card_ob2 = Card('3 of Hearts',3)
card_ob3 = Card('4 of Hearts',4)
card_ob4 = Card('5 of Hearts',5)
card_ob5 = Card('6 of Hearts',6)
card_ob6 = Card('7 of Hearts',7)
card_ob7 = Card('8 of Hearts',8)
card_ob8 = Card('9 of Hearts',9)
deck = [card_ob1,card_ob2,card_ob3,card_ob4,card_ob5,card_ob6,card_ob7,card_ob8]
def plyr1_geta_card():
card = random.choice(deck)
player1obj.hand += [card]
deck.remove(card)
def dealer_geta_card():
card = random.choice(deck)
dealerobj.hand.append(card)
deck.remove(card)
player1obj = Player('Me',100)
dealerobj = Player('The House')
# Player 1 gets a card
plyr1_geta_card()
# The card is added to both the dealer and player hand attribute for some reason!
dealerobj.reveal_all()
player1obj.reveal_all()
ありがとうございますminhhn2910。それが私の問題を解決し、私はチュートリアルのリンクを読むでしょう。私のplyr1_geta_card機能を改善してくれてありがとう。私がそれをやっていた方法は、各選手オブジェクトのための別の機能が必要になります。あなたの道ははるかにクリーンです。 –
@black_lab_fan可能であればupvoteを考えてみるか、正解としてください:) – minhhn2910
私は投票しました。私はそれが記録されたことを通知されましたが、公開されていません。私はチェックボックスを逃しました...それを今クリックしてください。 –