aboutsummaryrefslogtreecommitdiff
path: root/Info/10/2/JumpNRun/arbeitsauftrag3.tex
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}