Wegesin | Let’s code Lua! | E-Book | www.sack.de
E-Book

E-Book, Deutsch, 316 Seiten

Reihe: Rheinwerk Computing

Wegesin Let’s code Lua!

Dein Einstieg in die Spieleprogrammierung
1. Auflage 2024
ISBN: 978-3-367-10418-5
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection

Dein Einstieg in die Spieleprogrammierung

E-Book, Deutsch, 316 Seiten

Reihe: Rheinwerk Computing

ISBN: 978-3-367-10418-5
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection



Dein spielerischer Einstieg in die Programmierung – super leicht mit der einfachen Programmiersprache Lua!

Schritt für Schritt zum ersten eigenen Game – mit diesem Buch erstellst du nicht nur dein erstes eigenes Spiel, sondern lernst auch noch nebenbei das Programmieren. Auch ohne Vorkenntnisse lernst du mithilfe von Lua die Grundlagen des Programmierens und tauchst in die spannende Fantasywelt des jungen Zauberers Marvin ein. Spiel für Spiel eignest du dir die Grundlagen der Programmierung an: Variablen, Schleifen und Funktionen. Und zum Schluss wirst du alles, was du beim Programmieren der Minispiele gelernt hast, in der „Cave of Doom“ unter Beweis stellen.

  • Schnelle Lernerfolge mit der einfachen Programmiersprache Lua
  • Spiel für Spiel: Vom Quiz, über interaktive Geschichten bis zu 2D Action
  • Ausführliche Erklärungen, viele Beispiele, Screenshots und Grafiken
  • Zeig, was du gelernt hast, in der »Cave of Doom«!

Durch die Fantasywelt des Zauberers Marvin hat dieses Buch einen spannenden roten Faden und erleichtert das Lernen auf unterhaltsame Art. Mit der Storyline schaffst du es mit Lua spielend leicht zu eigenen Ergebnissen und lernst nebenbei das Programmieren.

Aus dem Inhalt:

  • Der spielerische Einstieg in die Programmierung
  • How to Code: die Grundlagen lernen mit Lua
  • Schritt für Schritt zum ersten eigenen Game
  • Variablen und Ausdrücke, Arrays und Funktionen
  • Quiz, interaktive Geschichten, Monster bekämpfen!
  • Spiel für Spiel dazulernen
  • Einführung in Löve2D
  • Spiele mit Grafik, Sound und Input
  • Hier kommt alles zusammen: die Cave of Doom


Maxime Wegesin hat 2014 an der Uni Bonn seinen Master of Science in Mathematik abgeschlossen. Schon während seines Studiums begleitete er mehrere Programmierkurse und entdeckte seine Leidenschaft dafür, anderen das Programmieren näherzubringen. Diese Begeisterung vertiefte er als Betreuer beim ComputerCamp, wo er miterlebte, wie Jugendliche mit großer Freude ihre ersten Schritte in der Computerprogrammierung machten und ihre kreativen Ideen zum Leben erweckten. Nach dem Studium arbeitete Maxime einige Jahre als Programmierer, bevor er eine neue Herausforderung suchte und sich entschloss, eine Ausbildung zum Erzieher zu absolvieren. Heute arbeitet er in einem Kindergarten und hat seine Begeisterung für die Informatik nie verloren. Mit seinem Buch möchte Maxime jungen Menschen die Freude am Programmieren vermitteln und sie ermutigen, ihre eigenen kreativen Ideen in die Tat umzusetzen.
Wegesin Let’s code Lua! jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


  Vorwort ... 15

TEIL I.  Reisevorbereitungen ... 19

  1.  Eine (sehr) kurze Geschichte der Programmierung ... 21

  2.  Richte deine Entwicklungsumgebung ein ... 25


       Der Lua-Interpreter ... 25

       Notepad für Coder ... 29

  3.  Hacker's Delight: das Terminal ... 31


       Ordner und dir ... 31

       Ordner wechsel dich! ... 33

       Ein Ordner für unseren Code ... 33

       Dein erstes Programm ... 34

       Herzlichen Glückwunsch! ... 35

