Hallo
Ich mache hier ein kleines Tutorial zu dem Bubblesort Algorythmus(Sortierungscode),man verwendet Ihn wenn man etwas sortieren will.
Als erstes erstellen wir ein objekt mit namen obj_sort ,das fügen wir gleich in den room ein.
Dann erstellen wir ein Create Event ,in dem wir dem User die Möglichkeit geben Zahlen einzutippen.(Und diese Zahlen werden dann sortiert!)
Wir erstellen ein Create Event mit diesem Code:
Nun haben wir die Usereingabe erstellt.
Jetzt kommen wir zum Sortierungsalgorythmus.Dafür erstellen wir ein Step Event mit diesem Code
Alles anzeigen
Zu guter letzt brauchen wir noch ein Draw Event in dem wir die Zahlen drawen lassen:
Ich hoffe ihr versteht alles.Wenn nicht ich helfe euch gerne,und es gibt sicherlich noch genug andere User die auch helfen würden.
Und jetzt könnt ihr in testen.Jedoch müsst ihr bei der Usereingabe wenn ihr einen Wert unter 10 eingeben wollt eine 0 davor schreiben also zb 02. oder 07
Ich mache hier ein kleines Tutorial zu dem Bubblesort Algorythmus(Sortierungscode),man verwendet Ihn wenn man etwas sortieren will.
Als erstes erstellen wir ein objekt mit namen obj_sort ,das fügen wir gleich in den room ein.
Dann erstellen wir ein Create Event ,in dem wir dem User die Möglichkeit geben Zahlen einzutippen.(Und diese Zahlen werden dann sortiert!)
Wir erstellen ein Create Event mit diesem Code:
GML-Quellcode
- I = 0; //Wir erstellen eine Variable namens i mit dem Wert 0 zum steuern des Arrays (Arrays könnt ihr euch als Schubladen vorstellen,in jeder kann man was eigenes rein tun)
- repeat(5) // Hier erstellen wir eine Repeat Schleife damit der unten aufgeführte Code 5 mal ausgeführt wird
- {
- number[i]= get_string("Zahl",""); //Zuerst erstellen wir ein Array mit dem Namen number[] und fügen die Variable i ein (number[i]),das bedeuted das Array beginnt bei 0
- i++; // Hier lassen wir die Variable i nach jedem durchgang eins hochzählen.(das heißt am ende hat das Array 5 Schubladen,,, also von 0 -4 )
- }
Nun haben wir die Usereingabe erstellt.
Jetzt kommen wir zum Sortierungsalgorythmus.Dafür erstellen wir ein Step Event mit diesem Code
GML-Quellcode
- var pos = array_length_1d(number); //Hier erstellen wir eine Lokale Variable namens pos(Lokale Variablen sind nur im selben Event verfügbar),und geben ihr den Wert des Arrays, array_length_id sieht nach wie gross das Array ist also wieviel Schubladen es hat,in diesem Fall 5.
- for (i = 0;i < pos;i++) // Hier erstellen wir eine For Schleife,For Schleifen sind ähnlich der Repeat Schleife nur das hier eine Variable deklariert wird also( i = 0; ) dann eine Bedingung wie bei einer if abfrage (i<pos) ,die bedingung bedeutet also 0 < 5. dann zu guter letzt nur das increasen also erhöhen des Wertes der Variable i. das heißt diese For Schleife rennt insgesamt 5 mal
- {
- for(s = pos-1;s > i;s--) //Und hier wieder ne For schleife nur das wir bei der Variable pos-1 steht.(das bedeutet das die letzte position vom Array gemeint ist also 5) ,dann kommt wieder die bedingung dieses mal s > i also 5>0, und dann wird decreased also heruntergezählt von dem wert der Variable s also 4
- {
- if (number[s]>number[s-1]) //Hier haben wir eine If Abfrage also Wenn Abfrage in der wir abfragen ob das Array number[s]>number[s-1] also number[5]>number[4] denn hier heißt das s-1 nicht wieder die letzte position im array da s ja schon pos-1 ist.
- {
- temp = number[s]; // hier erstellen wir eine Variable in der wir die größere Zahl speichern damit sie nicht verloren geht
- number[s]=number[s-1]; // dann geben wir number[s] den Wert von number[s-1] also den niedrigeren Wert. (Da wir in der IF Bedingung geschrieben haben (number[s]>number[s-1])
- number[s-1]=temp; // und zu guter letzt geben wir number[s-1] den Wert von temp wo die größere Zahl gespeichert ist. Und das läuft solange durch bis alles geordnet ist von groß zu klein.
- }
- }
- }
Zu guter letzt brauchen wir noch ein Draw Event in dem wir die Zahlen drawen lassen:
GML-Quellcode
- for (I=0;i < 5;i++) // Hier benötigen wir wieder eine For Schleife da wir alle Schubladen des Arrays also den Wert drawen lassen wollen
- {
- draw_text(x+100,y+50*i,number[i]); // hier ganz normal draw_text funktion nur bei y wird *i gemacht damit es untereinander in 50 pixel abständen 5 mal geschrieben wird. und dann noch das Array number[] und fügen auch die Variable i wieder ein damit vom 0-4 gedrawt wird.
- }
Ich hoffe ihr versteht alles.Wenn nicht ich helfe euch gerne,und es gibt sicherlich noch genug andere User die auch helfen würden.
Und jetzt könnt ihr in testen.Jedoch müsst ihr bei der Usereingabe wenn ihr einen Wert unter 10 eingeben wollt eine 0 davor schreiben also zb 02. oder 07