From 50dcb7fc8acb36c2d241c2c5acdd9096cbcc52c8 Mon Sep 17 00:00:00 2001 From: jonas H Date: Sun, 23 Aug 2026 13:21:58 +0200 Subject: [PATCH] fix another finish bug in myrummy --- myrummy/READEME.txt | 9 ++++----- myrummy/game.py | 9 +++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/myrummy/READEME.txt b/myrummy/READEME.txt index 21b504e..50fd9f1 100644 --- a/myrummy/READEME.txt +++ b/myrummy/READEME.txt @@ -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 diff --git a/myrummy/game.py b/myrummy/game.py index e575e78..1ec3aa3 100644 --- a/myrummy/game.py +++ b/myrummy/game.py @@ -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):