Das langweiligste Spiel der Welt

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

Es ist mir gelungen, das langweiligste Spiel der Welt zu kreieren, daß einzig und allein daraus besteht, seine Zeit zu verplempern. Man kann Stufen aufsteigen, Gold gewinnen, Ausrüstungsgegenstände erbeuten und sein Mobiliar im Haus verbessern.

Code: Alles auswählen

# -*- coding: cp1252 -*-
import time, random

Stufe = 1
Erfahrung = 0
Erfahrung_b = 30
Gold = 0

Kleidung = [0, 0, 0, 0]
Kleidung_Anzeige = "Leinenfetzen"
Amulett = [0, 0, 0, 0]
Amulett_Anzeige = "leer"
Ring = [0, 0, 0, 0]
Ring_Anzeige = "leer"
K_P = 30
A_P = 30
R_P = 30

Zeitmaschine = 0
Gelddrucker = 0
Buecherregal = 0
Z_P = 30
G_P = 30
B_P = 30

while True:
    while Erfahrung >= Erfahrung_b:
        Stufe += 1
        Erfahrung -= Erfahrung_b
        Erfahrung_b *= 2
        print "Stufe aufgestiegen!"
        print
        time.sleep(1.1)
    
    print "[1] Character"
    print "[2] Haus"
    print "[3] Haendler"
    print "[4] Warten"
    Haupt_Auswahl = raw_input("Eingabe: ")
    print

    if Haupt_Auswahl == "1":
        print "Stufe     : " + str(Stufe)
        print "Erfahrung : " + str(Erfahrung) + " / " + str(Erfahrung_b)
        print "Gold:     : " + str(Gold)
        print
        print "Kleidung  : " + Kleidung_Anzeige
        print "Amulett   : " + Amulett_Anzeige
        print "Ring      : " + Ring_Anzeige
        print
        time.sleep(2.5)

    while Haupt_Auswahl == "2":
        print " -- Gold: -- " + str(Gold)
        print "Zeitmaschine - Stufe " + str(Zeitmaschine) + " ([1] Verbessern: " + str(Z_P) + " Gold)"
        print "Gelddrucker  - Stufe " + str(Gelddrucker) + " ([2] Verbessern: " + str(G_P) + " Gold)"
        print "Buecherregal - Stufe " + str(Buecherregal) + " ([3] Verbessern: " + str(B_P) + " Gold)"
        print "[4] Zurueck"
        Ausbauen = raw_input("Eingabe: ")
        print

        if Ausbauen == "1":
            if Z_P <= Gold:
                Gold -= Z_P
                Zeitmaschine += 1
                Z_P *= 2
                print "Zeitmaschine verbessert!"

            else:
                print "Nicht genug Gold!"

        if Ausbauen == "2":
            if G_P <= Gold:
                Gold -= G_P
                Gelddrucker += 1
                G_P *= 2
                print "Gelddrucker verbessert!"
                print
                time.sleep(1)

            else:
                print "Nicht genug Gold!"
                print
                time.sleep(1)
                
        if Ausbauen == "3":
            if B_P <= Gold:
                Gold -= B_P
                Buecherregal += 1
                B_P *= 2
                print "Buecherregal verbessert!"
                print
                time.sleep(1)

            else:
                print "Nicht genug Geld"
                print
                time.sleep(1)

        if Ausbauen == "4":
            Haupt_Auswahl = 0

    while Haupt_Auswahl == "3":
        if Stufe >= 10:
            print " -- Gold: -- " + str(Gold)
            print "[1] Kleidung kaufen" 
            print "[2] Amulett kaufen"
            print "[3] Ring kaufen"
            print "[4] Zurueck"
            Haendler = raw_input("Eingabe: ")

            if Haendler == "1":
                if Gold >= K_P:
                    Gold -= K_P # Bezahlen
                    K_P *= 2 # Preis (fuers naechste mal) erhoehen
                    Wert = random.randint(1, 2) # Eigenschaften bestimmen

                    if Wert == 1: # nach Option 1 generieren
                        Kleidung_neu = [int(random.randint(Stufe / 2, Stufe)), int(random.randint(Stufe / 2, Stufe)), 0, 0]
                        Kleidung_neu_Anzeige = "Lederrobe [Gold + " + str(Kleidung_neu[0]) + "] [Goldbonus: " + str(Kleidung_neu[1]) + " %]"

                    if Wert == 2: # nach Option 2 generieren]
                        Kleidung_neu = [0, 0, int(random.randint(Stufe / 2, Stufe)), int(random.randint(Stufe / 2, Stufe))]
                        Kleidung_neu_Anzeige = "Lederrobe [Erfahrung + " + str(Kleidung_neu[2]) + "] [EP-Bonus: " + str(Kleidung_neu[3]) + " %]"

                    print "Alter Gegenstand:   " + Kleidung_Anzeige # Gegenüberstellung alter u. neuer Gegenstand
                    print "Neuer Gegenstand:   " + Kleidung_neu_Anzeige
                    Entscheidung = raw_input ("[1] Neuen Gegenstand anlegen   [2] Alten Gegenstand beibehalten") # Entscheidung

                    if Entscheidung == "1": # Neue Kleidung anlegen
                        Kleidung = Kleidung_neu
                        Kleidung_Anzeige = Kleidung_neu_Anzeige
                        print "Neue Kleidung angelegt!"
                        print
                        time.sleep(1.3)

                    elif Entscheidung == "2": # Alte Kleidung beibehalten
                        print "Neue Kleidung weggeschmissen!"
                        print
                        time.sleep(1.3)

                else: "Nicht genug Gold!"
                    

            if Haendler == "2":
                if Gold >= A_P:
                    Gold -= A_P # Bezahlen
                    A_P *= 2 # Preis (fuers naechste mal) erhoehen
                    Wert = random.randint(1, 2) # Eigenschaften bestimmen

                    if Wert == 1: # nach Option 1 generieren
                        Amulett_neu = [int(random.randint(Stufe / 2, Stufe)), int(random.randint(Stufe / 2, Stufe)), 0, 0]
                        Amulett_neu_Anzeige = "Silberamulett [Gold + " + str(Amulett_neu[0]) + "] [Goldbonus: " + str(Amulett_neu[1]) + " %]"

                    if Wert == 2: # nach Option 2 generieren]
                        Amulett_neu = [0, 0, int(random.randint(Stufe / 2, Stufe)), int(random.randint(Stufe / 2, Stufe))]
                        Amulett_neu_Anzeige = "Silberamulett [Erfahrung + " + str(Amulett_neu[2]) + "] [EP-Bonus: " + str(Amulett_neu[3]) + " %]"

                    print "Alter Gegenstand:   " + Amulett_Anzeige # Gegenüberstellung alter u. neuer Gegenstand
                    print "Neuer Gegenstand:   " + Amulett_neu_Anzeige
                    Entscheidung = raw_input ("[1] Neuen Gegenstand anlegen   [2] Alten Gegenstand beibehalten") # Entscheidung

                    if Entscheidung == "1": # Neue Kleidung anlegen
                        Amulett = Amulett_neu
                        Amulett_Anzeige = Amulett_neu_Anzeige
                        print "Neues Amulett angelegt!"
                        print
                        time.sleep(1.3)

                    elif Entscheidung == "2": # Alte Kleidung beibehalten
                        print "Neues Amulett weggeschmissen!"
                        print
                        time.sleep(1.3)

                else: "Nicht genug Gold!"
            
            if Haendler == "3":
                if Gold >= R_P:
                    Gold -= R_P # Bezahlen
                    R_P *= 2 # Preis (fuers naechste mal) erhoehen
                    Wert = random.randint(1, 2) # Eigenschaften bestimmen

                    if Wert == 1: # nach Option 1 generieren
                        Ring_neu = [int(random.randint(Stufe / 2, Stufe)), int(random.randint(Stufe / 2, Stufe)), 0, 0]
                        Ring_neu_Anzeige = "Goldring [Gold + " + str(Ring_neu[0]) + "] [Goldbonus: " + str(Ring_neu[1]) + " %]"

                    if Wert == 2: # nach Option 2 generieren]
                        Ring_neu = [0, 0, int(random.randint(Stufe / 2, Stufe)), int(random.randint(Stufe / 2, Stufe))]
                        Ring_neu_Anzeige = "Goldring [Erfahrung + " + str(Ring_neu[2]) + "] [EP-Bonus: " + str(Ring_neu[3]) + " %]"

                    print "Alter Gegenstand:   " + Ring_Anzeige # Gegenüberstellung alter u. neuer Gegenstand
                    print "Neuer Gegenstand:   " + Ring_neu_Anzeige
                    Entscheidung = raw_input ("[1] Neuen Gegenstand anlegen   [2] Alten Gegenstand beibehalten") # Entscheidung

                    if Entscheidung == "1": # Neue Kleidung anlegen
                        Ring = Ring_neu
                        Ring_Anzeige = Ring_neu_Anzeige
                        print "Neuer Ring angelegt!"
                        print
                        time.sleep(1.3)

                    elif Entscheidung == "2": # Alte Kleidung beibehalten
                        print "Neuer Ring weggeschmissen!"
                        print
                        time.sleep(1.3)

                else: "Nicht genug Gold"
            
            if Haendler == "4":
                Haupt_Auswahl = 0
                print

        if Stufe < 10:
            print "Du musst Stufe 10 sein!"
            print
            Haupt_Auswahl = "0"
            time.sleep(1)

    if Haupt_Auswahl == "4":
        Gold_Runde = 0
        Erfahrung_Runde = 0
        Zeit = int(raw_input("Wie viele Sekunden moechtest du warten?"))
        
        while Zeit != 0:
            Gold += Stufe + Gelddrucker + Kleidung[0] + Amulett[0] + Ring[0]
            Gold += (Stufe + Gelddrucker + Kleidung[0] + Amulett[0] + Ring[0]) * (Kleidung[1] / 100)
            Gold += (Stufe + Gelddrucker + Kleidung[0] + Amulett[0] + Ring[0]) * (Amulett[1] / 100)
            Gold += (Stufe + Gelddrucker + Kleidung[0] + Amulett[0] + Ring[0]) * (Ring[1] / 100)

            Gold_Runde += Stufe + Gelddrucker + Kleidung[0] + Amulett[0] + Ring[0]
            Gold_Runde += (Stufe + Gelddrucker + Kleidung[0] + Amulett[0] + Ring[0]) * (Kleidung[1] / 100)
            Gold_Runde += (Stufe + Gelddrucker + Kleidung[0] + Amulett[0] + Ring[0]) * (Amulett[1] / 100)
            Gold_Runde += (Stufe + Gelddrucker + Kleidung[0] + Amulett[0] + Ring[0]) * (Ring[1] / 100)

            Erfahrung += Stufe + Buecherregal + Kleidung[2] + Amulett[2] + Ring[2]
            Erfahrung += (Stufe + Buecherregal + Kleidung[2] + Amulett[2] + Ring[2]) * (Kleidung[3] / 100)
            Erfahrung += (Stufe + Buecherregal + Kleidung[2] + Amulett[2] + Ring[2]) * (Amulett[3] / 100)
            Erfahrung += (Stufe + Buecherregal + Kleidung[2] + Amulett[2] + Ring[2]) * (Ring[3] / 100)

            Erfahrung_Runde += Stufe + Buecherregal + Kleidung[2] + Amulett[2] + Ring[2]
            Erfahrung_Runde += (Stufe + Buecherregal + Kleidung[2] + Amulett[2] + Ring[2]) * (Kleidung[3] / 100)
            Erfahrung_Runde += (Stufe + Buecherregal + Kleidung[2] + Amulett[2] + Ring[2]) * (Amulett[3] / 100)
            Erfahrung_Runde += (Stufe + Buecherregal + Kleidung[2] + Amulett[2] + Ring[2]) * (Ring[3] / 100)
        
            print str(Zeit) + " Sekunden verbleibend."
            time.sleep(1 - Zeitmaschine * 0.05)
            Zeit -= 1

        print
        print "Deine Wartezeit ist beendet."
        time.sleep(1)
        print "Du hast " + str(Gold_Runde) + " Gold erhalten."
        time.sleep(1.5)
        print "Du hast " + str(Erfahrung_Runde) + " Erfahrung erhalten."
        print
        time.sleep(1)

