Goto Probleme

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Usp93

Betreff: Goto Probleme

BeitragMo, Apr 28, 2008 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin zusammen, bin neu hier und habe Probleme mit Goto:
Ich wollte ein kleines Raumadventure erstellen, wo in jedem Raum ein
rundenbasierender Kampf im FinalFantasy Stil auf einen wartet.
Das Problem:Damit der Game Over Bildschirm erscheint und 2 sek. später das Programm endet sobald man stirbt wollte ich mit Goto direkt vor Ende
springen. Leider sagt mein Compiler wie ichs auch anstelle entweder Expecting Identifier oder undefined label obwohl mein Punkt sogar bei den
Labels angezeigt wird. Ich habe in der "kampffunction" dies hier eingebaut:

Repeat
attacke ;Spieler greift an
If gegnerhp>0 Then
gegnerattacke ;Falls der Gegner noch lebt, greift er an
EndIf
If hp<1 Then
Cls
write"Game Over!!!";Falls man selber tot ist erscheint Game Over und
Goto ende das Programm springt an den Marker "ende"
EndIf
Until gegnerhp<1


Den Marker ende habe ich im Hauptprogramm wie folgt definiert:
....
....
....
.ende
End

Aus irgendeinem Grund sagt er undefined label!?
Danke für Hilfe:D
USP93

BtbN

BeitragMo, Apr 28, 2008 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Goto ist böse und sollte vermieden werden.
Versuche den Code ohne Goto aufzubauen.
 

Usp93

BeitragMo, Apr 28, 2008 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
BtbN hat Folgendes geschrieben:
Goto ist böse und sollte vermieden werden.
Versuche den Code ohne Goto aufzubauen.

...ja ich weiß, aber ich frag mich wie zum Henker ich das anstellen soll:D
Gibt es noch eine Möglichkeit iwie von einem Punkt in einer Funktion das Programm zu beenden??

Blackside

BeitragMo, Apr 28, 2008 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstelle eine Function die z.B. Ende heißt und füre sie aus wenn hp < 0 ist anstatt mit Goto.
In die Function schreibst du dann End...

Also:
If hp < 0 then Ende()
...
Function Ende()
end
end function
  • Zuletzt bearbeitet von Blackside am Mo, Apr 28, 2008 19:59, insgesamt einmal bearbeitet

BtbN

BeitragMo, Apr 28, 2008 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
End
 

Usp93

BeitragMo, Apr 28, 2008 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Blackside hat Folgendes geschrieben:
Erstelle eine Function die z.B. Ende heißt und füre sie aus wenn hp < 0 ist anstatt mit Goto.
In die Function schreibst du dann End...

Also:
If hp < 0 then Ende()
...
Function Ende()
end
end function


Yo, danke!!!
LG USP

prolapper

BeitragMo, Apr 28, 2008 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach halt einfach (is noch einfacher, als funktion erstellen)

Code: [AUSKLAPPEN]
Repeat
...
Until Keyhit(1) Or hp < 0
End
P.S: ICH SUCHE NOCH EINEN GRAFIKER UND EINEN PROGRAMMIERER FÜR EIN RPG
E-Mail: prolapper@gmx.net

ShadowJumper

BeitragMo, Apr 28, 2008 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
auf die eigentliche Frage wurde noch nicht so eingegangen, was aber wegen nem anderm Post oben net nötig wär^^ (der, der erklärt, wies anders geht)

trozdem ma ne vermutung von mir:
Goto ende das Programm springt an den Marker "ende" müsste
Goto ende ;das Programm springt an den Marker "ende" heißen
oder
es ist nicht möglich von einer Funktion herraus zu springen (bin mir nicht sicher, kann mich irren)
Bilder kostenlos hosten
lest und weint:
RAM - 512 MB; GrafikRAM - 32 MB; CPU - 800 MHz
Ps: ... und weint (vor lachen)
 

Dreamora

BeitragMo, Apr 28, 2008 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
nun, goto fragen werden auch nicht beantwortet, da goto für was anderes als um ein multi-loop exit / continue zu machen nicht akzeptabel ist und im beginner corner schon garnicht.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Usp93

Betreff: THX

BeitragDo, Mai 01, 2008 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, ihr seid ja n aktives Forum, danke für die zahlreichen und vielen Antworten, für mich als einfachste Alternative um mitten aus einer Funktion herauszuspringen hat sich die "ende Funktion" erwiesen, wusste gar net dass das so einfach geht das man einfach mittendrin end schreiben kann, habsh auch scho probiert mein programm läuft jetzt!
Und die Vermutung das goto net aus ner Funktion springt ist nach meinen Recherchen richtig:D
Also Danke an das Blitzforum!
USP

Silver_Knee

BeitragDo, Mai 01, 2008 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
das liegt übrigens an dem Frature BlitzBasics folgendes zu machen:

Code: [AUSKLAPPEN]
Function A()
  .Hans
  .....
  Goto hans
End Function

Function B()
 .Hans
  .....
  Goto hans
End Function


In jeder Schleife führt ein goto hans zum richtigen hans....
Nochetwas unlogisches wieso es nicht gehen kann:

Code: [AUSKLAPPEN]
Function A()
  Local v=4
  Local g=1
  .....
  Goto hans
End Function

Function B(v=1,z=5)
  .Hans
  Print v
  Print g
  Print z
End Function


So wie soll ein programm das interpretieren?
Variable g wurde in B noch kein wert zugewiese aber in A...z exestiert in a nicht aber in b welche zahl soll jetzt genommen werden? 0 oder 5
v widerspricht sich auch....

Wirklich sinnvoll ist goto wie dreamora schon sagte nur bei sowas:

Code: [AUSKLAPPEN]
For x=1 to 10
for y= 1 to 10
if map (x,y)=1
 Print "gefunden!"
 Goto multi_exit
endif
next
next
.multi_exit

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group