Frage zu Select / Case / End Select
Übersicht

![]() |
JolinahBetreff: Frage zu Select / Case / End Select |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiss nicht ob das schonmal gefragt wurde. Habe jedoch nichts gefunden im Forum:
Gibt es eine möglichkeit Select abzubrechen (zu verlassen) so wie bei den Schleifen mit Exit? Exit funktioniert anscheinend nur bei schleifen, Return hat auch nicht geklappt. End Select funzt auch nicht, darf nur 1 mal am Ende vorkommen.. Ich habe natürlich daran gedacht goto zu verwenden, aber das möcht ich nur einsetzen wenn es keine andere Methode gibt. Man könnte natürlich auch mit einer If abfrage regeln ob der code darunter noch ausgeführt werden soll, aber ich möchte auch nicht zu viele unnötige if abfragen, dann doch lieber goto ![]() |
||
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wozu willst du eine Select Abfrage beenden? Sobald eine Bedingung erfüllt wurde, werden keine weiteren überprüft... Wo liegt dein Problem? | ||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
![]() |
DCSieger des B2D Retro Wettbewerb / Aug 04 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Abbrechen? Wozu?
Sobald ein Case zutrifft wird automatisch abgebrochen, so dass die anderen Cases gar nicht mehr geprüft werden. Edit: Mist zu lahm. Egal dann mache ich noch ein Beispiel ![]() Code: [AUSKLAPPEN] x=2
select x case 2 print "erster case" case 2 print "zweiter case" end select waitkey - gibt nur "erster case" aus |
||
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com | www.CarnageContest.com | www.Stranded3.com |
Cloud |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nen direkten Befehl gibt es meines Wissens nicht.
Aber wozu brauchst du das, erläuter das mal ich glaube nicht das es nötig ist die Select anweisung plötztlich zu verlassen, da immer nur eine Case anweisung ausgeführt wird und dann Select verlassen wird Schreib hier mal was du da machen willst. |
||
Duron 1200 | 256 RAM | Geforce 2 TI |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja ich bin grad an nem kleinen rpg. Da will ich sowas wie Aktionen Einfügen (Befehle) die ich dann später mal vielleicht per einfachem Skript ausführen lassen kann.
Das ganze könnt ich wohl schon anders lösen ohne das ich dazu Select brauche oder Case plötzlich beenden müsste. Aber ich dachte halt das es so recht praktisch wäre ![]() Code: [AUSKLAPPEN] Select command Case COMMAND_MOVE_RIGHT If cmd_init = 0 cmd_init = 1 cmd_tempx = player\x / 40 cmd_sollx = cmd_tempx + 1 If level(cmd_sollx,player\y / 40) > 0 cmd_init = 0 command = COMMAND_NONE ;--> Hier möchte ich beenden damit das unten nicht ausgeführt wird. ;--> Wenn möglich eben ohne das unten mit einer If abfrage zu regeln. EndIf EndIf player\x = player\x + 2 If player\x / 40 = cmd_sollx And player\x >= cmd_sollx * 40 player\x = cmd_sollx * 40 cmd_init = 0 command = COMMAND_NONE EndIf Case COMMAND_MOVE_LEFT ..... End Select Habe mehrere Aktionen gemacht, z.bsp eben das der Player in eine bestimte richtung läuft. Das cmd_init sorgt dafür das der obere code im Case nur 1 mal ausgeführt wird. Dort wird die Player pos gespeichert und die nächste Soll Pos. Ist aber das Feld nicht frei wo der Player hinlaufen soll dann sollte das ganze abgebrochen werden. Kann man auch ganz anders lösen ich weiss... Ich kenn so ähnliche Sachen aus Visual Basic .Net Da kann man praktisch überall abbrechen, deshalb hab ich gefragt. Aber da es in BB wohl nicht geht mach ich es halt anders ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist ja kein Problem:
Code: [AUSKLAPPEN] Select command
Case COMMAND_MOVE_RIGHT If cmd_init = 0 cmd_init = 1 cmd_tempx = player\x / 40 cmd_sollx = cmd_tempx + 1 If level(cmd_sollx,player\y / 40) > 0 cmd_init = 0 command = COMMAND_NONE ;--> Hier möchte ich beenden damit das unten nicht ausgeführt wird. ;--> Wenn möglich eben ohne das unten mit einer If abfrage zu regeln. EndIf EndIf if not command=COMMAND_NONE ; eingefügt player\x = player\x + 2 If player\x / 40 = cmd_sollx And player\x >= cmd_sollx * 40 player\x = cmd_sollx * 40 cmd_init = 0 command = COMMAND_NONE EndIf endif ; eingefügt Case COMMAND_MOVE_LEFT ..... End Select |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ;--> Wenn möglich eben ohne das unten mit einer If abfrage zu regeln.
Zitat: Kann man auch ganz anders lösen ich weiss...
Ich wollte ja nur fragen ob es die Möglichkeit gibt zum abbrechen ![]() Aber trotzdem danke für alle antworten, ich hab das jetzt auch so ähnlich gemacht wie Hubsi geschrieben hat. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group