BlackJack

@Dexter1997: Das ist nicht nur langweilig sondern auch noch sehr schlechter Code. Gratulation. :twisted:
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

BlackJack hat geschrieben:@Dexter1997: Das ist nicht nur langweilig sondern auch noch sehr schlechter Code. Gratulation. :twisted:
Na ja, es ist wartungsfreier Code. Niemand wird ihn warten können oder wollen.
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Bei so einem kurzen Spaßprojekt gibt es auch nichts großartig zu überarbeiten ;)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dexter1997 hat geschrieben:Bei so einem kurzen Spaßprojekt gibt es auch nichts großartig zu überarbeiten ;)
Wenn Du Dich verbessern willst, könntest Du das aber damit tun... ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Dexter1997 hat geschrieben:Bei so einem kurzen Spaßprojekt gibt es auch nichts großartig zu überarbeiten ;)
Exakt dieses Programm eignet sich prima dafür, einmal ein grundsätzliches Refactoring zu betreiben und Struktur in den Code zu bringen.

Mach mal, du wirst eine Menge an Erfahrung gewinnen.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Dexter1997 hat geschrieben:Bei so einem kurzen Spaßprojekt gibt es auch nichts großartig zu überarbeiten ;)
Ich könnte ja jetzt aus meinem Kalender-Nähkästchen plaudern, aber das will hier ja immer niemand hören... :roll:

