Hallo Leute!
Ich habe da mal wieder eine Frage:
Ich habe einen String (z.B. "c_red|c_yellow|c_green")
Und ich möchte diesen String jetzt an dem "|" so zerlegen:
str[0]="c_red";
str[1]="c_yellow";
str[2]="c_green";
Ich hatte das schon wie folgt versucht, aber dann hängt das Game sich auf oder es funktioniert gar nicht erst.
Wichtig:
Der String kann dieses "|" nur 2mal enthalten.
Das heißt es können maximal 3 Wörter (hier Farben) rauskommen.
cut_string(string,max,index);
Spoiler anzeigen
Alles anzeigen
Aufgerufen wird das dann so:
Aber leider hängt sich das Spiel auf.
Danke schon mal im Vorraus
-Tobi
Ich habe da mal wieder eine Frage:
Ich habe einen String (z.B. "c_red|c_yellow|c_green")
Und ich möchte diesen String jetzt an dem "|" so zerlegen:
str[0]="c_red";
str[1]="c_yellow";
str[2]="c_green";
Ich hatte das schon wie folgt versucht, aber dann hängt das Game sich auf oder es funktioniert gar nicht erst.
Wichtig:
Der String kann dieses "|" nur 2mal enthalten.
Das heißt es können maximal 3 Wörter (hier Farben) rauskommen.
cut_string(string,max,index);
GML-Quellcode
- /*
- cut_string(string,max,index);
- string: der text
- max: die maximale Anzahl an Wörtern (0-2)
- index: das gewünschte Wort (0-2)
- --> 0: 1. Wort
- 1: 2. Wort
- 2: 3. Wort
- */
- ind=argument2;
- max_str=argument1;
- i=0;
- ii=0;
- xx=0; //startposition
- repeat(max_str+1)
- {
- //wiederholt das verfahren so oft, wie viele wörter entstehen können
- do
- {
- i+=1;
- } until (string_char_at(argument0,xx+i)="|") or (xx+i>=string_length(argument0))
- //bis ein "|" oder das ende erreicht ist
- //"erstellt" die Wörter:
- if =0
- {
- //sonst ist hier ein buchstabe zu viel
- str[0]=string_copy(argument0,xx,i-1);
- xx+=i-1;
- }
- if =1
- {
- str[1]=string_copy(argument0,xx,i);
- xx+=i;
- //springt zur aktuellen position
- }
- if =2
- {
- // sonst ist hier ein buchstabe zu wenig
- str[2]=string_copy(argument0,xx,i+1);
- xx+=i+1;
- }
- ii+=1; //zählt das aktuelle wort
- i=0;
- //stellt die länge zurück
- }
- return str[ind];
- //gibt den gewünschten String zurück
Aufgerufen wird das dann so:
Aber leider hängt sich das Spiel auf.
Danke schon mal im Vorraus
-Tobi