blob: c4285715bc8eab1600ae3abe1faaad93bb0bbf03 (
plain)
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
|
\documentclass{handout}
\csname endofdump\endcsname
\usepackage{minted}
\usepackage{hyperref}
\usepackage[ngerman]{babel}
\geometry{margin=2cm}
\title{JumpNRun Arbeitsauftrag 3}
\setcounter{section}{3}
\begin{document}
\thispagestyle{empty}
\subsection{Interaktive Objekte}
\subsubsection{\faIcon{desktop} Interaktive Objekte verwalten}
\begin{itemize}
\item Implementiere in einer neuen Datei das Interface \texttt{InteractiveElement}:
\begin{minted}{java}
interface InteractiveElement {
void onCollisionWithPlayer(Player player, JumpNRun jumpNRun);
}
\end{minted}
\item Ergänze die Klasse \texttt{Level} um das Attribut \texttt{interactiveObjects}, das die \emph{Gruppe} aller interaktiver Objekte speichern soll.
\item Zerstöre auch alle interaktiven Objekte, wenn das gesamte Level zerstört wird.
(\textbf{Tipp:} \mintinline{java}|Level.destroy() { ... }|)
\end{itemize}
\subsubsection{\faIcon{desktop} Mit Interaktive Objekte interagieren}
\begin{itemize}
\item Ergänze die Methode \texttt{act} der Klasse \texttt{Player}, um die Kollisionserkennung mit allen interaktiven Objekten eines Levels. \\
(Tipp: Du kannst viel von der Kollisionserkennung der \texttt{solidObjekts} kopieren.)
\item Rufe für jedes kollidierende interaktive Objekt die Methode \texttt{onCollisionWithPlayer} mit dem Player Objekt (\mintinline{java}{this}) und dem gesamten \texttt{jumpNRun} Spiel-Objekts auf. \\
(\textbf{Hinweis}: Um die Methode \mintinline{java}{onCollisionWithPlayer(...)} aufzurufen, musst das Objekt vom Typ \texttt{InteractiveElement} sein.
Wandle das Shape mit dem \href{https://inf-schule.de/oop/java/experten/vererbung/konzept_typumwandlung}{Cast}: \mintinline{java}{((InteractiveElement)shape).onC...})
\end{itemize}
\subsubsection{\faIcon{desktop} Ziel in Sicht}
\begin{itemize}
\item Implementiere die Klasse \texttt{Goal} die von der Klasse \texttt{Sprite} \emph{erbt} und das Interface \texttt{InteraktiveElement} \emph{implementiert}.
(\mintinline{java}{implements InteractiveElement})
\item Implementiere den Konstruktor der Klasse \texttt{Goal}.
\begin{itemize}
\item Wähle das Sprite $160$ aus der Sprite-Bibliothek \texttt{SpriteLibrary.Plattforms} aus. \\
(\mintinline{java}{super(x, y, SpriteLibrary.Plattforms, 160);})
\item Mit der Anweisung \mintinline{java}{playAnimation(160, 161, RepeatType.loop, 3);} lässt du die Flagge im "Wind" wehen.
\end{itemize}
\item Implementiere die Methode \texttt{onCollisionWithPlayer} der Klasse \texttt{Goal} die zum nächsten Level weiter schaltet. \\
(\textbf{Tipp:} Implementiere die Methode \mintinline{java}{JumpNRun.nextLevel(Level level)} und rufe sie mit dem Nachfolger des aktuellen Levels auf)
\end{itemize}
\subsection{\faIcon{desktop} Baue dein eigenes Spiel}
Verändere das nun fertige Grundspiel nach deinen Vorstellungen.
\begin{tcolorbox}[]
\begin{itemize}
\item Ergänze eine Stoppuhr pro Level.
\item Füge sich bewegende Hindernisse/Gegner hinzu.
\item Ergänze Powerups die eingesammelt werden können.
\item Erweitere das Spiel um einen zweiten Spieler.
\item ...
\end{itemize}
\end{tcolorbox}
\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}
|