Muss mich meinen Vorschreibern anschließen. Gerade das Überarbeiten und "Verschönern" von Code ist super dazu geeignet, Erfahrungen zu sammeln. Wie kann ich dasselbe auf verschiedene Art lösen? Welche Modelle/Designs gibt es? Welche Datentypen gibt es und wofür eignen sie sich? Und so weiter... Und ganz nebenbei gewinnst Du mehr und mehr Einblick in die Denkweise von Programmierern...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Nadann schießt mal los...
Wie kann ich dieses Skript in seiner Lesbarkeit verbessern?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Du könntest mit den grundlegenden Dingen anfangen:
- PEP 8 lesen und beachten
- Aufteilung in Funktionen
- Doppelten (und dreifachen) Code zusammenfassen
- Kein globaler Zustand
- Trennung von Berechnungen und Anzeige
Das Leben ist wie ein Tennisball.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@Dexter1997: [...]
- Stringformatierung
- Testfälle -> Testen -> Fehler beheben
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Ich sitze jetzt hier in einer Schweizer Berghütte, habe nur mit viel Glück ab und zu eine Datenverbindung zur Außenwelt, und räume den Code auf. :mrgreen:
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

@/me: War das ein Hilferuf? :mrgreen:
Das Leben ist wie ein Tennisball.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

