Haupt Navigation Neben Navigation

Textausgabe

Die wichtigste und grundlegendste Funktion eines jenen Programm ist es, Text auszugeben, um dem Anwender Informationen bereitzustellen und gegebenenfalls mit ihm zu interagieren.

Deshalb werden wir in unserem ersten Programm einen Text ausgeben und danach das Programm 3 Sekunden warten lassen. Ohne die Wartezeit, ist es dem menschlichen Auge nur schwer möglich, die Textausgabe aufzufassen.

Dies liegt dem Prinzip der FpS (Frames pro Sekunde) zu Grunde. Ab 16-18 Bilder pro Sekunde wirkt eine Bildfolge auf Grund der Trägheit des Auges flüssig.

Eine Textausgabe in LUA wird über die Funktion screen:print() erstellt. Diese benötigt aber noch 4 Parameter.

  1. die x-Koordinaten
  2. die y-Koordinaten
  3. den Text
  4. die Farbe

Diese werden dann in den Klammern angegeben.

Das Koordinaten-System

Ja Klar, so ne x-Achse nach rechts und ne y-Achse nach oben…, aber nicht in der Programmierung, weder in LUA, noch anderen Sprachen.

Wir gehen immer von einem Punkt P(0/0) ganz oben links in der Ecke aus. Man kann also sagen, dass das "technische Koordinaten-System" an der x-Achse spiegelt.

Da nun die ersten Parameter geklärt wären, kommen wir nun zu Parameter drei, dem Text. Dieser sogenannte "String" (zu dt.: Zeichenfolge) ist der Inhalt, der letztendlich auf dem Bildschirm ausgeben wird, in diesem können alle Zeichen der ASCII Tabelle vorkommen (keine Sorge, alle Zeichen auf der Tastatur sind in der ASCII Tabelle vorhanden).

Das wichtige zu dieser Zeichenfolge ist, dass sie von Anführungszeichen umschlossen ist, Dies unterscheidet sie von anderen Typen wie Integralen- bzw. Fließkommazahlen, sowie Variablen.

Der letzte Parameter ist die Farbe. Diese wird über eine Funktion erstellt, sie nennt sich Color.new() und benötigt als Parameter die integralen Werte für RGB (Rot-Grün-Blau). Diese gehen von 1-255 und werden zur Ausgabefarbe zusammen gemischt.

Unser Funktionsausruf kann also wie folgt aussehen:

screen:print(10, 10, "Hello World!", Color.new(255, 255, 255))

Das Ergebnis wäre ein "Hello World!" Text der Farbe Weiß an den Koordinaten (10/10).

Jedoch ist dies noch nicht genug. Der Name screen:print hört sich so an, als ob er einen Text direkt auf den Bildschirm "drucken" würde. Dies ist aber nicht so. In Wirklichkeit wird die komplette Ausgabe erstmal in einen Buffer geschrieben. Dieser muss dann auf den Bildschirm geleert werden.

screen.flip()

Diese Parameterlose Funktion erledigt uns diesen Job.

Zuletzt noch das Angekündigte warten. Dieses wird mit der Funktion waitVblankStart() bewerkstelligt. Dieser erstmals furcht erregende Name ist wesentlich harmloser, als er wirkt.

Es wird nämlich gerade mal ein lächerlicher Parameter verwendet, der ist ein integraler Wert und gibt die zu wartende Zeit an. Jedoch Achtung: eine Sekunde wird mit 60 Angegeben, drei Sekunden also 180.

waitVblankStart(180)

der gesammte Code

Nun nochmals der ganze Code:

screen:print(10, 10, "Hello World!", Color.new(255, 255, 255))
screen.flip()
waitVblankStart(180)

Achtung:

Ich empfehle Ihnen, diesen Teil wirklich so lange zu behandeln, bis alles verstanden wurde. Diese Grundlagen sind für den Rest dieses Workshops sehr bedeutend und ohne werfen Sie sich selbst Steine in den Weg.