これは私の最初のMATLABプログラミング言語ではないので、オブジェクト指向プログラミングに問題があります。具体的には、私はブラックジャックゲームをシミュレートするプログラムに取り組んでいます。それは機能していましたが、私はプレイヤーがベットをすることを可能にするいくつかの新しい機能を追加しようとしました属性エラーを伴うオブジェクト指向プログラミング
推測すると、BJ Playerはカードオブジェクトのコレクションであったオブジェクトです。 Def_initはパラメータとして自分自身と名前だけを持っていましたが、私はスタートマインドを追加しました(プレイヤーが賭けているお金を開始します).BJプレーヤーのスーパークラスは最終的にBJハンドです。その手札にカードを追加するメソッドを呼び出すときにエラーが発生するようになりました。以下
class BJ_Game(object):
""" A Blackjack Game. """
def __init__(self, names, startingmonies):
self.players = []
for name in names:
player = BJ_Player(name)
spot = names.index(name)
startingscratch = startingmonies[spot]
player_with_money = (name, startingscratch,0)
self.players.append(player_with_money)
Oエラーこれはここでエラーの発信元(上記使用BJモジュールにインポートされたカードモジュール)である場合である。
class Hand(object):
""" A hand of playing cards. """
def __init__(self):
self.cards = []
def __str__(self):
if self.cards:
rep = ""
for card in self.cards:
rep += str(card) + "\t"
else:
rep = "<empty>"
return rep
def clear(self):
self.cards = []
def add(self, card):
self.cards.append(card)
def give(self, card, other_hand):
self.cards.remove(card)
other_hand.add(card)
これは私が: を取得するエラーでありますで行47、ギブ other_hand.add(カード)
はAttributeError: 'タプル' オブジェクトが属性 '追加'
私は、このERを取得していませんカードを扱おうとしているときに。他のすべてが以前に働いたので、私が行った唯一の真の変化は、betパラメータを追加することです。私はこの問題を研究し、強い理解を得ることはできませんでした。どんな支援も大歓迎です。ありがとうございました!
ここにいくつかの情報があります。 self.playersをタプルのリストに変更したため、エラーが発生していると思います。私はこれをどうやって解決するかはわかりません。
for index, player in enumerate(self.players):
flag = 1
while flag:
try:
(name, players_cache,bet) = player
print(players_cache)
print("Current player:",name)
bet = int(input("Please select how much this player would like to wager: "))
if bet <= 0:
print("Bet must be greater than 0")
elif bet <= players_cache:
flag = 0
players_cache-=bet
player = (name,players_cache,bet)
self.players[index] = player
else:
print("Insufficient funds. PLayer only has",players_cache,"dollars available")
except ValueError:
print("Input must be a number\n")
# deal initial 2 cards to everyone
self.deck.deal(self.players + [self.dealer], per_hand = 2)
ここではエラーの別の部分があります。 line 169 in play self.deck.deal(self.players + [self.dealer]、per_hand = 2)
ここでは完全なエラーブロックがあります。申し訳ありません前にそれのすべてを示す:プレイ self.deck.dealに メインgame.play(max_Cards) ライン169、で、 メイン() ライン258で、
ライン262(self.players (カード番号) AttributeError: 'タプル'オブジェクトに属性がありません '追加 '
65行目、 –