fix another finish bug in myrummy
This commit is contained in:
+4
-5
@@ -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
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user