diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2024-06-24 08:27:52 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2024-06-24 08:27:52 +0200 |
| commit | d8c594f747172bde90641a79b0fbcd8bb9884de0 (patch) | |
| tree | ad569312d66bb91652d31d9facf5db21f95b6969 /Info/9/3/SpaceInvaders/slides.md | |
| parent | 7be4f6accc0e996a3c15c8c5903de5f9063c5959 (diff) | |
| download | unterricht-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.md | 114 |
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 + +{.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 + +{.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** |
