\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}