Springen ohne Goto

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Budikotch

Betreff: Springen ohne Goto

BeitragMo, Dez 06, 2010 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute.
Mit BlitzBasic habe ich endlich eine Programmiersprache gefunden die ich am Besten verstehen kann.

Zur Zeit hab ich einen sehr,sehr leichten Labyrinth in Textform gecodet.
Nun möchte ich aber erfahren,wie man ohne ein Goto zur letzten Anweisung springt.

z.B. Wenn man stirbt,nicht nochmal alles von vorne machen zu müssen,falls man schon weit gekommen ist.

Mein Code:

Code: [AUSKLAPPEN]
; Labyrinth-Text

Print "Du gehst in ein Labyrinth hinein."
Print ""
Print "Du hast nun 2 Möglichkeiten"
Print ""
Print "1 - Links oder 2 - Rechts"
Print ""

Weg1% = Input("Wähle deinen Weg aus. (1/2): ")

Print ""

Select Weg1
   Case 1
      Print "Du gehst ein Stück und ... "
      Print ""
      Print "Nichts passiert"
      Print ""
      Print "Es geht weiter !"
   Case 2
      Print "Du gehst ein Stück und ..."
      Print ""
      Print "Oh nein !!.Du bist in eine Falle getappt.
      Print ""
      Print "Du stirbst !"
      Print ""
      Print "GAME OVER"
      WaitKey
      End
   Default
      Print "Ungültige Wahl."
      
End Select

Print ""

Print "Nun hast du 3 Wege vor dir."
Print ""
Print "1 - Links , 2 - Geradeaus , 3 - Rechts"

Weg2% = Input("Wähle deinen Weg aus. (1/2/3): ")

Print ""

Select Weg2
   Case 1
      Print "Du gehst ein Stück und ..."
      Print "Oh nein.Ein Monster hat dich angegriffen."
      Print "Du stirbst an deinen Wunden."
      Print ""
      Print "GAME OVER"
      WaitKey
      End
   Case 2
      Print "Du gehst ein Stück und ..."
      Print "Zack! Die Pfeile fliegen dir um die Ohren"
      Print "Ein Pfeil erwischt dich !"
      Print "Du stirbst."
      Print ""
      Print "GAME OVER"
      WaitKey
      End
   Case 3
      Print "Du gehst ein Stück und ..."
      Print "Nichts passiert"
      Print "Glück gehabt.Du kannst weiter gehen"
   Default
      Print "Ungültige Entscheidung"
End Select

Print ""

Print "Deine letzte Entscheidung liegt vor dir."
Print "Entscheide gut !"
Print ""
Print "Du hast 2 Wege zur Auswahl."
Print ""
Print "1 - Links oder 2 - Rechts"

Weg3% = Input("Wähle deinen Weg aus. (1/2): ")

Print ""

Select Weg3
   Case 1
      Print "Du gehst ein Stück und ... "
      Print ""
      Print "BOOM !! "
      Print "Eine Bombe explodiert"
      Print "Du bist Tod !"
      Print ""
      Print "GAME OVER"
      WaitKey
      End
   Case 2
      Print "Du gehst ein Stück und ... "
      Print ""
      Print "Du hast den Ausgang gefunden !"
      Print "Herzlichen Glückwunsch"
   Default
      Print "Ungültige Wahl"
End Select

WaitKey
End

Jamagin

BeitragDi, Dez 07, 2010 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Mann, das spielt man einmal und nie wieder!!
Das ist wirklich mehr als arg.

In einem Spiel sollte man den Spieler nicht vor vollendete Tatsachen stellen, bzw. wenn man nur 2 Möglichkeiten hat, das man bei einer gleich kaputt ist oder bei 3 Möglichkeiten, bei 2en kaputt ist!!

Man sollte dem Spieler schon die Möglichkeit einräumen, die Situation erstmals zu kennen bzw. zu lösen aber das ist ja nur ein Beispiel!

Kritik muß sein, weil es wirklich Mist ist! Es gibt viel schönere Ideen als immer nur Monster, Gewalt und so weiter...

Aber nun zum eigentlichen, wieso packst du den gesamten Text nicht in Datazeilen bzw. in Dateien? Da gibt es sicher ein paar Beispiele im BlitzBasic Buch von Rene Mayer bzw. unter dem Begriff Textadventures kannst auch googeln nach Tutorials!

Das man nicht immer von vorne beginnen muß/soll erübrigt sich, wenn man Game Over ist, wo soll man denn dann starten? Es gibt ja auch keine Wegpunkte und auch kein Ziel. Ist irgendwie ein Glücksspiel...!

Bitte nicht falsch verstehen, aber zum lernen, wie du sagst ist dein Beispiel nicht ganz so gut, da gibt es schönere Beispiele!!!


lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

PSY

BeitragDi, Dez 07, 2010 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,

du musst einfach jeden raum solange abfragen, bis das ergebnis "OK" ist. das funzt zb mit der repeat-until-loop:

