Frage zu Mini-Textspiel

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Leo
User
Beiträge: 8
Registriert: Dienstag 16. September 2003, 19:32
Wohnort: Detmold

Hallo...

Ich habe gestern dieses typische Streichholzspiel in Python umgesetzt..
Es liegen 21 Streichhölzer auf dem Tisch.. spieler 1 und spieler 2 nehmen abwechslend eins, zwei oder drei Strechhölzer vom Stapel. Wer das letze nimmt hat verloren.

Für alle die ein wenig Gehirn haben und sich an die Anleitung, sprich: maximal drei Steichhölzer vom Staple zu nehmen, halten, für die funktioniert das Spiel, aber wenn nun jemand mehr als 3 Streichhölzer zum Abzug eingibt, dann zieht er eben auch die Höhere Anzahl ab.
Wie könnte ich das machen dass das Programm in einem solchen Falle dann den Spieler auffordert erneut eine Zahl im Raum von 1-3 einzugeben?
Quelltext:

Code: Alles auswählen

print "Dies ist ein Streichholzwegnehmspiel."

print "Das Spiel ist auf zwei Spieler ausgelegt und funktioniert so:"

print "Hier liegen 21 Streichhölzer."

print "Jeder von euch nimmt nun abwechselnd 1, 2 oder 3 Hölzer"

print "von dem Stapel. Wer den lezten Stab bekommt hat verloren."

spieler1name = raw_input("Wie heißt du, Spieler 1? ")

spieler2name = raw_input("Wie heißt du, Spieler 2? ")

names = [spieler1name, spieler2name]

for name in names:

    print "Okay, " +name

print "Das Spiel beginnt nun."

ergebnis=21

verlierer=1

while ergebnis>1:

    wegnahme1 = int(raw_input("Wie viele Streichhölzer nimmst du weg, " +spieler1name+ "? "))

    print "Jetzt bist du dran, " +spieler2name+ "!"

    print "Es sind noch ", ergebnis - wegnahme1, "Hölzer über."

    ergebnis -= wegnahme1

    if ergebnis==1:

        verlierer=2

        break

    wegnahme2 = int(raw_input("Wie viele nimmst du weg? "))

    print "Nun sind noch ", ergebnis - wegnahme2 , "Hölzer über."

    ergebnis -= wegnahme2

    print "Nun bist wieder du dran, " + spieler1name

if verlierer==2:

    print "Herzlichen Glückwunsch, "+spieler1name+"!"

else:

    print "Herzlichen Glückwunsch, "+spieler2name+"!"

print "Du hast gewonnen.--->SPIELENDE"

Greetz Leo

PS: Ich hoffe es ist nicht zu komisch geschrieben Für Kritik bin ich jederzeit offen.. :wink:
Ein wahrer Freund ist der,
der die Melodie deines Herzens kennt;
und sie dir vorsingt,
wenn du sie vergessen hast.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Ich hab mir mal erlaubt, dein Quelltext in code-Tags zu setzten, da er sonst unlesbar ist...

ist eigentlich ganz einfach:

Code: Alles auswählen

while 1:
    weg=raw_input("Wieveile weg (zwischen 1 und 3)? ")
    try:
        weg=int(weg)
        if 1<=weg<=3:
            break
    except ValueError:
        pass
nun liegt das Ergebniss in weg. Es wird sooft gefragt bis eine sinnvolle Eingabe (also nur Zahlen) gemacht wurde, die zwischen 1 und 3 liegt...
Leo
User
Beiträge: 8
Registriert: Dienstag 16. September 2003, 19:32
Wohnort: Detmold

HI..

@Milan.. ich wollte es auch so in einen Code setzen, aber meine bescheidene Persönlichkeit wusste leider nicht wie*g*

Danke für die Hilfe..
*freu* Jetzt funktioniert mein Spiel wenigstens auch ganz..

Greetz Leo
Ein wahrer Freund ist der,
der die Melodie deines Herzens kennt;
und sie dir vorsingt,
wenn du sie vergessen hast.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Ist aber eigentlich ein "sinnlos"-Spiel, da Spieler 2 immer gewinnt. Man muss ja nur die Anzahl der Hölzer, die Spieler 1 wegnimmt auf 4 aufstocken und schon kann man nicht verlieren... :roll:
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

naja, wenn ich da an meine allerersten Programmierversuche denke :D
wie hab ich mich gefreut, als mein erstes Programm lief. Wenn ich mich recht erinne wars eine Würfelsimulation, nach drücken der Leertaste auf meinem C64 schreib er eine Zahl zwischen 1 und 6 auf den Bidschirm. Also auch sinnlos, nen Würfel bekamman damals für ein paar Schillinge. Danach hab ich dann versucht das ganze mit Textgrafik zu machen, wobei ein nettes Würfelspiel mit 3 Würfeln rausgekommen ist :)

Ich finde es gut, daß leo selber überlegt, was er mit Python machen könnte. Gerade damit lernt man am meisten.


Gruß

Dookie
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hab ich ja auch nix dagegen, aber ich denke man müsste eine andere Zahl als gerade 21 nehmen. Ich hab jetzt nicht nachgeschaut, ob dann nicht Spieler 1 einen Vorteil erlangt, aber ich glaube nicht. :wink:

@ Dookie: mein erstes Spiel war ähnlich. Man gibt eine Zahl ein (meintwegen 3000) und der Computer zählt dann von 0 an aufwärts. desto näher man dann an der selbstfestgelegten Zahl Space drückt, desto besser. Dann hat man nämlich gewonnen und wird in eine Highscore eingetragen ;) Das war noch, als gerade Win 3.1 herauskam und ich mit Turbo Pascal experimentiert habe :lol: :)
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Milan,

wenn die Anzahl der Streichhölzer minus 1 durch 4 teilbar ist, hat Spieler1 den Vorteil, ist die Anzahl minus 1 nicht durch 4 Teilbar kann sich Spieler1 den Vorteil sichern indem er dafür sorgt, daß die Anzahl der übergebliebenen Streichhölzer wieder minux 1 durch 4 teilbar ist.
Ich habe auch nicht nachgeschaut, habs mir gerade selber erschlossen.


Gruß

Dookie
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Ich bin auch der Meinung, dass propieren über Studieren geht. Ich bin schließlich selbst durch abkupfern und ausprobieren zur Programmierung gekommen. Über Basic. Was anderes lief ja nicht. War gleichzeitig das OS :shock: Die Methode mag mühsam sein, aber was man damit lernt, vergisst man nicht.

Mein erstes Spiel war Willhelm Tell auf einem Commodore 4032 (24 * 40 Zeichen Display, schickes grün auf schwarz). Der Apfel wurde in einer zufälligen Entfernung von der Armbrust in eine zufällig gewählte Höhe geworfen, wobei die Höhe aber mindestens so hoch war, dass der Apfel getroffen werden konnrte. Denn Pfeil hatte ja nur eine feste Geschwindigkeit. Und bei einem Treffer flog der Apfel in tausend Stücke. Wie gesagt, alles auf einem ASCII Bildschirm. Sollte man vielleicht mal für die bash wiederholen?

Hans
Antworten