aboutsummaryrefslogtreecommitdiff
path: root/Info/9/3/SpaceInvaders/slides.md
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-06-30 13:23:51 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-06-30 13:23:51 +0200
commitf9744a04b6a10bb695c282aae724ae9fa706b0a4 (patch)
tree407456e8ceb381a8c6eadd973052cee7433ad158 /Info/9/3/SpaceInvaders/slides.md
parentc9840b21d5a1615721712061fc4e11f5c7a213ca (diff)
downloadunterricht-f9744a04b6a10bb695c282aae724ae9fa706b0a4.tar.gz
unterricht-f9744a04b6a10bb695c282aae724ae9fa706b0a4.zip
update my SpaceInvaders material
Diffstat (limited to 'Info/9/3/SpaceInvaders/slides.md')
-rw-r--r--Info/9/3/SpaceInvaders/slides.md159
1 files changed, 159 insertions, 0 deletions
diff --git a/Info/9/3/SpaceInvaders/slides.md b/Info/9/3/SpaceInvaders/slides.md
index 1a262943..2ebe9bff 100644
--- a/Info/9/3/SpaceInvaders/slides.md
+++ b/Info/9/3/SpaceInvaders/slides.md
@@ -112,3 +112,162 @@ Startet einen **EVA**-Loop und ruft während dem `Update`-Schritt die `act`-Meth
* Kopiere das Greenfoot-Projekt **SpaceInvaders** aus dem Vorlagen-Laufwerk und öffne es in Greenfoot.
* Bearbeite den Arbeitsauftrag **SpaceInvaders AA 1.pdf**
+
+## \faIcon{chalkboard} Raumschiff & Alien {.standout}
+
+Das Projekt **SpaceInvadersVorlage2** enthält eine mögliche Lösung für den Arbeitsauftrag 1
+
+## Von der Klassenkarte zum Code
+
+::: {.columns align=center}
+:::: {.column width=30%}
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Raumschiff}{0, 0}
+\attribute{x}
+\attribute{y}
+\operation{bewegen()}
+\end{class}
+\end{tikzpicture}
+::::
+
+:::: {.column width=60%}
+```java
+public class Raumschiff // Klassendefinition
+{ // Attribute
+ int x;
+ int y;
+
+ // Methoden
+ public void bewegen() {
+ ...
+ }
+}
+```
+::::
+:::
+
+## Von der Klasse zum Objekt
+
+::: {.columns align=center}
+:::: {.column width=45%}
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Raumschiff}{0, 0}
+\attribute{x}
+\attribute{y}
+\operation{bewegen()}
+\end{class}
+\end{tikzpicture}
+::::
+
+:::: {.column width=5%}
+\Large $\Rightarrow$
+::::
+
+:::: {.column width=45%}
+\pause
+\begin{tikzpicture}
+\begin{object}[text width=4cm]{rs1: Raumschiff}{0, 0}
+\attribute{x = 300}
+\attribute{y = 565}
+\end{object}
+\end{tikzpicture}
+::::
+:::
+
+\vspace{1cm}
+\pause
+### \faIcon{lightbulb} Wo kommen die Attributwerte her?
+
+\pause
+Sie müssen beim Erzeugen eines Objekts angegeben werden.
+
+## Objekte erzeugen
+
+Objekte einer Klasse werden mit dem Schlüsselwort `new`{.java} erzeugt.
+
+\pause
+### \faIcon{pencil-alt} [Der Konstruktor]{.underline}
+
+>- **Methode** der Klasse, die beim Erzeugen ein neues Objekt aufgerufen wird.
+>- Heißt immer wie die Klasse.
+>- Hat [keine]{.underline} Angabe eines Rückgabetyps.
+
+\pause
+::: {.columns}
+:::: {.column width=35%}
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Raumschiff}{0, 0}
+\attribute{x}
+\attribute{y}
+\operation{bewegen()}
+\end{class}
+\end{tikzpicture}
+::::
+
+:::: {.column width=65%}
+```java
+public class Raumschiff {
+int x; // Attribute
+int y;
+public Raumschiff () { // Konstruktor
+ x = 300;
+ y = 565;
+}
+```
+::::
+:::
+
+## \faIcon{pencil-alt} Konstruktor \only<2->{mit Parametern}
+
+### \faIcon{lightbulb} Was wenn die Attributwerte nicht immer gleich sein sollen?
+
+\pause
+$\Rightarrow$ Wir können dem Konstruktor Parameter übergeben.
+
+::: {.columns align=center}
+:::: {.column width=40%}
+\pause
+`new Raumschiff(13, 12);`{.java}
+::::
+
+:::: {.column width=5%}
+\Large $\Rightarrow$
+::::
+
+:::: {.column width=45%}
+\pause
+\begin{tikzpicture}
+\begin{object}[text width=4cm]{rs1: Raumschiff}{0, 0}
+\attribute{x = 13}
+\attribute{y = 12}
+\end{object}
+\end{tikzpicture}
+::::
+:::
+
+## \faIcon{desktop} Arbeitsauftrag - Erzeuge neue Aliens 20min
+
+\centering
+Bearbeite den Arbeitsauftrag **SpaceInvaders AA 2.pdf**
+
+## Methoden aufrufen
+
+### Was wir bereits können:
+
+Methoden des eigenen Objekts aufrufen.
+
+`bewegen(); // Ruft die Methode bewegen auf dem Objekt selbst auf`{.java}
+
+### Was wir neues brauchen:
+
+Methoden anderer Objekte aufrufen.
+
+```java
+ // Ruft die Methode bewegen auf anderesObject auf
+anderesObject.bewegen();
+```
+
+## \faIcon{desktop} Arbeitsauftrag - Schiessen Schiessen Schiessen 15min
+
+\centering
+Bearbeite den Arbeitsauftrag **SpaceInvaders AA 2.pdf**