RGSS für Dummköpfe/Variablen & Werte

Aus Scientia
Version vom 27. Februar 2011, 10:18 Uhr von Alexis Hiemis (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
RGSS für Dummköpfe Schwierigkeitsgrad Stern.png
Autor Max Jet
Thematik RGSS
Vorraussetzungen Programme: keine

Fähigkeiten: keine

Andere Teile

Einleitung

Vergiss alles aus dem ersten Tutorial (die Grundlagen), Er sollte dir nur die Grundidee des Scriptings und des Programmierens näher bringen, obwohl du die Beispiele aus dem letzten Tutorial doch verstehen solltest. Der Befehl “print” zeigt Dinge an, ferner bewirkt er im RMXP eine Message Box und dieses Zeichen # leitet einen „comment“ ein, der vollständig ignoriert wird, nur um dich noch einmal daran zu erinnern. Genug damit, kommen wir nun zum interessanten Teil. Variablen enthalten Informationen, die du für andere Operationen brauchst. Hab ich erwähnt, das Zeug auf Finnisch Juttuja heißt? Ich bin zwar kein Finne, aber interessant ist das doch oder?

Werte

Es gibt Fälle (viele sogar!) in denen du Werte im Computer speichern musst. Bevor wir aber darüber reden, wozu das gemacht wird, oder wie es gar gemacht wird, erkläre ich erst einmal, was Werte „values“ sind. In den meisten Fällen stellt ein Wert „value“, eine Zahl dar. Es könnte sich um das Alter eines Helden handeln, die HP eines Gegners, eine ID Nummer (also die eigentliche Zahl einer Variabel), eine zufällige Nummer, Anzahl der getätigten Speicherungen, usw... Die „values“ der 'Variablen' (Sie variieren von Person zu Person, Gegner zu Gegner, Spiel zu Spiel, etc.) könnten 34 für das Alter, 9999 für die HP des Gegners, 1921 für die ID, 3563 für eine zufällige Nummer, 3 für getätigte Speicherungen sein. Ein numerischer „value“ ist eine Nummer (Anm. von Max Jet: Dämliche Erklärung!) Ist das nicht großartig? (Nein!) Eine Nummer kann eine ganze Zahl sein, oder ein “float”. Eine ganze Zahl hat keinen Bruch. Ganze Zahlen sind nützlich, weil du Brüche nicht oft brauchst, Du kannst zum Beispiel nicht 3, 1/2 Kühe haben. In den meisten Fällen wirst du mit ganzen Zahlen zu tun haben. (Eigentlich sind die Variabeln in den RPG makern stets ganze Zahlen) Manchmal wirst du allerdings Brüche brauchen, zum Beispiel, wenn du einen Apfel mit deinem Freund teilen willst und jeder dann eine Hälfte bekommt. Benutzen wir allerdings ganze Zahlen, ist das Teilen unmöglich. Einer müsste dann den ganzen Apfel kriegen und der andere würde leer ausgehen. Brüche werden gebraucht damit jeder 0.5 (1/2) Apfel bekommt, und wir benutzen floats um diese Brüche darzustellen. (Anm. Von Max Jet: Hat noch jemand Lust auf Äpfel?) “Floats“ werden allerdings selten gebraucht, außer in Programmen, in denen so gruselige Sachen, wie Kreise, Winkel und fliegende Kühe dargestellt werden, also im Prinzip alles, wofür du in der Schule eine 6 bekommst.

Spezielle Fälle von ganzzahligen Werten “values” sind Booleans (jetzt findet mir mal ein Wörterbuch, dass diese Monstrosität übersetzt, „values“, die entweder an oder aus sein können (AHA!), wahr oder falsch „true“ oder „false“. Sie verhalten sich, wie Schalter in den einzelnen RPG makern. Entweder hast du die Box geöffnet oder nicht, mit dem König gesprochen oder nicht, die Kuh getötet oder nicht. Ich sagte es gibt besondere Fälle von ganzzahligen “values” und obwohl das nicht so richtig ist, könnte sie als ganze Zahlen 1 and 0 zu betrachten nützlich sein. 0 könnte aus sein (false) und 1 könnte an darstellen (true), aber Boolean “values” sind dennoch keine Auslöser „trigger“, weshalb man nicht einfach 2 hinzufügen kann. Die Werte von Booleans sind entweder “true” oder “false”. Du kannst ein Licht aus (true) oder an (false) machen, und deine Nase könnte grün (true) oder rot (false) sein, etc. Die wahre Funktion von Boorealen ist Ausdrücke zu berechnen, was wir aber im nächsten Kapitel behandeln werden.

Der letzte Typ von „values“, den wir besprechen werden nennt sich „string“ (Anm. von Max Jet: in etwa Kette). Unter einem “string” versteht man eine Kette von Zeichen, aber das erklärt eigentlich gar nichts, oder? Ein “string” ist ein Satz, mehrere von ihnen oder auch ein paar wahllose Wörter. Stell dir „strings“ einfach als Text vor, in dem du die Nachricht von jemanden, oder seinen Namen einsetzt. „Strings” In der RGSS waren zwischen Anführungsstrichen gesetzt (entweder ' ' oder " "); einige Beispiele: 'Alex RTPson', "Hallo!", 'Ich hatte einen großen Affen und der war lustig, "sretpok jifrjio uhure", 'abc'. Es sei dir empfohlen diese Anführungsstriche zu verwenden ( ' ' ), obgleich ich lieber doppelte Anführungsstriche benutze (weil die meisten Programme es auch tun). In Ruby ist das allerdings nicht sehr effizient, da der Bearbeiter (RMXP in diesem Falle) mehr Dinge zu überprüfen hat und dadurch das System etwas verlangsamt werden könnte (Anm. von Kai: Unsinn. Ein umfallender Sack Reis in China hat mehr Auswirkung auf die Laufzeit eures Programms als Doppelte Anführungszeichen ;) Im Ernst: Verwendet doppelte Anführungszeichen und vergesst die Behauptung mit der schlechten Performance) . Zurück zu “strings”, Du lagerst Infos als “string values” und kannst sogar mehrere aneinander fügen, wie 'Ich mag ' + 'Kühe'. Genug gesagt.

Fortgeschrittene Merkmale

Ich benutze oft den Ausdruck 'verweisen' um darzulegen, wie Variablen und Werte „values“ miteinander interagieren. Das heißt der Wert existiert bereits und ist gespeichert und eine Variable greift darauf zurück, also nicht, dass jetzt die Variable eine Speichereinheit darstellt. Eine Variable zum Beispiel kann sich auf einen Wert beziehen, zwei Variablen, können aber auch auf eine und denselben Wert zurückgreifen. Ändert man diesen Wert, hat das Auswirkungen auf beide Variablen.

Variablen

manchmal müssen wir einen Wert horten, weil er später gebraucht wird. Dafür benutzen wir Variablen. Eine Variable identifiziert einen Wert „value“ durch seinen Namen, der irgendwo gehortet wurde. (Anm. von Max Jet: Den Namen einer Variable nennt man identifier). Auch Mein Alter könnte zum Beispiel eine Variabel sein, die dein Alter hortet. Später kannst du Variabeln benutzen, wie ihren Wert „value“; Du kannst Rechenoperationen mit numerischen Variabeln durchführen. In Ruby (RGSS) sind Variabeln Objekte, aber darum brauchst du dich im Moment nicht zu kümmern. Die Namen von Variabeln (identifiers) dürfen bis auf einige Ausnahmefälle nicht mit großen Buchstaben beginnen. Diese Namen sind in Ordnung: age, enemyHP, id_number, num_of_saves. Achte auf die Groß und Kleinschreibung einzelner Buchstaben! Zum Beispiel bedeutet „password“ keineswegs „passworD“, o.k.? Hier ein kleines Beispiel zu Variablen.

number1 = 9 
number2 = 1 
number3 = number1 + number2 
print number3 # 10

(Anm. von Max Jet: Dieses Beispiel funktioniert! Es ist jetzt ungeheuer wichtig die richtigen Befehle auf Englisch zu schreiben. Da ich die Ausdrücke bereits im Deutschen mit den englischen Gegenstücken dargestellt habe, werde ich die vereinfachten Beispiele eines Blocks nun nicht mehr übersetzen!)

Im Grunde genommen verschaffen wir zwei Variablen (number1 and number2) die Werte 9 und 1. Wir addieren die beiden Variablen und horten die Summe in einer dritten. (number3). Zuletzt zeigen wir den „value“ einer dritten Variabel (number3). Versuch es mal selbst. Mach ein neues Event, geh zum script Befehl auf der dritten Seite der Kommandos und schreibe den Block hin! Aktivierst du das Event, erhältst du eine Nachricht, die 10 lautet. Die gesamte Operation wurde durchgeführt, aber nur der Teil angezeigt, den du ihm befohlen hast. (Du kannst auch in den „Script Editor“ gehen und diesen Block verwenden, was dazu führt, dass du eine 10 in einer „Message Box“ angezeigt bekommst, wenn du das Spiel startest) Wie du siehst verhalten sich Variablen, wie ihre Werte. Ebenso hättest du schreiben können ( print 9 + 1 ). (Anm. Von Max Jet: der Sinn aber hier Variablen zu verwenden, ist, dass du die Werte ständig ändern kannst und unendlich viele Additionen durchführen kannst. Du hast jetzt also nicht 1+9 programmiert, wie eben eingeklammert war, sondern eine Addition an sich mit zwei Zahlen und du kannst immer wieder auf unterschiedliche Werte zurück greifen.) Hast du den “comment“ bemerkt? Er ist ignoriert worden, weil dieses Zeichen davor stand #. Sofern es nach dem Code steht, kannst du es beliebig oft verwenden. Ich werde in dieser Serie der Tutorials des öfteren ein “comment” anhängen, dass den angezigten Wert “value” darstellt. Angezeigt durch das “print“ Kommando (eine Funktion!!!). Trotzdem ist das Beispiel sehr dumm. Warum sollte man Werte in Variablen horten, wenn man sie direkt verwenden kann? Warum überhaupt Variablen?

Der Gebrauch von Variablen

Es gibt Fälle in denen du die Werte gar nicht kennst, wenn du sie benutzt. Vielleicht hast du ein Programm geschrieben, dass zwei Zahlen addiert und der Benutzer kann jede beliebige Zahl eintippen. Du kannst nicht erraten, was er benutzt. Also wenn wir die Nummer in einer Variable horten (ohne sie zu kennen) können wir mit Leichtigkeit damit arbeiten. Ein anderes Beispiel ist der Zustand des Helden in einem Spiel, du kannst nicht immer seine Attribute, wei HP, MP, Kraft und anderes kennen, oder wissen, wie viele Heilkräuter deine Gruppe hat. Warum nicht? Why not? Das Spiel ändert diese von Zeit zu Zeit und bei jedem Spieler gibt es darin enorme Unterschiede. Wir horten die HP eines Helden in einer Variable und machen damit was wir wollen! Ein letztes Beispiel zum Gebrauch einer Variable wäre ein konstanter wert, den du änderst. Zum Beispiel kennst du das Alter von jemanden, also sein Alter hat einen Wert und du nutzt es verstärlt in deinem Code, aber was passiert ,wenn sich die “value“ ändert, weil die Person Geburtstag hatte? Jetzt müsstest du jades Auftreten diese Wertes in deinen Codes ändern. Bemerke, dass der Wert constant bleibt (Während du das programm ausführst bleibt er gleich), aber ausßerhalb deines Programms kann er sich ändern! Nutzt du eine Variable, kannst du sie immer wieder auf einen anderen Wert beziehen lassen. Variablen werten für „values“ verwendet, die sich ändern. Die Information, die eine Vriable hortet bleibt nicht gleich. Du benutzt sie, weil das Prinzip deines Programmes gleich bleibt, obwohl eine Berechnung auch unterschiedlich laufen kann, aber das Prinzip bleibt erhalten!

Zuweisung

Eine Zuweisung “Assignment” weist einer Variable einen Wert zu (logisch), also wieder das alte Beispiel, eine Variable hörtet einen Wert. Um eine Zuweisung, also ein „Assignment“ durchzuführen benutzen wir das Gleichheitszeichen, aber mathematisch ist das nicht zu betrachten!!

my_var = my_vari + 7

Es bedeutet nicht, dass my_var mit my_vari + 7 gleichzusetzen ist, sondern, dass wir die Rechenoperation auf der rechten Seite durchführen und die Lösung in der linken Seite horten. Merke: Ein “Assignment” wird durch dieses Zeichen vollführt ! = ! Eine Variable wird bestätigt, wenn du ihr einen Wert zuweist (Das Programm wird es wissen!). Hier ein paar Beispiele für „Assignments“


cow = "Hallo, das ist ein zufälliger Text" 
magic = 7 + 13 - 9 * 100 / (1 - 3) 
teh_var = trueheroHP = 9999

Und eine andere möglichkeit Dinge zuzuweisen:

cow = magic = teh_var = 3 
cow, magic = 1, 2

Die erste Linie besagt "horte 3 in cow, magic und teh_var". Die zweite besagt "horte 1 in cow, horte 2 in magic".

Spaß mit Variablen!!!

Lasst uns jetzt ein paar Beispiele vornehmen. In jedem Beispiel erklärt ein „comment“ was Sache ist, dann folgt eine Variablen Operation und schließlich der allseits bekannte „print“ Befehl, der das Ergebnis anzeigt. Merke, dass ab jetzt „p“, anstelle vom vollständigen Befehl „print“ verwendet wird! Es handelt sich im Grunde um ein und denselben Befehl!!!


# Nur ein bisschen Mathematik 
# das hier * iniziiert eine Multiplikation!!! (number x number), 
# das hier / iniziiert eine Division 
a = 2 
b = 4 
p a + b # 6 
p a - b # -2 
p b - a # 2 
p a * b # 8 
p b / a # 2 
# du kannst zwei „strings“ mittels des + Zeichens verbinden 
text1 = 'mon' 
text2 = 'key'p 
text1 + text2 # "monkey" 
# Wir horten ein 'lol' in Variable1 und horten seinen Wert in v2, wir horten "!!!" in v3 
# Then we print v1 + ' ' (space) + v2 + v3 
v1 = 'lol' 
v2 = v1 
v3 = '!!!'p v1 + ' ' + v2 + v3 # "lol lol!!!" 
# Ein Weg einem string numerische Werte hinzuzufügen ist es zu verankern 
# durch #{}, tust du #{Nummer oder Variable} in das string 
# Du musst allerdings doppelte Anführungszeichen (" ") für den string benutzen. 
# Dadurch checkt der Bearbeiter den string ab #{}s 
# ansonsten wird es nicht gecheckt und keine Umrechnung erfolgt 
num = 1337 
p "The number is #{num}" # "Die Nummer ist is 1337" 
# Es geht auch mit number.to_s, so wie hier:num = 1337 
p 'The number is ' + num.to_s # "Die Nummer ist 1337" 
# Strings lassen sich zu Nummern konvertieren 
# 3 und '3' sind nicht das gleiche! 
# du kannst nicht '3' + 1 rechnen, weil '3' ein string ist. 
# um es in eine ganze Zahl zu wandeln nutze string.to_i 
var = '3' 
p var.to_i + 1 # 4 
# Du musst nicht zwangsläufig Variablen verwenden 
# um .to_s und .to_i zu benutzen 
p 'The number is ' + 1337.to_s # "Die Nummer ist 1337" 
p '3'.to_i + 1 # 4

Ergebnis

Variablen erlauben uns Werte zu horten, die sich ändern,obwohl die Beispiele den Nutzen nicht so richtig herüber gebracht haben. Variablen zu verstehen ist grundlegend wichtig, da du ohne sie nicht weit kommen wirst. Ich habe versucht alles so einfach, wie möglich zu halten, aber du kannst durch google noch haufenweise Tutorials finden, oder diese hier immer wieder lesen. Das nächste Tutorial beschreibt den Kontrollfluss, Aussagen, Zustände, wie Loops und „wenn… dann“ Bedingungen.

Zusammenfassung

  • Es gibt Fälle in denen du werte speichern musst. Werte können Nummern, strings oder Booleans sein. Nummern können ganzzahlig sein, oder Brüche (floats) Strings müssen in Anführungszeichen gesetzt werden. Booleans können „true“ oder „false“ sein.
  • Variablen präsentieren eigentlich Werte die abgespeichert sind. Variablen, werden, wie Werte verwendet. Namen von Variablen (identifiers) müssen klein anfangen und sind ansonsten abhänig von der Groß und Kleinschreibung ihrer einzelnen Buchstaben.
  • Variablen werden gebraucht um Werte zu horten, die sich ändern.
  • Wir weisen Werte Variablen zu, indem wir das Gleichsetzungszeichen verwenden. Es weist den Wert auf der rechten Seite der Variabel auf der linken Seite zu. ( var = value ). Andere Möglichkeiten von Assignments sind ( var1 = var2 = var3 = value ) und ( var1, var2 = value1, value2 )
  • Mit Variablen können wir mathematische Operationen durchführen, strings verknüpfen, Zahlen in strings verankern und Variablen von einen Typ in den nächsten konventieren.