Mal wieder ein problem, diesmal mit case...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Both

Betreff: Mal wieder ein problem, diesmal mit case...

BeitragMi, Dez 20, 2006 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
also mein problem: in dem folgenden code ganz zum schluss bei
Code: [AUSKLAPPEN]

  Case 1
  feld = feld - 1
   
  Case 2
  feld = feld +4

dass macht er irgendwie nicht... -.-
der ganze code:
Code: [AUSKLAPPEN]

;Beginn des Programmes
Graphics 640,480
.start
Print "Hallo Herzlich Willkommen in Assadar, ein Textbasiertes Rollenspiel."
Print "Du hast mehere Möglichkeiten:"
Print
Print "1.Starten"
Print "2.Charakter laden"
Print "3.Beenden"
;Menü
Menue = WaitKey()

    If Menue = 51 Then
       End
    EndIf

    If Menue = 50 Then
       Cls
       Locate 0,0
       Print " Noch nicht vorhanden"
       WaitKey
       Cls
       Locate 0,0
       Goto start
    EndIf

    If Menue = 49 Then
       Goto spiel
    EndIf

feld = 0
.spiel
Select feld

Case 0
Cls
Locate 0,0
Print "Du wachst gerade aus deiner Ohnmacht auf. Du befindest dich in einem"
Print "unbekanntem Land, an einem unbekannten Ort. Du bist an "
Print "einem Strand. Neben dir ligt dein Zerstörtes Boot. In ihm findest du"
Print "ein kleines Schwert und ein Lederwams(Verteidigung + 1)."
WaitKey()
feld = feld + 4
Goto spiel

Case 4
Cls
Locate 0,0
Print "Du bist an der Küste des Meeres Ar'Kin. Im Westen liegt die Stadt Ar'kin"
Print "Im Norden erstreckt sich eine Ebene"
Print "1.Nach Westen zur Stadt"
Print "2.Nach Norden in die Ebene"
WaitKey()
Select w4

  Case 1
  feld = feld - 1
   
  Case 2
  feld = feld +4

End Select
Goto spiel

Case 3
Cls
Locate 0,0
Print "Du bist in der Stadt"

Case 8
Cls
Locate 0,0
Print "nördlich vom anfang"

WaitKey()   
End Select       
 

Splitfatal

BeitragMi, Dez 20, 2006 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Bin noch totaler anfänger also ka obs richtig ist ^^

aber bei Code: [AUSKLAPPEN]
Select w4

  Case 1
  feld = feld - 1
   
  Case 2
  feld = feld +4


Wo wird denn w4 auf 1 oder 2 gesetzt?
 

Both

BeitragMi, Dez 20, 2006 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
oh jetzt leuchtets mir ein
mensch bin ich blöd^^

Code: [AUSKLAPPEN]

w4 = WaitKey()
 
     If w4 = 49
     feld = feld -1
     Goto spiel
     EndIf

     If w4 = 50
     feld = feld +4
     Goto spiel
     EndIf

Goto spiel
 

snörkl

BeitragMi, Dez 20, 2006 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
so, habs jetzt noch mal etwas überarbeitet Very Happy und die goto schleife rausgenommen. GOTO IST BÖSE!!!

ist nicht perfekt, erklärt sich aber denke ich von selbst (habe viele kommentare eingefügt^^)

Code: [AUSKLAPPEN]
;Beginn des Programmes
Graphics 640,480
.start
Print "Hallo Herzlich Willkommen in Assadar, einem Textbasierenden Rollenspiel."
Print "Du hast mehrere Möglichkeiten:"
Print
Print "1-Starten"
Print "2-Charakter laden"
Print "3-Beenden"
;Menü
Menue = WaitKey()

    If Menue = 51 Then
       End
    EndIf

    If Menue = 50 Then
       Cls
       Locate 0,0
       Print " Noch nicht vorhanden"
       WaitKey
       Cls
       Locate 0,0
       Goto start
    EndIf

    If Menue = 49 Then
       Goto spiel
    EndIf

;//////////////////////HAUPTSCHLEIFE////////////////////////////////////


feld = 0   
.spiel

While Not feld=4  ;solange feld nicht = 4 (taste gedrückt wurde)

 Cls
 Locate 0,0
 Print "Du wachst gerade aus deiner Ohnmacht auf. Du befindest dich in einem"
 Print "unbekanntem Land, an einem unbekannten Ort. Du bist an "
 Print "einem Strand. Neben dir ligt dein Zerstörtes Boot. In ihm findest du"
 Print "ein kleines Schwert und ein Lederwams(Verteidigung + 1)."
 WaitKey()   ;auf Taste warten
 feld=4      ;feld=4, also verlassen der schleife
 
