Bu, MATLAB olmayan ilk programlama dilimdir, bu yüzden nesne yönelimli programlamada sorun yaşıyorum. Özellikle, bir blackjack oyunu simüle eden bir program üzerinde çalışıyorum. İşleyişe devam ediyor ancak oyuncularınÖzellik Yönlendirmeli Nesne Yönelimli Programlama
'u yapmasına izin vermesi için bazı yeni özelliklerin işlevselliği ekledim. Anlamak gerekirse, BJ Player bir dizi kart nesnesi olan bir nesnedir. Def_init sadece kendini ve isimleri parametre olarak kullanırdı, fakat startmonileri ekledim (oyuncuya bahis oynaması parayla başlıyordu.) BJ oyuncunun süper sınıfı en sonunda BJ elidir. Şimdi bu el için bir kart eklemek için bir yöntem çağrıldığında bir hata alıyorum. Aşağıda nerede
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)
budur o hata nerede (yukarıda kullanılan BJ modülüne aktarılır kartlar modülü) hata kaynaklanır: Bu benim .: olsun hatadır
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)
satır 47, vermek other_hand.add (kart)
AttributeError: 'tanımlama grubu' nesne hiçbir özelliği 'ni ekleyin'
bu er olsun sahiptir kartları işlemeye çalışırken ror. Yaptığım tek gerçek değişiklik, bahis parametresini ekleyebilmek için her şeyden önce çalıştı. Bu konuyu araştırdım ve güçlü bir anlayış elde edemedim. Herhangi bir yardım büyük takdir edilecektir. Teşekkür ederim!
Bazı daha fazla bilgi burada. Hatanın gerçekleştiğini düşünüyorum çünkü self.players'ı bir tupl listesi olarak değiştirdim. Bunu nasıl düzelteceğimi bilmiyorum.
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)
Buradaki hatanın başka bir bölümünü alıyorum. hat 169, oyunda self.deck.deal (self.players + [self.dealer], per_hand = 2)
Tam hata bloku İşte. Maalesef önce değil tümü gösteren: oyun self.deck.deal içinde ana game.Play (max_Cards) hattı 169, içinde, ana() hattı 258,
hattı 262 (self.players anlaşma self.give içinde + [self.dealer] per_hand = 2) çizgisi 65, (top_card, el) hattı 47 içinde vermek other_hand.add (kart) AttributeError: 'demet' nesnesi özniteliği 'var add '
hat 65, anlaşmada self.give (top_card, hand) –