fix another finish bug in myrummy

This commit is contained in:
2026-08-23 13:21:58 +02:00
parent f1055fd6d0
commit 50dcb7fc8a
2 changed files with 9 additions and 9 deletions
+4 -5
View File
@@ -25,7 +25,7 @@ Befehle:
n neue leere Gruppe
a G1 G2 Gruppen verbinden
s G POS Gruppe nach POS teilen
d Karte ziehen
d Karte ziehen (beendet den Zug)
u letzte Änderung rückgängig
sort Hand sortieren
finish Zug prüfen/beenden
@@ -42,10 +42,9 @@ Regeln der Implementierung:
- Wer keine Handkarten mehr hat, gewinnt
- Zug = legen ODER ziehen, nie beides:
- Wer gelegt hat, darf nicht mehr ziehen
- Wer gezogen hat, darf nicht mehr legen und beendet den Zug mit finish
- Nach dem Ziehen ist finish auch ohne 30 Punkte erlaubt (man darf passen,
solange man noch nicht eröffnet hat)
- Leerer Tisch + nicht gezogen: finish verlangt, dass man legt oder zieht
- Wer zieht, beendet damit automatisch seinen Zug (kein finish nötig),
auch ohne 30 Punkte - so kann man passen, bis man eröffnen kann
- Leerer Tisch + nichts getan: finish verlangt, dass man legt oder zieht
Hinweis: Das ist eine bewusst einfache CLI-Version. Die Regeln für Sonderfälle
wie Joker-Rücknahme, 1-13-Runden, Punktwertung nach Spielende usw. können später
+5 -4
View File
@@ -71,7 +71,7 @@ class Game:
print(' n leere neue Gruppe')
print(' a G1 G2 Gruppen verbinden')
print(' s G POS Gruppe nach POS teilen')
print(' d ziehen')
print(' d ziehen (beendet den Zug)')
print(' u undo')
print(' sort Hand sortieren')
print(' finish Zug prüfen/beenden')
@@ -83,7 +83,6 @@ class Game:
return n-1
def move_hand(self,h,g):
if self.drew: raise ValueError('Du hast bereits gezogen - damit ist dein Zug beendet.')
hi=self.idx(h,len(self.p.hand)); self.save()
card=self.p.hand.pop(hi)
if g.lower()=='new': self.table.append([card])
@@ -108,9 +107,11 @@ class Game:
def draw(self):
if self.melded: raise ValueError('Du hast bereits Karten gelegt - ziehen ist dann nicht mehr erlaubt.')
if self.drew: raise ValueError('Du hast bereits gezogen.')
if not self.deck: raise ValueError('Stapel leer.')
self.save(); self.p.hand.append(self.deck.pop()); self.p.hand=sort_hand(self.p.hand); self.drew=True
card=self.deck.pop(); self.p.hand.append(card); self.p.hand=sort_hand(self.p.hand)
print(f'\n {self.p.name} zieht {card.text()} und beendet damit den Zug.')
self.turn=1-self.turn; self.drew=False; self.melded=False; self.history=[]
self.handover=True
def finish(self):
if any(not g or not valid(g, self.wrap) for g in self.table):