Wend         ;schleife wiederholen

Cls         
FlushKeys()  ;tasten wieder "freimachen"
Locate 0,0
Print "Du bist an der Küste des Meeres Ar'Kin. Im Westen liegt die Stadt Ar'kin"
Print "Im Norden erstreckt sich eine Ebene"
Print "1.Nach Westen zur Stadt"
Print "2.Nach Norden in die Ebene"    ;waitkey überflüssig
 
While Not End Or feld=3 Or feld=8     ;solange nicht beendet oder feld=3 bzw. 8

 If KeyHit(2) Then feld=3             ;wenn die taste 1 gedrückt ist -> feld=3
 If KeyHit(3) Then feld=8             ;         taste 2 gedrückt ist -> feld=8
 
 Select feld                          ;Prüfe feld

  Case 3                              ;auf die 3
  Cls                             
  Locate 0,0
  Print "Du bist in der Stadt."


  Case 8                              ;...auf die 8
  Cls
  Locate 0,0
  Print "Du bist nördlich vom Anfang"
   
 End Select                           ;aufhören zu prüfen
   
Wend                                  ;zurück zur schleife (while not end...)
 

Both

BeitragDo, Dez 21, 2006 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
aber die Frage : Warum ist goto denn böse? was ist daran schlecht? Crying or Very sad

und danke für den überarbeiteten code Very Happy

mein neuer code mit problemen:
Code: [AUSKLAPPEN]

;Beginn des Programmes
Graphics 640,480
.start
Print "Hallo Herzlich Willkommen in Assadar, einem Textbasierenden Rollenspiel."
Print "Du hast mehrere Möglichkeiten:"
Print
Print "1-Starten"
Print "2-Charakter laden"
Print "3-Beenden"
;Menü
While Not End Or Menue=50 Or Menue=51
Menue = WaitKey()

    If Menue = 51 Then
       End
    EndIf

    If Menue = 50 Then
       Cls
       Locate 0,0
       Print " Noch nicht vorhanden"
       WaitKey()
       Cls
       Locate 0,0
       Goto start
    EndIf

    If Menue = 49 Then
       Goto spiel
    EndIf

Wend
;//////////////////////HAUPTSCHLEIFE////////////////////////////////////


feld = 0   
.spiel
;der charakter
Type leute
  Field Lp
  Field ang
  Field geld
End Type

spieler.leute = New leute
strasen.leute = New leute

spieler\Lp = 20
spieler\ang = 4
spieler\geld = 0

strasen\Lp = 10
strasen\ang = 3
strasen\geld = 5

While Not feld=4  ;solange feld nicht = 4 (taste gedrückt wurde)

 Cls
 Locate 0,0
 Print "Du wachst gerade aus deiner Ohnmacht auf. Du befindest dich in einem"
 Print "unbekanntem Land, an einem unbekannten Ort. Du bist an "
 Print "einem Strand. Neben dir ligt dein Zerstörtes Boot. In ihm findest du"
 Print "ein kleines Schwert und ein Lederwams(Verteidigung + 1)."
 WaitKey()   ;auf Taste warten
 feld=4      ;feld=4, also verlassen der schleife
 
Wend         ;schleife wiederholen

Cls         
FlushKeys()  ;tasten wieder "freimachen"
Locate 0,0
Print "Du bist an der Küste des Meeres Ar'Kin. Im Westen liegt die Stadt Ar'kin"
Print "Im Norden erstreckt sich eine Ebene"
Print "1.Nach Westen zur Stadt"
Print "2.Nach Norden in die Ebene"    ;waitkey überflüssig
 
While Not End Or feld=3 Or feld=8     ;solange nicht beendet oder feld=3 bzw. 8

 If KeyHit(2) Then feld=3             ;wenn die taste 1 gedrückt ist -> feld=3
 If KeyHit(3) Then feld=8             ;         taste 2 gedrückt ist -> feld=8
 
 Select feld                          ;Prüfe feld