TEIL II.  Reise nach Lua ... 37

  4.  Daten, Daten, Daten ... 39


       Wie sehen Lua-Programme aus? ... 39

       Kommentare ... 40

       Variablen und Ausdrücke ... 41

       Variablennamen ... 43

       Mehrfachdeklaration und -zuweisung ... 44

       Zahlen ... 45

       Strings ... 48

       Ein Datentyp für ... nichts ... 51

       Zusammenfassung ... 51

       Game: Marvin und der Mond ... 52

  5.  Der Computer lernt zuhören ... 55


       Eingabe erwartet ... 55

       Mehr Kontrolle über die Ausgabe ... 56

       Escape-Sequenzen ... 56

       Lua hilft gern ... 58

       Fehlermeldungen ... 59

       Zusammenfassung ... 60

       Game: Der Abschied ... 61

  6.  Kleine Helfer für den Programmierer ... 63


       Wie rufe ich eine Funktion auf? ... 63

       Ein kleiner Spaziergang durch die Bibliothek ... 65

       Zusammen stark ... 69

       Zusammenfassung ... 70

       Game: Marvin auf Reisen ... 71

  7.  Entscheidungen treffen ... 73


       Wenn ja, dann Schwert ... 73

       Ansonsten was? ... 75

       Viele Bedingungen ... 75

       Codeblöcke und die Lebensdauer von Variablen ... 77

       Zur Formatierung ... 80

       Zusammenfassung ... 80

       Game: Ein Höhlenabenteuer ... 81

  8.  Rechnen mit Wahrheit ... 85


       Wann erhältst du einen Boolean? ... 85

       Und, oder, nicht? ... 87

       Kompliziertere Bedingungen ... 88

       Sind auch andere Ausdrücke als Bedingungen erlaubt? ... 89

       Zusammenfassung ... 90

       Game: Feuer, Wasser, Eis ... 91

  9.  Ich wiederhole mich sehr gern ... 97


       while und repeat ... 97

       Endlosschleifen und break ... 99

       Die for-Schleife ... 100

       Zusammenfassung ... 102

       Game: Markt der Magier ... 103

10.  Neue Helfer rekrutieren ... 111


       Eigene Funktionen definieren ... 112

       Call by Value ... 114

       Funktionen und ihre Variablen ... 115

       Eine Funktion für Zufallsnamen ... 116

       Zahlen, Strings, Booleans ... und Funktionen? ... 117

       Zusammenfassung ... 118

       Game: Die Zauberschule ... 119

11.  Daten am laufenden Band ... 127


       Arrays und Indizes ... 127

       Arrays wachsen und schrumpfen lassen ... 128

       Das Array und die for-Schleife ... 130

       Zauberhafter Umgang mit Arrays ... 131

       Mehrdimensionale Arrays ... 134

       Zusammenfassung ... 137

       Game: Der Keller ... 138

12.  Ein Held ist keine Zahl ... 145


       Vom Array zur Table ... 145

       Der Schlüssel zum Verständnis ... 146

       Tables erweitern ... 147

       Arrays sind auch nur Tables ... 148

       Eine Table, zwei Variablen ... 149

       for-Schleife revisited ... 150

       Objektorientierte Programmierung ... 151

       Ein Objekt für Ork-Krieger ... 152

       Ork-Krieger haben ihre Methoden ... 153

       Eine Fabrik für Charaktere ... 156

       Meister aller Klassen ... 157

       Charakter ist nicht gleich Charakter! ... 159

       Zusammenfassung ... 162

       Game: Die Rückkehr ... 163

13.  Codemonster in Stücke schneiden ... 173


       Unser erstes eigenes Modul ... 173

       Module und die Hauptdatei ... 175

       Variablen und Konstanten in Modulen ... 176

       Module, Module, Module ... 178

       Zusammenfassung ... 179

       Game: Cave of Doom ... 180

14.  Herzlichen Glückwunsch! ... 201


       Epilog ... 202

TEIL III.  Aufbruch in eine neue Welt ... 203

15.  What is Löve? ... 205


       Was ist ein Framework, und wozu brauchen wir es? ... 205

       Installation ... 206

       Ein kleiner Überblick über Löve ... 208

       Zusammenfassung ... 215

16.  Bewegung auf Tastendruck ... 217


       Einrichten des Projekts ... 217

       Wir laden das Spiel in Löve ... 218

       Bei jedem Tastendruck eine neue Runde ... 219

       Eine Löve-Anwendung beenden ... 222

       Eine Hauptschleife, viele Zustände ... 222

       Zusammenfassung ... 225

17.  Cave of Doom wird bunt ... 227


       Hübsche Kacheln für die Höhle ... 227

       Charaktere und Animation ... 239

       Textausgabe ... 249

       Der Vollbildmodus ... 259

       Zusammenfassung ... 259

