diff options
Diffstat (limited to 'Info')
| -rw-r--r-- | Info/10/2/Snake/img/tischlein_deck_dich.png | bin | 0 -> 3162696 bytes | |||
| -rw-r--r-- | Info/10/2/Snake/slides.md | 91 |
2 files changed, 90 insertions, 1 deletions
diff --git a/Info/10/2/Snake/img/tischlein_deck_dich.png b/Info/10/2/Snake/img/tischlein_deck_dich.png Binary files differnew file mode 100644 index 00000000..edf41b85 --- /dev/null +++ b/Info/10/2/Snake/img/tischlein_deck_dich.png diff --git a/Info/10/2/Snake/slides.md b/Info/10/2/Snake/slides.md index 150657b8..cba78896 100644 --- a/Info/10/2/Snake/slides.md +++ b/Info/10/2/Snake/slides.md @@ -260,12 +260,85 @@ Ein Interface gibt zu implementierende Methoden vor. ## Essen +::: {.columns} +:::: {.column width=50%} +\begin{tikzpicture} + \begin{class}[text width=4cm]{Essen}{0,-4.5} + \attribute{Position} + \end{class} +\end{tikzpicture} +:::: + +:::: {.column width=50%} + +:::: +::: + +## Zufall + +Die Java Klasse `java.util.Random` stellt *pseudo* zufällige Zahlen bereit. + +\pause +### Verwendung + +* Importieren der Klasse: `import java.util.Random;` +* Deklarieren und Initialisieren eins Attributs vom Typ `Zufall`. +* Die Methode `nextInt(int max)` liefert eine Zahl zwischen 0 und `max`. + +**\faIcon{lightbulb} In welchem Bereich soll das Essen platziert werden?** + +\pause +### Größe des Welt + +Das Zeichenfenster misst 800x600 Pixel. + +## Tischlein deck dich + +::: {.columns} +:::: {.column width=50%} + +:::: + +:::: {.column width=50%} +```java +void Ausführen() { + ticks++; + if (ticks % 30 == 0) { + if (essen) { + essen.entfernen(); + } + int x = zufall.nextInt(780); + int y = zufall.nextInt(580); + essen = new Essen(x, y); + } + ... +} +``` +:::: +::: + + ## Wachstum +Die Schlange soll im Laufe des Spiels länger werden. + +**\faIcon{lightbulb} Welcher Datentyp eignet sich dazu eine unbekannte Anzahl an Rechtecken zuspeichern?** +\pause + +### Das Attribut `koerper` + +* Das Attribut `koerper` der Klasse `Schlange` vom Typ `Rechteck[]` verwaltet alle Körperteile +* Felder haben eine **feste** Länge, deshalb muss jedes mal ein neues größeres Feld erzeugt werden und die einzelnen Rechtecke von dem alten Feld in das neue Kopiert werden. + ## Bewegung -::: {.columns} +**\faIcon{lightbulb} Wie kommt die Schlange um die Ecke?** + +\pause + +::: {.columns align=center} :::: {.column width=50%} +\only<3>{Jedes Körperteil folgt seinem Vorgänger.} :::: :::: {.column width=50%} @@ -273,6 +346,22 @@ Ein Interface gibt zu implementierende Methoden vor. :::: ::: +## Bewegung + +```java +void bewegen() { + for (int i = koerper.length - 1; i > 0; i--) { + Rechteck vorgaenger = koerper[i-1]; + koerper[i].PositionSetzen(vorgaenger.x, vorgaenger.y); + } + + Rechteck kopf = koerper[0]; + // Kopf je nach aktueller Richtung verschieben + // kopf.Verschieben() + ... +} +``` + # Phase III - Kollisionserkennung |
