aboutsummaryrefslogtreecommitdiff
path: root/Info
diff options
context:
space:
mode:
Diffstat (limited to 'Info')
-rw-r--r--Info/10/2/Snake/img/tischlein_deck_dich.pngbin0 -> 3162696 bytes
-rw-r--r--Info/10/2/Snake/slides.md91
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
new file mode 100644
index 00000000..edf41b85
--- /dev/null
+++ b/Info/10/2/Snake/img/tischlein_deck_dich.png
Binary files differ
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%}
+![](img/snake.png)
+::::
+:::
+
+## 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%}
+![](img/tischlein_deck_dich.png)
+::::
+
+:::: {.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