18.  Es ist so still im Dungeon ... ... 261


       Sounds laden und abspielen ... 261

       Spiel denselben Song noch mal! ... 265

       Auch Sounds können Schlange stehen ... 267

       Zusammenfassung ... 276

19.  Zum Abschluss ... 277

  Anhang ... 279


       A ... Wie geht es von hier weiter? ... 279

       B ... Der komplette Code für Cave of Doom ... 285

       C ... Die Lua-Standardbibliothek ... 307

  Index ... 313


6.2    Ein kleiner Spaziergang durch die Bibliothek


Jetzt weißt du alles, was es über Funktionsaufrufe zu wissen gibt. Als Nächstes machen wir einen kleinen Spaziergang durch Luas Standardbibliothek und schauen, was alles möglich ist. Eine längere Liste von Funktionen findest du im Anhang.

6.2.1    GROSS und klein


Die Funktionen string.upper() und string.lower() nehmen einen String, verwandeln alle seine Buchstaben in Groß- bzw. Kleinbuchstaben und geben das Ergebnis zurück:

local s = "bEiSPieL"
print(string.upper(s)) --> BEISPIEL
print(string.lower(s)) --> beispiel

Listing 6.4     LAUT und leise

6.2.2    Ein String und seine Teile


Die Funktion string.sub() gibt einen Teil eines Strings zurück. Dazu bekommt string.sub() drei Argumente: den String, den Index des ersten Buchstabens des gewünschten Teilstrings und den Index des letzten Buchstabens des Teilstrings. Wenn du das dritte Argument weglässt, geht string.sub() davon aus, dass du den Rest des Strings bis zum letzten Buchstaben zurückbekommen möchtest.

Vielleicht fragst du dich, was mit Index gemeint ist? Der Index eines Buchstabens ist einfach die Stelle, an der er sich im String befindet. Der Index des ersten Buchstabens in einem String ist 1, der Index des zweiten Buchstabens 2 und so weiter:

String

"

B

e

i

s

p

i

e

l

"

Index

1

2

3

4

5

6

7

8

Tabelle 6.1     Strings und Indizes

Ein paar Beispiele verdeutlichen, wie das funktioniert:

local s = "Beispiel"

print(string.sub(s, 1, 3)) --> Bei
print(string.sub(s, 5, 5)) --> p
print(string.sub(s, 4, 8)) --> spiel
print(string.sub(s, 4)) --> spiel

Listing 6.5     Langsam wird es kompliziert ...

6.2.3    Wer suchet, der findet


Die Funktion string.find() sucht einen String in einem anderen. Wenn der Suchbegriff gefunden ist, gibt string.find() den Index zurück, an dem er sich befindet. Wird er nicht gefunden, gibt die Funktion nil zurück.

local index = string.find("Beispiel", "Bei")
print(index) --> 1

index = string.find("Beispiel", "spiel")
print(index) --> 4

index = string.find("Beispiel", "Spiel")
print(index) --> nil

Listing 6.6     Groß- und Kleinbuchstaben sind nicht dasselbe.

6.2.4    Die echte Länge eines Strings