Case 3                              ;auf die 3
   Cls                             
   Locate 0,0
   w4 = WaitKey()
 
        If w4 = 49
           Cls
           Locate 0,0
           feld = feld -1
           SeedRnd MilliSecs()
           a1 = Rand(1,3)

        If a1 = 1 Then
           Cls
           Locate 0,0
           Print "ereignislose Reise."
           WaitKey()
           Goto spiel
        EndIf
             


       If a1 = 2 Then
          Cls
          Locate 0,0
          Print "Straßenraeuber greift dich an. Er überascht dich und hat den 1.Schlag"
          Print
          Print "Der erste Angriff"
          Print
       ;1. strasenräuber to spieler
                Repeat
                w41 = Rand(1,6)
                spieler\Lp = spieler\Lp - strasen\ang
                spieler\Lp = spieler\Lp - w41
       ;2. Spieler to Strasen
                w42 = Rand(1,6)
                strasen\Lp = strasen\Lp - spieler\ang
                strasen\Lp = strasen\Lp - w42     
                Print "Die Lebenspunkte des Strasenraeuber: "
                Print strasen\Lp
                Print "Deine Lebenspunkte: "     
                Print spieler\Lp

                Until strasen\Lp = 0 Or spieler\Lp = 0
                  If strasen\Lp = 0 Then
                  Print "Du hast Gewonnen"
                  EndIf
                  If spieler\Lp = 0 Then
                  Print "Du bist tot"
                  EndIf
                  EndIf     
       
               If a1 = 3 Then
               Cls
               Locate 0,0
               Print "Du begegnest einigen Militärs"
               WaitKey()
               Goto spiel
            EndIf   
            Print "Du bist in der Stadt."


Case 8                              ;...auf die 8
  Cls
  Locate 0,0
  Print "Du bist nördlich vom Anfang"
   
End Select                           ;aufhören zu prüfen
   
