Mal wieder ein problem, diesmal mit case...
Übersicht

BothBetreff: Mal wieder ein problem, diesmal mit case... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 "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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so, habs jetzt noch mal etwas überarbeitet ![]() 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 "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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aber die Frage : Warum ist goto denn böse? was ist daran schlecht? ![]() und danke für den überarbeiteten code ![]() 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 "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 "Der erste Angriff" ;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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() https://www.blitzforum.de/foru...mp;start=0 PS: fängt so bei Xaron an die Diskussion |
||
Both |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 "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 "Der erste Angriff" ;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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 "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 "Der erste Angriff" ;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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group