aboutsummaryrefslogtreecommitdiff
path: root/Info/9/3/SpaceInvaders/slides.md
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-06-24 08:27:52 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-06-24 08:27:52 +0200
commitd8c594f747172bde90641a79b0fbcd8bb9884de0 (patch)
treead569312d66bb91652d31d9facf5db21f95b6969 /Info/9/3/SpaceInvaders/slides.md
parent7be4f6accc0e996a3c15c8c5903de5f9063c5959 (diff)
downloadunterricht-d8c594f747172bde90641a79b0fbcd8bb9884de0.tar.gz
unterricht-d8c594f747172bde90641a79b0fbcd8bb9884de0.zip
add SpaceInvaders project
Diffstat (limited to 'Info/9/3/SpaceInvaders/slides.md')
-rw-r--r--Info/9/3/SpaceInvaders/slides.md114
1 files changed, 114 insertions, 0 deletions
diff --git a/Info/9/3/SpaceInvaders/slides.md b/Info/9/3/SpaceInvaders/slides.md
new file mode 100644
index 00000000..1a262943
--- /dev/null
+++ b/Info/9/3/SpaceInvaders/slides.md
@@ -0,0 +1,114 @@
+---
+header-includes: |
+ \makeatletter
+ \beamer@ignorenonframefalse
+ \makeatother
+---
+
+## Ziel
+
+![](img/space-invaders.png){.center}
+
+## \faIcon{pencil-alt} Arbeitsauftrag - Modellierung 10 min {.standout}
+
+Erstelle eine Klassendiagramm (mehrere Klassenkarten) zu allen Klassen, die
+du bei SpaceInvaders entdecken kannst.
+
+## Exkurs: Wie funktioniert ein Spiel?
+
+* Wer zeichnet das Bild?
+* Wer spielt den Ton ab?
+* Wer prüft ob eine Taste gedrückt wurde?
+* Wer ruft die Methoden unserer Objekte auf und wann?
+
+\pause
+
+Eine \boldred{Engine} und in unserem Fall Greenfoot.
+
+## Exkurs: EVA-Prinzip {.t}
+
+::: {.columns}
+:::: {.column width=65%}
+\vspace{0.2cm}
+\only<2->{
+Trennung der Datenverarbeitung in:
+
+\begin{itemize}
+\item \boldred{E}ingabe: \texttt{input()}
+\item \boldred{V}erarbeitung: \texttt{update()}
+\item \boldred{A}usgabe: \texttt{output()}
+\end{itemize}
+}
+
+\vspace{0.1cm}
+\only<3->{\textbf{\faIcon{lightbulb} Wie oft müssen wir die drei Schritte ausführen?}}
+
+\only<4->{
+Solange das Spiel läuft!
+
+\begin{block}{EVA-Loop}
+\phantomsection\label{eva-loop}
+
+\texttt{solange Spiel aktiv}\\
+~~\texttt{input()}\\
+~~\texttt{update()}\\
+~~\texttt{output()}\\
+\end{block}
+}
+::::
+
+:::: {.column width=30%}
+\vspace{1.5cm}
+\begin{tikzpicture}
+\only<2->{
+ \node[line width=1pt, draw, minimum width=3cm, rounded corners=5pt] (e) {Eingabe};
+ \node[line width=1pt, draw, minimum width=3cm, rounded corners=5pt, below=of e] (v) {Verarbeitung};
+ \node[line width=1pt, draw, minimum width=3cm, rounded corners=5pt, below=of v] (a) {Ausgabe};
+
+ \draw[-{Triangle}, line width=1pt] (e) to (v);
+ \draw[-{Triangle}, line width=1pt] (v) to (a);
+}
+
+\only<4>{
+ \draw[-{Triangle}, line width=1pt, dashed]
+ (a.east) --
+ ($(a.east) + (0.5, 0)$) --
+ ($(e.east) + (0.5, 0)$) --
+ (e.east);
+}
+\end{tikzpicture}
+::::
+:::
+
+## `Update()` - der spannende Teil
+
+Greenfoot hat zwei wichtige Klassen:
+
+* World - Die Spielwelt
+* Actor - Ein Objekt, das Teil der Welt ist und etwas tun kann
+
+### Ein Actor
+
+Damit Grennfoot ein Objekt etwas tun lassen kann, muss es ein `Actor` *sein*.
+
+### Wie geht das? (Genaueres beim nächsten Mal)
+
+* Die Klassendefinition muss `class Klassenname extends Actor { ... }`{.java} enthalten
+* Die Klassen muss die Methode`public void act() { ... }`{.java} definieren
+
+## Greenfoot und die geheimnisvollen Knöpfe
+
+![](img/greenfoot_buttons.png){.center}
+
+### Act
+
+Ruft die `act`-Methode jedes Actors [einmal]{.underline} auf.
+
+### Run
+
+Startet einen **EVA**-Loop und ruft während dem `Update`-Schritt die `act`-Methode jedes Actors auf.
+
+## \faIcon{desktop} Arbeitsauftrag - Implementiere die Klasse Raumschiff
+
+* Kopiere das Greenfoot-Projekt **SpaceInvaders** aus dem Vorlagen-Laufwerk und öffne es in Greenfoot.
+* Bearbeite den Arbeitsauftrag **SpaceInvaders AA 1.pdf**