1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
\documentclass{handout}
\csname endofdump\endcsname
\usepackage{minted}
\usepackage{hyperref}
\usepackage[ngerman]{babel}
\usepackage{hyperref}
\geometry{margin=2cm}
\title{SpaceInvaders Arbeitsauftrag 1}
\setcounter{section}{1}
\begin{document}
\thispagestyle{empty}
\subsection{\faIcon{desktop} Erste Klasse: Das Raumschiff}
\begin{enumerate}
\item Kopiere die \textbf{SpaceInvaders} Greenfoot-Projekt Vorlage aus dem Vorlagen-Verzeichnis.
\item Erstelle eine neue Klasse \texttt{Raumschiff} als Unterklasse von \texttt{Actor}:
\begin{itemize}
\item Klicke mit der rechten Maustaste auf die Klasse \texttt{Actor} und wähle "\textit{neue Unterklasse}".
\item Wähle als Bild "\textit{shuttle}" aus.
\item Ergänze die Klasse \texttt{Raumschiff} um die Methode \texttt{pruefeTastatur()}.
\begin{itemize}
\item Sie soll mithilfe der von Greenfoot bereit gestellten Methode \newline \mintinline{java}{Greenfoot.isKeyDown(String keyName)} prüfen, ob die linke bzw. rechte Pfeiltaste (\mintinline{java}{"left"} bzw. \mintinline{java}{"right"}) gedrückt ist und entsprechend das Raumschiff um \underline{drei} Felder nach links bzw. rechts bewegen.
\end{itemize}
\item Ergänze dazu die Klasse \texttt{Raumschiff} um die Methode \mintinline{java}{bewegen(int felder)}.
\begin{itemize}
\item Die Position eines Actors kannst du mit der Methode \mintinline{java}{setLocation(int x, int y)} setzen.
\item Setze die neue Position auf den Punkt $P(x_{alt} - \text{felder}| y_{alt})$
\end{itemize}
\end{itemize}
\end{enumerate}
\begin{defbox}{Methoden der Klasse \texttt{Actor}}
\begin{itemize}
\item \mintinline{java}{int getX()} - liefert die aktuelle X-Position
\item \mintinline{java}{int getY()} - liefert die aktuelle Y-Position
\item \mintinline{java}{void setLocation(int x, int y)} - setzt das Objekt auf den Punkt $P(x | y)$.
\end{itemize}
\end{defbox}
\subsection{\faIcon{desktop} Das Raumschiff ist Teil der Welt}
\begin{itemize}
\item Erzeuge ein neues Raumschiff, wie du es gewohnt bist und teste es, indem du die \mintinline{java}{bewegen(int felder)} Methode aufrufst.
\item Damit das Raumschiff nicht erst per Hand neu erzeugt werden muss, füge in der Methode \texttt{MyWorld} der Klasse \texttt{MyWorld} folgende Zeilen hinzu:
\begin{minted}{java}
Raumschiff raumschiff;
raumschiff = new Raumschiff();
addObject(raumschiff, 300, 565);
\end{minted}
\item Teste deine Welt, indem du den Start-Knopf drückst.
\end{itemize}
\subsection{\faIcon{lightbulb} \underline{Für Schnelle}: Was macht dieser Code?}
Stelle eine Vermutung auf, was jede Zeile des neuen Codes in der Methode \texttt{MyWorld} bewirkt.
Was kommt dir davon bekannt vor?
Versuche die Werte in \mintinline{java}{addObject} zu verändern und überprüfe deine Vermutung.
\subsection{\faIcon{desktop} \underline{Für sehr Schnelle}: Die Klasse Alien}
Implementiere analog zu deinem Vorgehen bei der Klasse \texttt{Raumschiff} die Klasse \texttt{Alien} als Unterklasse von \texttt{Actor}, mit dem Bild "\textit{Alien1}".
\begin{itemize}
\item Ergänze die Klasse \texttt{Alien} um das Attribut \texttt{geschwindigkeit} und initialisiere es mit dem Wert \mintinline{java}{2}.
\item Die Klasse \mintinline{java}{act()} soll zunächst nur die Methode \mintinline{java}{bewegen()} aufrufen.
\item Implementiere die Methode \mintinline{java}{bewegen()} der Klasse \texttt{Alien}.
\begin{itemize}
\item Die Methode soll das Alien immer um \texttt{geschwindigkeit} Felder nach rechts bewegen.
\item Prüfe, ob das Alien den linken ($x = 0$) oder rechten Seitenrand ($x = 599$) berührt.
\item Falls ja, drehe das Vorzeichen der Geschwindigkeit und setze die neue Position mit \newline \mintinline{java}{setLocation(getX() + geschwindigkeit, getY() + 36);}.
\end{itemize}
\end{itemize}
\vfill
Dieses Werk ist lizenziert unter einer \href{https://creativecommons.org/licenses/by-sa/4.0/}{CC BY-SA 4.0} Lizenz \faCreativeCommons\ \faCreativeCommonsBy\ \faCreativeCommonsSa.
\end{document}
|