EndIf                                  ;zurück zur schleife (while
 

snörkl

BeitragFr, Dez 22, 2006 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
also, ich schau mir gleich mal deinen code an, aber ich wollte sagen: goto ist böse, weil es einen unübersichtlichen code macht. Ständig springt man quer durchs programm^^.

wo ist denn dein problem?

Hellfront

BeitragFr, Dez 22, 2006 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Bevor hier wieder eine goto Diskussion startet, gebe ich einfahc mal diesen LInk, da stehen so ziemlich alle Ansichten zu goto drin. WEnn nicht belaste nochmal die suche mit "goto" und "böse" (besonders das böse findet man in fast jedem goto Thread Smile )

https://www.blitzforum.de/foru...mp;start=0

PS: fängt so bei Xaron an die Diskussion
 

Both

BeitragFr, Dez 22, 2006 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Schon wieder ein Problem:
bei case 3 kommt case without select...

Der Code :
Code: [AUSKLAPPEN]

;Beginn des Programmes
Graphics 640,480
.start
Print "Hallo Herzlich Willkommen in Assadar, ein Textbasiertes Rollenspiel."
Print "Du hast mehere Möglichkeiten:"
Print
Print "1.Starten"
Print "2.Charakter laden"
Print "3.Beenden"
;Menü
Menue = WaitKey()

    If Menue = 51 Then
       End
    EndIf

    If Menue = 50 Then
       Cls
       Locate 0,0
       Print " Noch nicht vorhanden"
       WaitKey
       Cls
       Locate 0,0
       Goto start
    EndIf

    If Menue = 49 Then
       Goto spiel
    EndIf

feld = 0
.spiel
;der charakter
Type leute
  Field Lp
  Field ang
  Field geld
End Type

spieler.leute = New leute
strasen.leute = New leute

spieler\Lp = 20
spieler\ang = 4
spieler\geld = 0

strasen\Lp = 10
strasen\ang = 3
strasen\geld = 5

If strasen\lp = 0 Then Print "Tod"

Select feld

    Case 0
     Cls
     Locate 0,0
     Print "Du wachst gerade aus deiner Ohnmacht auf. Du befindest dich in einem"
     Print "unbekanntem Land, an einem unbekannten Ort. Du bist an "
     Print "einem Strand. Neben dir ligt dein Zerstörtes Boot. In ihm findest du"
     Print "ein kleines Schwert und ein Lederwams(Verteidigung + 1)."
     WaitKey()
     feld = feld + 4
     Goto spiel

Case 1
     SeedRnd MilliSecs()
     a1 = Rand(1,3)
 
     If a1 = 1 Then
        Cls
        Locate 0,0
        Print "ereignislose Reise."
        WaitKey()
        Goto spiel
     EndIf

     If a1 = 2 Then
        feld = feld + 1 
        Goto spiel
     EndIf     
     
     If a1 = 3 Then
        Cls
        Locate 0,0
        Print "Du begegnest einigen Militärs"
        WaitKey()
        Goto spiel
     EndIf
     
Case 2
     Cls
     Locate 0,0
     Print "Straßenraeuber greift dich an. Er überascht dich und hat den 1.Schlag"
     Print
     Print "Der erste Angriff"
     Print
     ;1. strasenräuber to spieler
     Repeat
     w41 = Rand(1,6)
     spieler\Lp = spieler\Lp - strasen\ang
     spieler\Lp = spieler\Lp - w41
     ;2. Spieler to Strasen
     w42 = Rand(1,6)
     strasen\Lp = strasen\Lp - spieler\ang
     strasen\Lp = strasen\Lp - w42     
     Print "Die Lebenspunkte des Strasenraeuber: "
     Print strasen\Lp
     Print "Deine Lebenspunkte: "     
     Print spieler\Lp

Case 3
     Cls
     Locate 0,0
     Print "Du bist in der Stadt"
     WaitKey()

Case 8
     Cls
     Locate 0,0
     Print "nördlich vom Anfang"
     WaitKey()

    Case 4
     Cls
     Locate 0,0
     Print "Du bist an der Küste des Meeres Ar'Kin. Im Westen liegt die Stadt Ar'kin"
     Print "Im Norden erstreckt sich eine Ebene"
     Print "1.Nach Westen zur Stadt"
     Print "2.Nach Norden in die Ebene"
     w4 = WaitKey()
       If w4 = 49 Then
          feld = feld - 3
       EndIf
           SeedRnd MilliSecs()
           a1 = Rand(1,3)



WaitKey()     
End Select feld
Forever
 

Matthias

BeitragFr, Dez 22, 2006 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe zwar den Zweck deines Programmes nicht aber jetzt geht es.

Code: [AUSKLAPPEN]
;Beginn des Programmes
Graphics 640,480
.start
Print "Hallo Herzlich Willkommen in Assadar, ein Textbasiertes Rollenspiel."
Print "Du hast mehere Möglichkeiten:"
Print
Print "1.Starten"
Print "2.Charakter laden"
Print "3.Beenden"
;Menü
Menue = WaitKey()

If Menue = 51 Then
End
EndIf

If Menue = 50 Then
Cls
Locate 0,0
Print " Noch nicht vorhanden"
WaitKey
Cls
Locate 0,0
Goto start
EndIf

If Menue = 49 Then
Goto spiel
EndIf

feld = 0
.spiel
;der charakter
Type leute
Field Lp
Field ang
Field geld
End Type

spieler.leute = New leute
strasen.leute = New leute

spieler\Lp = 20
spieler\ang = 4
spieler\geld = 0

strasen\Lp = 10
strasen\ang = 3
strasen\geld = 5

If strasen\lp = 0 Then Print "Tod"

Select feld

Case 0
Cls
Locate 0,0
Print "Du wachst gerade aus deiner Ohnmacht auf. Du befindest dich in einem"
Print "unbekanntem Land, an einem unbekannten Ort. Du bist an "
Print "einem Strand. Neben dir ligt dein Zerstörtes Boot. In ihm findest du"
Print "ein kleines Schwert und ein Lederwams(Verteidigung + 1)."
WaitKey()
feld = feld + 4
Goto spiel

Case 1
SeedRnd MilliSecs()
a1 = Rand(1,3)

If a1 = 1 Then
Cls
Locate 0,0
Print "ereignislose Reise."
WaitKey()
Goto spiel
EndIf

If a1 = 2 Then
feld = feld + 1
Goto spiel
EndIf

If a1 = 3 Then
Cls
Locate 0,0
Print "Du begegnest einigen Militärs"
WaitKey()
Goto spiel
EndIf

Case 2
Cls
Locate 0,0
Print "Straßenraeuber greift dich an. Er überascht dich und hat den 1.Schlag"
Print
Print "Der erste Angriff"
Print
;1. strasenräuber to spieler
;Repeat
w41 = Rand(1,6)
spieler\Lp = spieler\Lp - strasen\ang
spieler\Lp = spieler\Lp - w41
;2. Spieler to Strasen
w42 = Rand(1,6)
strasen\Lp = strasen\Lp - spieler\ang
strasen\Lp = strasen\Lp - w42
Print "Die Lebenspunkte des Strasenraeuber: "
Print strasen\Lp
Print "Deine Lebenspunkte: "
Print spieler\Lp

Case 3
Cls
Locate 0,0
Print "Du bist in der Stadt"
WaitKey()


Case 8
Cls
Locate 0,0
Print "nördlich vom Anfang"
WaitKey()

Case 4
Cls
Locate 0,0
Print "Du bist an der Küste des Meeres Ar'Kin. Im Westen liegt die Stadt Ar'kin"
Print "Im Norden erstreckt sich eine Ebene"
Print "1.Nach Westen zur Stadt"
Print "2.Nach Norden in die Ebene"
w4 = WaitKey()
If w4 = 49 Then
feld = feld - 3
EndIf
SeedRnd MilliSecs()
a1 = Rand(1,3)



WaitKey()
End Select
;Forever
end

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group