Kleines Minispiel

Code-Stücke können hier veröffentlicht werden.
Antworten
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Dieses Programm stellt ein kleines Spiel dar, indem man rechnen kann. Man kann sich Goldmuenzen erwirtschaften durch Rechnen und Zahlenraten.
Das ist mein aller erstes, von mir geschriebenes Programm.
Es wurde in Python 2.6.1 geschrieben.
Falls ihr Verbesserungsvorschläge zur Komprimierung des Codes habt oder ähnliches, lasst es mich wissen!

Code: Alles auswählen

import random

rechnen = "rechnen"
zahlenraten = "zahlenraten"
ja = "ja"
gold = 0


spiel = raw_input ("Moechtest du ein neues Spiel beginnen? Tippe ja.")
while spiel == ja:
    abfrage = raw_input ("Moechtest du rechnen? Tippe rechnen. Zahlenraten? Tippe zahlenraten.")
    if abfrage == rechnen:
        aufgaben = 0
        while aufgaben != 10:
            aufgaben = aufgaben + 1
            zahl_a = random.randint (10, 30)
            zahl_b = random.randint (10, 30)
            zahl_c = zahl_a + zahl_b
            erwartetes_ergebnis = int (raw_input (str (zahl_a) + "+" + str (zahl_b) + "=") )
            if erwartetes_ergebnis == zahl_c:
                gold = gold + random.randint (80, 120)
            elif erwartetes_ergebnis != zahl_c:
                gold = gold - 100
        if aufgaben == 10:
            print "Du hast", gold, "Goldmuenzen erwirtschaftet."
            aufgaben = aufgaben - 10
    if abfrage == zahlenraten:
        print "Du musst eine Zahl zwischen 1 und 99 erraten und hast 6 Versuche."
        einsatz = int (raw_input ("Wie hoch ist dein Einsatz?") )
        if einsatz <= gold and gold > 0:
            geheimzahl = random.randint (1, 99)
            raten = 0
            versuche = 0
            gold = gold - einsatz

            while versuche != 6 and raten != geheimzahl:
                raten = int (raw_input ("Was raetst du?") )
                versuche = versuche + 1
                if geheimzahl < raten:
                    print "Die gesuchte Zahl ist kleiner!"
                elif geheimzahl > raten:
                    print "Die gesuchte Zahl ist groesser!"
            if raten == geheimzahl:
                print "Du hast die Zahl erraten!"
                gold = gold + einsatz * 2
                print "Du hast jetzt", gold, "Goldmuenzen."
                
            else:
                print "Alle Versuche verbraucht! Mehr Glueck beim naechsten Mal!"
                print "Du hast jetzt", gold, "Goldmuenzen."
        else:
            print "Entweder war der angegebene Wetteinsatz zu gering oder du hast nicht genug Geld!"

Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Die Abfrage am Anfang macht keinen Sinn. Außerdem kannst du an der Stelle explizit auf den String "ja" vergleichen.

Code: Alles auswählen

if abfrage == rechnen:
    ...
if abfrage == zahlenraten:
    ...
An dieser Stelle willst du eigentlich ein `elif` verwenden.

Deine while ``aufgaben != 10`` implementieren eine klassische for-Schleife. Dafür gibt es in Python das Idiom ``for i in range(10)`` Im Anschluss vergleichst du aufgaben auf 10, was eigentlich immer der Fall sein sollte. Diese Abfrage ist also nutzlos. Du kannst entweder else an dieser Stelle verwenden, oder es wie gesagt weglassen, da es ja in jedem Fall ausgeführt werden soll.

Code: Alles auswählen

if einsatz <= gold and gold > 0:
#besser
if 0 < einsatz <= gold:
Generell solltest du auf das Setzen der Klammern achten (PEP 8).


Als nächste Übung könntest du dein Programm in verschiedene Funktionen auslagern.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Danke für die Verbesserungsvorschläge, ich werde sie umsetzen. Die Idee mit den Funktionen werde ich auch als nächstes einbauen, ich steh kurz davor Funktionen zu lernen. im moment weiss ich nicht was funktionen sind :D vielleicht lassen die sich mit den geplanten erweiterungen kombinieren: auswahl der anzahl der aufgaben und alle 4 rechenarten. aber jetzt geh ich ersma pennen :D
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Löblich, so früh ins Bett zu gehen. Achja, wie die Zeit vergeht.

Wie kommt es eigentlich, dass so viele (junge) Schüler hier unterwegs sind?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

jbs hat geschrieben:Wie kommt es eigentlich, dass so viele (junge) Schüler hier unterwegs sind?
Weil wir älter werden? Meine Frau ist auch regelmäßig darüber erstaunt, wie früh man inzwischen schon den Führerschein haben kann, waren die Kinder hinter dem Steuer doch noch kürzlich bei ihr in der Kindergartengruppe... :mrgreen:
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Timtlio
User
Beiträge: 5
Registriert: Donnerstag 17. Januar 2013, 13:29

mutetella hat geschrieben:
jbs hat geschrieben:Wie kommt es eigentlich, dass so viele (junge) Schüler hier unterwegs sind?
Weil wir älter werden? Meine Frau ist auch regelmäßig darüber erstaunt, wie früh man inzwischen schon den Führerschein haben kann, waren die Kinder hinter dem Steuer doch noch kürzlich bei ihr in der Kindergartengruppe... :mrgreen:
So geht es wohl den meisten! Wie die Jahre verfliegen! Ich gehe eine xxxxx Livewette ein, dass man je älter man wird, einem die Zeit noch schneller vergeht!
Um mal on topic zu sein, danke für die gute Aufschlüsselung. Ich hab das mit Interesse gelesen und werde mich da auch mal dran setzen was ähnliches zu programmieren. Danke.
Zuletzt geändert von Anonymous am Dienstag 22. Januar 2013, 20:15, insgesamt 1-mal geändert.
Grund: Spamlink entfernt.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Timtlio hat geschrieben:So geht es wohl den meisten! Wie die Jahre verfliegen! Ich gehe eine mybet Livewette ein, dass man je älter man wird, einem die Zeit noch schneller vergeht!
Das wurde bereits nachgewiesen.
Das Leben ist wie ein Tennisball.
Antworten