Seite 1 von 1

Fehlersuche

Verfasst: Donnerstag 21. Juni 2018, 21:21
von DrZombeck
Hallo ihr lieben,
ich habe folgendes Problem und zwar ich wollte ein kleines Text Adventure schreiben und ich bin auch eigentlich fertig aber ich habe das Problem das ich am ende eine Fehlermeldung bekomme und ich habe das schon mehrfach überprüft doch ich verstehe nicht was ich falsch gemacht habe. Könnt ihr mir bitte Helfen?

Code: Alles auswählen

import random
random.seed()

p = int(30)
w = int(0)
l = int(0)
mh = int(10)
mht = int(0)
ha = int(0)


print("Dein Gegener ist Megadollon!")
print("Du musst entscheiden möchtest du dein schiff Reparieren mit einer Planke, möchtest du wasser schippen oder möchtest du den Hai angreifen.")
print("Wenn 100 L Wasser in dein Schiff gelaufen ist geht es unter! Also pass gut auf.")


while mh != 0:

    if ha == 3:
        print("Achtung der Hei greift an! Bring dich schnell in sicherheit!")
        l = int(random(1, 2))
        print("Der Hei hat dir",l,"Löcher in dein Schiff gebissen.")
        ha = int(0)

    else:
        w = l * int(4)
        print("Du hast",p,"Planken zum Reparieren. Du hast",l,"Löcher in dein Schiff. Du hast",w,"L Wasser im schiff.")
        print("Was möchtest du machen? Löcher reparieren (1), Wasser aus dem Schiff schöpfen (2) oder den Hei angreifen (3).")
        ak = input(int())

        if ak == 1:
            if l == 0:
                print("Du hast keine Löcher. Du fällst aber auf die Schautze.")
                ak = 4 
            else:
                p = p - int(1)
                l = l - int(1)
                print("Du hast ein Loch repariert. Du hast jetzt",l,"Löcher in dein Schiff.")
                ha = ha + int(1)
        elif ak == 2:
            if w == int(0):
                print("Du hast kein Wasser im schiff. Du fällst aber auf die Schautze.")
                ak = 4 
            else:
                w = w - int(10)
                if w < int(0):
                    w = 0
                else:
                    print("In dein schiff sind",w,"L Wasser.")
        elif ak == 3:
            mh = mh - int(1)
            print("Du hast den Hai getroffen und spürst wie er vor schmerzen schreit.")
        else:

print("Du hast gewonnen und Megadollon besiegt!") #Hier am ende habe ich den Fehler und der fehler lautet expected an indented block

Re: Fehlersuche

Verfasst: Donnerstag 21. Juni 2018, 21:25
von __deets__
Hast du das mal gegoogelt? Wozu benutzt man in Python Einrückungen? Und was stimmt dann mit deinem Print nicht?

Re: Fehlersuche

Verfasst: Freitag 22. Juni 2018, 06:31
von ThomasL

Code: Alles auswählen

    ak = input(int())
diese Zeile möchtest du auch nochmal überprüfen

Alle deine Variablen sind Ganzzahlen und damit vom Typ Integer,
es ist nicht nötig dort überall a = int(10) etc zu schreiben.

Zuweisungen wie x = x + 1 kannst du verkürzen in x += 1

Wenn du Python >= 3.6 benutzt, kannst du f-Strings verwenden

Code: Alles auswählen

print(f"Der Hai hat dir {l} Löcher in dein Schiff gebissen.")
Andernfalls ist es mit der .format Methode auch eleganter

Code: Alles auswählen

print("Der Hai hat dir {} Löcher in dein Schiff gebissen.".format(l))
Und wie schon gesagt, die letzte print Anweisung muss unter das else: eingerückt werden,
oder wenn es deine letzte Zeile sein soll, dann ist das else: darüber zuviel

Re: Fehlersuche

Verfasst: Freitag 22. Juni 2018, 08:07
von Sirius3
Zusätzlich zu dem was ThomasL schon geschrieben hat: random.seed macht hier keinen Sinn und kann weg. Die Variablennamen sind allesamt zu kurz, weil man raten muß, wass denn nun mh oder ha bedeutet. Benutze sprechende Namen und niemals l, denn das kann man von 1 nicht unterscheiden. Entgegen der Ankündigung, dass das Schiff untergehen kann, geht das nicht, statt dessen kann der Hai Hei Löcher reparieren und das Wasser fließt wieder von alleine aus dem Schiff; wenn man nicht vor langeweile vorher stirbt, weil man nur Option 3 auswählen kann oder durch die Eingabe von 7 sowieso sofort gewonnen hat.

Re: Fehlersuche

Verfasst: Freitag 22. Juni 2018, 10:15
von DrZombeck
Ich habe mir jetzt noch einmal alles angesehen und überarbeitet aber der Fehler tritt immer noch auf aber diesmal bei den aller letzten else:

Code: Alles auswählen

import random


planken = 30
wasser = 0
löcher = 0
leben = 10
angriff = 0


print("Dein Gegener ist Megadollon!")
print("Du musst entscheiden möchtest du dein schiff Reparieren mit einer Planke, möchtest du wasser schippen oder möchtest du den Hai angreifen.")
print("Wenn 100 L Wasser in dein Schiff gelaufen ist geht es unter! Also pass gut auf.")


while leben != 0:

    if angriff == 3:
        print("Achtung der Hei greift an! Bring dich schnell in sicherheit!")
        löcher = int(random(1, 2))
        print("Der Hei hat dir {löcher} Löcher in dein Schiff gebissen.")
        angriff = 0

    elif wasser == 100:
        print("Dein Schiff geht unter und der Hei hat dich gefressen.")
        break

    else:
        wasser = löcher * 4
        print(f"Du hast {planken} Planken zum Reparieren. Du hast {löcher} Löcher in dein Schiff. Du hast {wasser} L Wasser im schiff.")
        print("Was möchtest du machen? Löcher reparieren (1), Wasser aus dem Schiff schöpfen (2) oder den Hei angreifen (3).")
        aktion = int(input())
    
        if aktion == 1:
            if löcher == 0:
                print("Du hast keine Löcher. Du fällst aber auf die Schautze.")
                aktion = 4 
            else:
                planken -= 1
                löcher -= 1
                print(f"Du hast ein Loch repariert. Du hast jetzt {löcher} Löcher in dein Schiff.")
                angriff += 1
        elif aktion == 2:
            if wasser == 0:
                print("Du hast kein Wasser im schiff. Du fällst aber auf die Schautze.")
                aktion = 4 
            else:
                wasser -= 10
                if wasser < 0:
                    wasser = 0
                else:
                    print(f"In dein schiff sind {wasser} L Wasser.")
        elif aktion == 3:
            leben -= 1
            print("Du hast den Hai getroffen und spürst wie er vor schmerzen schreit.")


if wasser == 100:
    
else:
    print("Du hast gewonnen und Megadollon besiegt!")
[\python]

Re: Fehlersuche

Verfasst: Freitag 22. Juni 2018, 12:15
von Sirius3
Diesmal liegt es daran, dass es keine leeren Blöcke geben darf. Hier einfach die if-Bedingung umdrehen.

Re: Fehlersuche

Verfasst: Freitag 22. Juni 2018, 19:34
von ThomasL
nimm das
print("Dein Schiff geht unter und der Hei hat dich gefressen.")
vor dem break raus
und packe es unter
if wasser == 100:
am Ende.

Du musst jedoch an deiner Spiellogik arbeiten, im Moment kann man nur sinnvoll 10 x Auswahl 3 nehmen und dann ist der Hai erledigt.
Die anderen Optionen bewirken nichts.