Code: [AUSKLAPPEN]
local ok%
; Labyrinth-Text
Repeat
   ok=False
   Print "Du gehst in ein Labyrinth hinein."
   Print ""
   Print "Du hast nun 2 Möglichkeiten"
   Print ""
   Print "1 - Links oder 2 - Rechts"
   Print ""
   Weg1% = Input("Wähle deinen Weg aus. (1/2): ")
   Print ""
   
   Select Weg1
      Case 1
         Print "Du gehst ein Stück und ... "
         Print ""
         Print "Nichts passiert"
         Print ""
         Print "Es geht weiter !"
         ok=True
      Case 2
         Print "Du gehst ein Stück und ..."
         Print ""
         Print "Oh nein !!.Du bist in eine Falle getappt.
         Print ""
         Print "Du stirbst !"
         Print ""
         Print "GAME OVER"
         WaitKey
      Default
         Print "Ungültige Wahl."
   End Select
Until ok=True



Repeat
   ok=False
   Print "Nun hast du 3 Wege vor dir."
   Print ""
   Print "1 - Links , 2 - Geradeaus , 3 - Rechts"
   Weg2% = Input("Wähle deinen Weg aus. (1/2/3): ")
   Print ""
   
   Select Weg2
      Case 1
         Print "Du gehst ein Stück und ..."
         Print "Oh nein.Ein Monster hat dich angegriffen."
         Print "Du stirbst an deinen Wunden."
         Print ""
         Print "GAME OVER"
         WaitKey
      Case 2
         Print "Du gehst ein Stück und ..."
         Print "Zack! Die Pfeile fliegen dir um die Ohren"
         Print "Ein Pfeil erwischt dich !"
         Print "Du stirbst."
         Print ""
         Print "GAME OVER"
         WaitKey
      Case 3
         Print "Du gehst ein Stück und ..."
         Print "Nichts passiert"
         Print "Glück gehabt.Du kannst weiter gehen"
         ok=True
      Default
         Print "Ungültige Entscheidung"
   End Select
Until ok=True



Repeat
   ok=False
   Print ""
   Print "Deine letzte Entscheidung liegt vor dir."
   Print "Entscheide gut !"
   Print ""
   Print "Du hast 2 Wege zur Auswahl."
   Print ""
   Print "1 - Links oder 2 - Rechts"
   Weg3% = Input("Wähle deinen Weg aus. (1/2): ")
   Print ""
   
   Select Weg3
      Case 1
         Print "Du gehst ein Stück und ... "
         Print ""
         Print "BOOM !! "
         Print "Eine Bombe explodiert"
         Print "Du bist Tod !"
         Print ""
         Print "GAME OVER"
         WaitKey
      Case 2
         Print "Du gehst ein Stück und ... "
         Print ""
         Print "Du hast den Ausgang gefunden !"
         Print "Herzlichen Glückwunsch"
         ok=True
      Default
         Print "Ungültige Wahl"
   End Select
Until ok=True


WaitKey
End


l8er,
PSY
PSY LABS Games
Coders don't die, they just gosub without return

ToeB

BeitragDi, Dez 07, 2010 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah Laughing

Also für so ein Programm bietet sich Goto bzw. Gosub schon an, weil man hier den "guten Programmierstiel" außen vor lassen kann.

Möchtest du jedoch es "Wie ein Profi" lösen, würde ich direkt vom Hardgecodeten Eingabe/Ausgabe System wegehen und das ganze Extern ausführen (durch eine Simple Datei mit den Fragen und Zweigen oder aber Durch Lua-Script).

Machs aber erstmal mit Sub-Programmen Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Jamagin

BeitragDi, Dez 07, 2010 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich nochmals!

Hier ein link zur Programmierung von Textadventures

http://en.wikibooks.org/wiki/P...s_In_Basic


lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Xeres

Moderator

BeitragDi, Dez 07, 2010 0:26
Antworten mit Zitat
Benutzer-Profile anzeigen
100% Hardcoden ist halt - wie das Wort schon sagt - nicht eben Variabel. Code, der sich wiederholt packt man in Funktionen Arrow Function, dann braucht es noch eine sinnvolle Struktur der Daten der Level und dann braucht man auch nie wieder GoTo.
Überlege dir erst eine Strukur für dein Spiel, und wenn die engine steht, kannst du dich daran machen, den Inhalt zu produzieren. So wie es jetzt ist, kann man daraus kaum etwas durchschaubares oder wiederverwendbares machen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Budikotch

BeitragDi, Dez 07, 2010 0:27
Antworten mit Zitat
Benutzer-Profile anzeigen
@Jamagin

Natürlich ist das Spiel nicht gut Rolling Eyes
Ich bin ja auch noch nicht so weit.Das war eher als Test gedacht.Mir ist klar das ich da viel mehr Möglichkeiten,Lösungen etc. einprogrammieren muss.

@Psy

Danke.

Jamagin

BeitragDi, Dez 07, 2010 0:33
Antworten mit Zitat
Benutzer-Profile anzeigen
wie Xeres schon sagte!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group