Wie beschreibt man ein Level?
Ein Level beschreibt man am besten als Daten: als Tabelle, die sagt, ab welchem Punktestand welche Zahlen gelten. So wird ein Spiel schwerer, ohne dass sich der Code ändert.
Dazu gehört der Spawn-Plan: Er legt fest, wann ein neuer Gegner oder Stern im Spiel erscheint. Beides zusammen formt die Schwierigkeitskurve.
Am Ende dieser Lektion
Notiz
Ich kann ein Level als Datentabelle beschreiben und daraus einen Spawn-Plan berechnen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Level | eine Stufe des Spiels mit eigenen Zahlen | Shower |
| Spawn | das Erscheinen einer neuen Figur im Spiel | |
| Spawn-Plan | die Regel, wann Figuren erscheinen | |
| Schwierigkeitskurve | wie schnell das Spiel von Stufe zu Stufe schwerer wird | |
| Datentabelle | eine Liste von Zeilen mit Zahlen, die der Code liest | |
| Faktor | eine Zahl, mit der man einen Grundwert multipliziert | 0.15 mal 1.4 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Level ist eine Zeile in einer Tabelle
Das Spiel des Labs hat vier Level in einer Liste namens LEVELS. Jede Zeile hat einen Namen, einen Punktestand from und zwei Faktoren: einen für die Schwerkraft und einen für die Häufigkeit der Sterne.
Die Namen im Lab sind englisch: Drizzle, Shower, Storm und Meteors. Das Spiel multipliziert seine Grundwerte mit den Faktoren der Zeile.
Die vier Level des Labs
| Name | Ab Punktestand | Faktor Schwerkraft | Faktor Rate |
|---|---|---|---|
| Drizzle | 0 | 1,0 | 1,0 |
| Shower | 5 | 1,4 | 1,25 |
| Storm | 12 | 1,8 | 1,6 |
| Meteors | 20 | 2,4 | 2,0 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Das Level ist die zuletzt erreichte Zeile
Die Funktion levelFor geht die Tabelle von oben nach unten durch. Sie merkt sich jede Zeile, deren Grenze der Punktestand erreicht hat. Am Ende bleibt die letzte davon übrig.
Bei 4 Punkten gilt noch Drizzle. Bei genau 5 Punkten gilt schon Shower, denn die Grenze gehört zum neuen Level.
Ein Level aus dem Punktestand ablesen
<label for="punkte">Punkte</label>
<input id="punkte" type="range" min="0" max="30" value="0">
<p id="anzeige"></p>
Wie oft erscheint ein Stern?
Der Grundwert SPAWN_EVERY ist 50: Alle 50 Bilder erscheint ein Stern. Das Spiel teilt ihn durch den Faktor der Rate und rundet. Ein Stern erscheint, wenn die Bildnummer durch diese Zahl teilbar ist.
Die Schwerkraft des Levels ist GRAVITY mal der Faktor der Schwerkraft. In Python rundet man mit int(x + 0.5) auf die nächste ganze Zahl.
Das Ergebnis der Rechnung für die vier Level
| Level | Schwerkraft (0,15 mal Faktor) | Abstand (50 geteilt durch Faktor) | Gerundet |
|---|---|---|---|
| Drizzle | 0,150 | 50 | alle 50 Bilder |
| Shower | 0,210 | 40 | alle 40 Bilder |
| Storm | 0,270 | 31,25 | alle 31 Bilder |
| Meteors | 0,360 | 25 | alle 25 Bilder |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele schreiben "größer als" statt "größer oder gleich" für die Grenze. Dann gilt bei genau 5 Punkten noch das alte Level. Die Grenze gehört zum neuen Level.
Das Lab rechnet die Level nach
Das Skript levels.py liest die Tabelle LEVELS und die Grundwerte aus game.js. Es berechnet für jedes Level die Schwerkraft und den Abstand der Sterne.
Es gibt englische Wörter aus: den Namen, from score, gravity und a star every ... frames. Die Zahlen sind dieselben wie in der Tabelle oben.
Die Level des Spiels berechnen
docker exec jupyter python3 steps/levels.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Das Spiel wird schwerer, weil Daten sich ändern
Die erste Zeile lautet levels: 4. Dann folgen vier Zeilen. Drizzle hat die Schwerkraft 0.150 und einen Stern alle 50 Bilder, Meteors hat 0.360 und alle 25.
Der Code des Spiels bleibt gleich. Nur die Zeile der Tabelle ändert sich, und das Spiel wird schneller und dichter.