Ein einfaches Rollen-"Spiel" bestehend aus Text

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

Hier mal ein Versuch ein kleines "Spielchen" zu programmieren
Falls euch Bugs auffallen meldet sie mir bitte! :)
Wenn ihr mir auch noch sagen könnt wo man was verbessern kann, bin ich gerne dafür sehr offen!

Code: Alles auswählen

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

Leben = 100
Max_Leben = 100
Aktionspunkte = 10

Ruestung = 0
Stufe = 1
Waffenwert1 = 2
Waffenwert2 = 5
Goldmuenzen = 500
Monsterfell = 0
Heiltrank = 0

Ruestung_Preis = 200
Waffe_Preis = 200
Leben_Preis = 200
Monster_Gold = 2000

F_Schadenswert1 = 1
F_Schadenswert2 = 4
F_Ruestung = 0
F_Max_Leben = 60
F_Leben = F_Max_Leben


print "Die Anleitung kriegst du, wenn du die Ziffer [5] in der Auswahl tippst." 
print

while Leben > 0 and Aktionspunkte > 0:

    Schaden = random.randint (Waffenwert1, Waffenwert2)
    
    print "[1] Characktereigenschaften anschauen" 
    print "[2] Zum Haendler"
    print "[3] Auf Monsterjagd gehen"
    print "[4] Inventar oeffnen" 
    print
    print "Du hast " + str(Aktionspunkte) + " Aktionspunkte, " + str(Goldmuenzen) + " Goldmuenzen und " + str(Leben) + " Lebenspunkte."
    print
    eingabe = int (raw_input ("Zahl eingeben um etwas zu tun:") )
    print

    if eingabe == 1:
        print "Waffe:  " + str(Waffenwert1) + "-" + str(Waffenwert2) + " Schaden"
        print "Ruestungsstufe: " + str(Stufe)
        print "Lebenspunkte: " + str(Leben) + "/" + str(Max_Leben)
        print

    while eingabe == 2:
        print "Du hast " + str(Goldmuenzen) + " Goldmuenzen"
        print "[1] Heiltrank kaufen (Kostet 100 Goldmuenzen und heilt 50 Lebenspunkte)"
        print "[2] Waffe verbessern (+ 2 Schaden kostet " + str(Waffe_Preis) + " Goldmuenzen)"
        print "[3] Bessere Rüstung (+ 2 Rüstung kostet " + str(Ruestung_Preis) + " Goldmuenzen)"
        print "[4] Aktionspunkte kaufen (50 Goldmuenzen pro 1 Punkt)"
        print "[5] Monsterfelle verkaufen"
        print "[6] Leben erweitern (+ 20 Leben kostet " + str(Leben_Preis) + " Goldmuenzen"
        print "[7] Zurueck zur Auswahl"
        print
        eingabe2 = int (raw_input ("Was willst du tun?") )
        if eingabe2 == 1:
            if Goldmuenzen >= 100:
                Heiltrank = Heiltrank + 1
                Goldmuenzen = Goldmuenzen - 100
                print "Handel erfolgreich abgeschlossen."
                print
            elif Goldmuenzen < 100:
                print "Du hast nicht genug Geld!" 
                print
        if eingabe2 == 2:
            if Goldmuenzen >= Waffe_Preis:
                Waffenwert1 = Waffenwert1 + 1
                Waffenwert2 = Waffenwert2 + 2
                Goldmuenzen = Goldmuenzen - Waffe_Preis
                F_Schadenswert1 = F_Schadenswert1 + 1
                F_Schadenswert2 = F_Schadenswert2 + 2
                print "Schaden erfolgreich erweitert."
                print
                Waffe_Preis = Waffe_Preis + 100
            elif Goldmuenzen < Waffe_Preis:
                print "Du hast nicht genug Geld!"
                print
        if eingabe2 == 3 and Stufe < 9:
            if Goldmuenzen >= Ruestung_Preis:
                Ruestung = Ruestung + 0.1
                Stufe = Stufe + 1
                F_Ruestung = F_Ruestung + 0.1
                Goldmuenzen = Goldmuenzen - Ruestung_Preis
                Ruestung_Preis = Ruestung_Preis + 100
                print "Ruestung erfolgreich verbessert!"
                print
            elif Goldmuenzen < 200:
                print "Du hast nicht genug Geld!"
                print
            elif Stufe == 9:
                print "Deine Ruestung kann man nicht mehr verbessern."
                print 
        if eingabe2 == 4:
            anzahl_Aktionspunkte = int (raw_input ("Wieviele Aktionspunkte willst du kaufen?") )
            preis = 50 * anzahl_Aktionspunkte
            if preis <= Goldmuenzen:
                Goldmuenzen = Goldmuenzen - preis
                Aktionspunkte = Aktionspunkte + anzahl_Aktionspunkte
                print "Du hast " + str(anzahl_Aktionspunkte) + " Aktionspunkte für " + str(preis) + "Goldmuenzen gekauft."
                print
            elif preis > Goldmuenzen:
                print "Du hast nicht genug Geld."
                print
        if eingabe2 == 5:
            preis = Monsterfell * 100
            Goldmuenzen = Goldmuenzen  + preis
            print "Du hast all deine Felle verkauft und " + str(preis) + " Goldmuenzen erwirtschaftet."
            print
        if eingabe2 == 6:
            if Goldmuenzen >= Leben_Preis:
                Goldmuenzen = Goldmuenzen - Leben_Preis
                Max_Leben = Max_Leben + 20
                Leben = Leben + 20
                F_Max_Leben = F_Max_Leben + 20
                F_Leben = F_Max_Leben
                Leben_Preis = Leben_Preis + 100
                print "Leben erfolgreich erweitert:"
                print
            else:
                print "Du hast nicht genug Geld!"
                print
        if eingabe2 == 7:
            eingabe = 0
            print
                       
    while eingabe == 3:
        print "[1] Kaempfe gegen Monster!"
        print "[2] Zurueck zur Auswahl"
        print
        eingabe2 = int (raw_input ("Moechtest du gegen Monster kämpfen?") )
        print
        if eingabe2 == 1:
            Aktionspunkte = Aktionspunkte - 1
            print "Du begegnest einem Monster!!!"
            print "Auf in den Kampf!"
            print
            while Leben > 0 and F_Leben > 0:
                Leben = Leben - random.randint (F_Schadenswert1, F_Schadenswert2) * (1 - F_Ruestung)
                F_Leben = F_Leben - random.randint (Waffenwert1, Waffenwert2) * (1 - Ruestung)
                print "Ihr schlagt euch!"
                print "Dein Leben: " + str(Leben) + "/" + str(Max_Leben)
                print "Leben des Gegners: " + str(F_Leben) + "/" + str(F_Max_Leben)
                print
                time.sleep(1)    
            if Leben > 0 and F_Leben <= 0:
                print "Du hast den Kampf gewonnen und dir Gold dazuverdient"
                Goldmuenzen = Goldmuenzen + Monster_Gold
                Monster_Gold = Monster_Gold + 500
                eingabe = 0
                Monsterfell = Monsterfell + 1
                F_Leben = F_Max_Leben
            else:
                print "Du hast den Kampf verloren."
                print
                eingabe = 0
                         
        if eingabe2 == 2:
            eingabe = 0
             
    while eingabe == 4:
        print "Du hast " + str(Heiltrank) + " Lebenstraenke (Benutzen [1])"
        print "Du hast " + str(Monsterfell) + " Monsterfelle"
        print "[2] Zurueck zur Auswahl"
        print
        eingabe2 = int (raw_input ("Was willst du tun?") )
        if eingabe2 == 1 and Heiltrank > 0:
            Heiltrank = Heiltrank - 1
            Leben = Leben + 50
            if Leben > Max_Leben:
                differenz = Leben - Max_Leben
                Leben = Leben - differenz
        elif Heiltrank <= 0:
            print "Du hast keine Lebenstraenke."
            print
        if eingabe2 == 2:
            eingabe = 0
            print
            
    if eingabe == 5:
        print "Du hast 10 Aktionspunkte und 500 Goldmuenzen als Startkapital."
        print "Deine Lebenspunkte und Aktionspunkte dürfen nicht unter 0 sinken, sonst hast du das Spiel verloren."
        print "Toete Monster, kaufe Gegenstaende, steige Stufen auf und entdecke das Spiel!"
        print "Das Ziel des Spiels ist simpel: Immer stärker werden, mehr Schaden austeilen, mehr einstecken können, und so weiter!"
        print


if Leben <= 0:
    print "Du bist gestorben, weil du keine Lebenspunkte mehr hast!"

elif Aktionspunkte <= 0:
    print "Du bist vor lauter Erschoepfung gestorben, weil du keine Aktionspunkte mehr hast!"
Dieses Spiel läuft zumindest wenn man Python 2.6.1 hat, bei welchen Versionen das sonst noch läuft, weiß ich leider nicht.
hab gehört ab version 3.0 muss man um die print anweisungen klammern machen: print ("Hallo") Deswegen muss das nich überall laufen
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Versuche mal deinen Code in verschiedene Funktionen zu zerteilen. Ich habe wenig Lust, mir solchen Spagetticode anzusehen :wink:
[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

Jo, gute idee. mach ich denn morgen, jetzt ist es schon so spät...
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

1. X = X + 1 ist equivalent zu x += 1
2.
print "BLA"
print
auch zu print "BLA\n"
3. Benutze Stringformatierung statt Konkatenation also kein "a" + str(zahl) sondern "a%f" % zahl
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Antworten