Startseite »
Forum »
Mitglieder »
Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Schönheit
Bewertung: ![]()
Von Playm, Mittwoch, 11. August 2021, 00:24
Außer obiger Situation, kennt ihr ja auch die Database im RPG Maker XP. Im Reiter "Classes" in der Database findet man oben rechts die Element- und Statuseffizienz. Das sind so kleine Buttons, die einen Buchstaben zwischen A und F anzeigen und wenn man drauf klickt ändert sich der Buchstabe auf den Folgenden, also aus A wird B, aus B wird C und so weiter. Aus F wird A. Es ist ein Kreis. Und ich wollte so etwas programmieren: Eine Funktion, die mir für einen Buchstaben den folgenden Buchstaben ausgibt und beim letzten Buchstaben wieder auf den Anfang springt. Und das ist meine Lösung in JavaScript:
|
|
JavaScript Quellcode |
1 2 3 4 |
function advanceEfficency( efficency ){ var efficency_sequence = ['A', 'B', 'C', 'D', 'E', 'F', 'A']; return efficency_sequence[ efficency_sequence.indexOf(efficency) + 1 ]; } |
Und den restlichen Blogpost geht es darum, warum das schön ist.
Erst einmal: Was machen wir hier? efficency_sequence ist ein Array und unsere schöne Funktion returned einen Eintrag aus dem Array. Welchen wir returned bestimmt der Index, den zwischen den eckigen Klammern in Zeile 3 berechnen. Die Array-Funktion indexOf( element ) gibt uns den Index, also die Position von einem gegebenen Element im Array zurück.
- ['Montag', 'Dienstag', 'Mittwoch'].indexOf( 'Mittwoch' );
würde uns 2 zurück liefern - ['Montag', 'Dienstag', 'Mittwoch'].indexOf( 'Montag' );
würde uns 0 zurück liefern - ['Montag', 'Dienstag', 'Mittwoch'].indexOf( 'Apfel' );
würde uns -1 zurück liefern, denn es gibt das Element im Array nicht
Jetzt addieren wir aber auf den Index noch Eins drauf. Die Summe der zwei Zahlen benutzen wir als Index beim Array-Zugriff. Wir schauen uns also das Element an, was nach unserem gegebenen Element kommt. Und rechts von 'A' steht im Array 'B', rechts von 'B' steht 'C' und rechts von 'F' steht 'A'. Ich finde das schön. Es ist so einfach. So simpel.
Und die Lösung hat noch eine Eigenschaft, dadurch das indexOf -1 zurück liefert, wenn es das gegebene Element nicht im Array gibt: Sollte ein invalider Status eintreten (die gegebene Effizienz ist kein Buchstabe zwischen A und F) resettet ein Aufruf der schönen Funktion zurück auf 'A'. Denn die Summe sieht dann so aus: " -1 + 1 = 0".
Worauf resettet werden soll, kann man übrigens dadurch beeinflussen, womit der Array beginnt und endet.
|
|
JavaScript Quellcode |
1 |
var efficency_sequence = ['C', 'D', 'E', 'F', 'A', 'B', 'C']; |
Die Methode lässt sich leicht auf andere Anwendungsfälle übertragen. Sagen wir mal wir haben eine Ausrichtung: Norden, Westen, Süden, Osten.
Dann könnten wir eine Funktion wie die folgende Schreiben:
|
|
JavaScript Quellcode |
1 2 3 4 5 6 7 8 9 10 11 |
function turnRight( given_direction ){ var direction_sequence = ['north', 'west', 'south', 'east', 'north']; return direction_sequence[direction_sequence.indexOf(given_direction) + 1]; } function turnLeft( given_direction ){ var direction_sequence = ['north', 'east', 'south', 'west', 'north']; return direction_sequence[direction_sequence.indexOf(given_direction) + 1]; } turnRight( 'north' ); //=> 'west' turnLeft( 'west' ); //=> 'north' |
Die ganze Prozedur kommt ohne if-then-else-Verzweigungen aus. Es gibt kein Modulo. Es ist einfach eine sehr simple Art, die Aufgabe zu lösen. Ich finde es schön.
Kommentare (2)
-
Von Playm (Samstag, 21. August 2021, 14:38)
Ja, das klappt.
In Ruby gibt die .index()-Methode in der Tat *nil* zurück, statt -1.
Man kann im Maker das Verhalten von JavaScript aber nachbauen, in dem man im Falle eines nil-Wertes -1 zurück liefert und das ganze klammert.
sequence[ ( sequence.index(given_direction) || -1 ) + 1];
Blog Navigation
Kategorien
Aktuelles
-
Schönheit
Mittwoch, 11. August 2021, 00:24
-
Rotierende Items auf der Map
Samstag, 22. Dezember 2018, 08:29
-
Die RMXP-Icons als 3D-Modell
Sonntag, 16. Dezember 2018, 11:01
-
Wie die Bildchen in die Projektauswertungen kommen
Samstag, 20. Januar 2018, 06:00
-
Dateiformate bei der Spielentwicklung
Sonntag, 5. November 2017, 21:29
-
Ja, das klappt. In Ruby gibt die .index()-Me...
Von Playm (21. August 2021, 14:38)
-
Das ist wirklich eine sehr schöne und vor allem...
Von Lycaon (19. August 2021, 00:53)
-
Script ist gepostet. ;) Kann sein, dass der ...
Von Playm (23. Dezember 2018, 03:47)
-
btw: Poste das Script hierrein: http://www.rpg-...
Von Josey (23. Dezember 2018, 03:13)
-
Gut, dass du weißt, wovon du sprichst XD *war ...
Von Josey (23. Dezember 2018, 03:12)
Archiv
-
2021 (1)-
August 2021 (1)
-
-
2018 (3)-
Dezember 2018 (2) -
Januar 2018 (1)
-
-
2017 (7)-
November 2017 (1) -
Oktober 2017 (3) -
September 2017 (3)
-
-
2015 (10)-
November 2015 (2) -
Oktober 2015 (3) -
Juli 2015 (3) -
Juni 2015 (2)
-
-
2014 (2) -
2013 (4)-
August 2013 (2) -
Juni 2013 (1) -
Mai 2013 (1)
-
Blogroll
-
Rpg-Studio, Stirb Nicht! D:
Von Josey 1. Dezember 2018, 11:41
-
Mein erster Blog-Eintrag :D über Motivation & Release!?
Von Zego 4. September 2016, 23:43
-
Die ewige Rückkehr
Von Mustamakkara 20. Juli 2015, 15:39
-
Ich verkünde hiermit meine Inaktivität!
Von MrKingmustafa 21. Mai 2015, 17:54
-
Bastle an einer Community
Von RyuImperator 2. Januar 2014, 18:06
-
Dungeon Heart (preRender)
Von Chaosgod Espér 27. Oktober 2013, 21:48
-
Raging about C++ & MSVC--
Von Der Imperator 15. September 2013, 08:25
-
Und so geschahs...
Von Avery 1. April 2013, 17:53
-
Ice & Dark Demo 3.0 out now!
Von Lucy Fox 1. April 2013, 00:57
-
Durchlauf der eigenen Teeworldsmap mit Kenji
Von Veni 31. März 2013, 16:16
-
Char Designer
Von Lone Wolf 30. März 2012, 12:32
-
10-Wort-Trash-Geschichten
Von Strubbel 28. März 2012, 16:30
-
Laura und der Herzbube: SB-RPG Episode 2
Von Яογal Sίη° 16. März 2011, 16:23

Solange man dort nur gültige Werte einspeist, sollte es im Maker selbst mit .index() wahrscheinlich auch klappen, oder?