/me hat geschrieben:Ich sitze jetzt hier in einer Schweizer Berghütte, habe nur mit viel Glück ab und zu eine Datenverbindung zur Außenwelt, und räume den Code auf. :mrgreen:
Bist Du eingeschneit? :)
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

EyDu hat geschrieben:@/me: War das ein Hilferuf? :mrgreen:
Vorgestern kam ich noch zum Einkaufen nachdem 5 Leute das Auto angeschoben haben. Ansonsten ist die aktuelle Volksbelustigung hier der Besuch im nachbarlichen Kuhstall, in dem man in den letzten Tagen zwei Mal die Geburt eines Kälbchens erleben konnte. Der Vater war übrigens bei der Geburt nicht anwesend. :wink:

[find me]
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dann lass dich da oben mal nicht einschneien :wink:
/me hat geschrieben:[...]in dem man in den letzten Tagen zwei Mal die Geburt eines Kälbchens erleben konnte.
Hoffentlich war es bei beiden Geburten nicht dasselbe Kälbchen :D
Das Leben ist wie ein Tennisball.
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

EyDu hat geschrieben:Hoffentlich war es bei beiden Geburten nicht dasselbe Kälbchen :D
Ach woher denn? Dank copy.deepcopy haben wir absolut unabhängige Exemplare die allerdings in einer gemeinsamen Liste stehen.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

/me hat geschrieben:[find me]
Wenn ich bei mir zum Fenster 'rausschau, seh' ich absolutes Winter-Wonder-Land... Was ist nur aus der Schweiz geworden? :mrgreen:

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten