Warum ist Objekt befüllt?
Verfasst: Dienstag 29. November 2022, 10:52
Hallo,
ich bin Python Anfänger und würde gerne ein Kartenspiel programmieren.
Ich bin gerade erst mal dabei, dass Deck zu erstellen und den Spielern die ersten 5 Karten aus dem Deck zu geben.
Leider habe ich folgendes Problem. Ich habe zwei Objekte der Klasse Spieler. Dies beinhaltet die Attribute, Name und Kartenhand. Spieler 1 zieht 5 Karten aus dem Stapel, das funktioniert alles soweit. Spieler 2 hat aber leider auch immer die Karten von Spieler 1, woran kann das liegen? Wieso ist die Liste von SPieler 2 nicht Leer?
Hier der Code
Folgende Ausgabe:
ich bin Python Anfänger und würde gerne ein Kartenspiel programmieren.
Ich bin gerade erst mal dabei, dass Deck zu erstellen und den Spielern die ersten 5 Karten aus dem Deck zu geben.
Leider habe ich folgendes Problem. Ich habe zwei Objekte der Klasse Spieler. Dies beinhaltet die Attribute, Name und Kartenhand. Spieler 1 zieht 5 Karten aus dem Stapel, das funktioniert alles soweit. Spieler 2 hat aber leider auch immer die Karten von Spieler 1, woran kann das liegen? Wieso ist die Liste von SPieler 2 nicht Leer?
Hier der Code
Code: Alles auswählen
import random
Farben = ["Kreuz", "Pik", "Herz", "Karo"]
Werte = ["7", "8", "9", "10", "Bube", "Dame", "Koenig", "Ass"]
Skat = [(sFarbe, sWert) for sWert in Werte for sFarbe in Farben]
class Spieler:
name = ""
handKarten = []
def ziehe_Karte(self, karte):
self.handKarten.append(karte)
def lege_Karte(self, nummer):
if not self.handKarten:
return()
self.handKarten.pop(nummer)
return()
def zeige_Handkarten(self):
for i in range(0, len(self.handKarten)):
print(self.handKarten[i])
return()
def draw_card(lKarten):
if not lKarten:
print("Keine Karte mehr im Deck")
return ()
karte = lKarten.pop(0)
print("gezogene Karte %s %s" % karte)
return karte
def start_game(spieler, deck):
for i in range(5):
spieler.ziehe_Karte(draw_card(deck))
return ()
print ("Das Spiel beginnt mische das Deck")
random.shuffle(Skat)
print ("Deck gemischt kann losgehen")
p1 = Spieler()
p2 = Spieler()
p1.name = input("Spieler 1, wie lautet dein Name? ")
p2.name = input("Spieler 2, wie lautet Dein Name? ")
start_game(p1, Skat)
print("Spieler 1 Deine Karten")
p1.zeige_Handkarten()
print("Spieler 2 Deine karten")
p2.zeige_Handkarten()
Was übersehe ich? Wieso hat der Spieler 2, dieselben Karten wie Spieler 1?as Spiel beginnt mische das Deck
Deck gemischt kann losgehen
Spieler 1, wie lautet dein Name? Markus
Spieler 2, wie lautet Dein Name? Steffi
gezogene Karte Herz 7
gezogene Karte Karo Koenig
gezogene Karte Karo 9
gezogene Karte Pik 7
gezogene Karte Pik 8
Spieler 1 Deine Karten
('Herz', '7')
('Karo', 'Koenig')
('Karo', '9')
('Pik', '7')
('Pik', '8')
Spieler 2 Deine karten
('Herz', '7')
('Karo', 'Koenig')
('Karo', '9')
('Pik', '7')
('Pik', '8')