Ich hatte schon erwähnt, dass der Längenoperator (#) die Anzahl der Bytes und nicht die Anzahl der Buchstaben eines Strings zurückgibt. Das kann ein Problem bei UTF-8-codiertem Text sein, weil manche Buchstaben mit mehreren Bytes codiert werden. Glücklicherweise hat Lua in Version 5.3 einige Funktionen zum Umgang mit UTF-8-codierten Strings in seine Standardbibliothek aufgenommen.

Eine davon ist utf8.len(), die die Anzahl der Buchstaben in einem String zurückgibt:

local color = "grün"

-- Das "ü" wird durch zwei Bytes kodiert.
print(#color) --> 5
-- Die Anzahl der Buchstaben erhältst du mit der Funktion utf8.len().
print(utf8.len(color)) --> 4

Listing 6.7     Vier Buchstaben

6.2.5    Spiel mit dem Zufall


Die Funktion math.random() gibt eine Zufallszahl zurück. Je nachdem, wie viele Argumente du übergibst, verhält sich math.random() unterschiedlich. Wenn du kein Argument übergibst, gibt math.random() dir eine Kommazahl zurück, die zwischen 0 und 1 liegt.

print(math.random()) --> 0.88861090307416
print(math.random()) --> 0.40266258824049

Listing 6.8     Beispielergebnisse für math.random() ohne Argument

Wenn du eine Ganzzahl übergibst, bekommst du eine zufällige ganze Zahl zwischen 1 und der übergebenen Zahl.

print(math.random(6)) --> 6
print(math.random(6)) --> 1

Listing 6.9     Beispielergebnisse für math.random() mit einem Argument

Wenn du zwei Zahlen übergibst, bekommst du eine Zahl, die zwischen diesen beiden Zahlen steht.

print(math.random(10, 20)) --> 20
print(math.random(10, 20)) --> 18

Listing 6.10     Beispielergebnisse für math.random() mit zwei Argumenten

Kann der Computer Zufall?

Wenn du eine ältere Lua-Version als Lua 5.4 verwendest, kann es sein, dass du bei jedem Programmstart dieselben Zufallszahlen erhältst. Das liegt daran, dass Computer eigentlich keine Zufallszahlen generieren können. In Wahrheit rechnet der Computer mit einer Formel Zahlen aus, die für uns aussehen wie Zufallszahlen. Man spricht daher auch manchmal von Pseudozufallszahlen.

Dazu fängt er mit einer Zahl an und berechnet aus dieser Zahl die nächste »Zufallszahl«. Die Zahl, mit der der Computer anfängt, nennt man Saat oder Seed.

In Lua kannst du die Saat selbst setzen, indem du die Funktion math.randomseed() aufrufst. Wenn du eine bestimmte Zahl als Seed setzt, wirst du immer dieselben Zufallszahlen bekommen.

Stell dir zum Beispiel vor, du möchtest ein Spiel programmieren, in dem es Tausende Sternensysteme gibt. Jeder Planet in diesem Sternensystem hat andere Eigenschaften. Weil du dir nicht jedes per Hand ausdenken willst, benutzt du Zufallszahlen, um die Sternensysteme zu generieren. Du möchtest aber, dass bei jedem Spielstart dieselben Sternensysteme generiert werden.

Dann mag es sinnvoll sein, selbst eine Saat zu setzen:

math.randomseed(123)

-- Wie viele Monde hat der Planet?
local moons = math.random(10)
-- Ist der Planet bewohnbar? (0 = Nein, 1 = Ja)
local isHabitable = math.random(0,1)

print(moons) --> 5
print(isHabitable) --> 0

Listing 6.11     Hier kommen jedes Mal dieselben Ergebnisse heraus.

Bei Lua-Versionen vor Version 5.4 musst du einen Trick anwenden, um jedes Mal andere Zufallszahlen zu bekommen: Die Funktion os.time() liefert dir die aktuelle Zeit in Sekunden. Das heißt, bei jedem Programmstart bekommst du eine andere Zahl.

math.randomseed(os.time())

-- Wie groß ist der Planet?
local diameter = math.random(2000, 140000)
-- Ist der Planet gasförmig? (0 = Nein, 1 = Ja)
local isGasPlanet = math.random(0,1)

print(diameter) --> 9
print(isGasPlanet) --> 1

Listing 6.12     Hier kommen bei jedem Aufruf unterschiedliche Zahlen heraus

In Lua 5.4 passiert das allerdings automatisch, das heißt, wenn du selbst keine Saat setzt, bekommst...


Wegesin, Maxime
Maxime Wegesin hat 2014 an der Uni Bonn seinen Master of Science in Mathematik abgeschlossen. Schon während seines Studiums begleitete er mehrere Programmierkurse und entdeckte seine Leidenschaft dafür, anderen das Programmieren näherzubringen. Diese Begeisterung vertiefte er als Betreuer beim ComputerCamp, wo er miterlebte, wie Jugendliche mit großer Freude ihre ersten Schritte in der Computerprogrammierung machten und ihre kreativen Ideen zum Leben erweckten. Nach dem Studium arbeitete Maxime einige Jahre als Programmierer, bevor er eine neue Herausforderung suchte und sich entschloss, eine Ausbildung zum Erzieher zu absolvieren. Heute arbeitet er in einem Kindergarten und hat seine Begeisterung für die Informatik nie verloren. Mit seinem Buch möchte Maxime jungen Menschen die Freude am Programmieren vermitteln und sie ermutigen, ihre eigenen kreativen Ideen in die Tat umzusetzen.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.