diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2024-06-30 13:23:51 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2024-06-30 13:23:51 +0200 |
| commit | f9744a04b6a10bb695c282aae724ae9fa706b0a4 (patch) | |
| tree | 407456e8ceb381a8c6eadd973052cee7433ad158 /Info/9/3/SpaceInvaders/arbeitsauftrag2.tex | |
| parent | c9840b21d5a1615721712061fc4e11f5c7a213ca (diff) | |
| download | unterricht-f9744a04b6a10bb695c282aae724ae9fa706b0a4.tar.gz unterricht-f9744a04b6a10bb695c282aae724ae9fa706b0a4.zip | |
update my SpaceInvaders material
Diffstat (limited to 'Info/9/3/SpaceInvaders/arbeitsauftrag2.tex')
| -rw-r--r-- | Info/9/3/SpaceInvaders/arbeitsauftrag2.tex | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Info/9/3/SpaceInvaders/arbeitsauftrag2.tex b/Info/9/3/SpaceInvaders/arbeitsauftrag2.tex new file mode 100644 index 00000000..afe3615f --- /dev/null +++ b/Info/9/3/SpaceInvaders/arbeitsauftrag2.tex @@ -0,0 +1,73 @@ +\documentclass{handout} +\csname endofdump\endcsname +\usepackage{minted} +\usepackage{hyperref} +\usepackage[ngerman]{babel} +\usepackage{hyperref} +\geometry{margin=2cm} + +\title{SpaceInvaders Arbeitsauftrag 2} +\setcounter{section}{1} + +\begin{document} +\thispagestyle{empty} + +\subsection{\faIcon{desktop} Aliens überall!} + +\begin{defbox}{Der Konstruktor} +\begin{itemize} +\item \textbf{Methode} der Klasse, die beim Erzeugen ein neues Objekt aufgerufen wird. +\item Heißt immer wie die Klasse. +\item Hat \underline{keine} Angabe eines Rückgabetyps. +\end{itemize} +\end{defbox} + +\begin{enumerate} +\item (Kopiere die \texttt{Alien}-Klasse (\textit{Alien.java}) oder das ganze Projekt \textbf{SpaceInvadersVorlage2} Greenfoot-Projekt aus dem Vorlagen-Verzeichnis.) +\item Wir wollen die Aliens, die die Erde bedrohen erzeugen. + \begin{itemize} + \item Um die Anzahl der Aliens zu zählen, ergänze die Klasse \texttt{MyWorld} um das Attribut \mintinline{java}{int alienAnzahl}. + \item Wir wollen 50 Aliens in \underline{5 Reihen} aus je \underline{10 Aliens} erzeugen. + \begin{itemize} + \item Ergänze den \textbf{Konstruktor} der Klasse \texttt{MyWorld} zwei \textit{verschachtelte} \mintinline{java}{for}-Schleifen ($z \le 5$ für die \textbf{Z}eilen und $s \le 10$ für die \textbf{S}palten). + \item Erzeuge in jeder Wiederholung ein neues Alien mit \mintinline{java}{new Alien()} und füge es der Welt mit \mintinline{java}{addObject(..., 148 + s*36, 50 + z*36)} hinzu. + \item Vergiss nicht die Anzahl der Aliens in \texttt{alienAnzahl} mitzuzählen. + \end{itemize} + \end{itemize} +\end{enumerate} + +\subsection{\faIcon{desktop} Pew Pew Laser Beams!} + +\begin{enumerate} +\item Erzeuge die Klasse \texttt{Laser}, als Unterklasse der Klasse \texttt{Actor}. +\item Wähle das Bild \textit{Laser}. +\item Implementiere die Klasse nach, nach folgendem Klassendiagramm: \\[0.2cm] +\begin{tikzpicture} \begin{class}[text width=4cm]{Laser}{0, 0}\attribute{geschwindigkeit}\operation{bewegen()}\end{class}\end{tikzpicture} +\item Initialisiere die Geschwindigkeit mit dem Wert 6. +\item Implementiere die Methode \mintinline{java}{void bewegen()} der Klasse \texttt{Laser}. +\begin{itemize} +\item Sie soll die neue Position des Lasers mit \\ \mintinline{java}{setLocation(getX(), getY() - geschwindigkeit);} setzen. +\item \underline{Falls} der Laser den Rand ($y=599$ \underline{oder} $y=0$) erreicht, soll der Laser mit \\ \mintinline{java}{getWorld().removeObject(this);} von der Welt entfernt werden. +\end{itemize} +\item Implementiere die Methode \mintinline{java}{void schiessen()} der Klasse \texttt{Raumschiff} mit folgendem Code: +\begin{minted}{java} +Greenfoot.playSound("EnergyGun.wav"); +getWorld().addObject(new Laser(), getX(),getY()); +\end{minted} +\item Ergänze die Methode \texttt{act} der Klasse \texttt{Raumschiff}, dass, wenn die Leertaste (\mintinline{java}{"space"}) gedrückt ist, das Raumschiff schießt. +\item \faIcon[regular]{lightbulb} Analysiere alle Bestandteile der Zeile: \mintinline{java}{getWorld().addObject(new Laser(), getX(),getY());} +\end{enumerate} + +\subsection{\faIcon{desktop} \textbf{Für Schnelle}: Die Aliens schießen zurück!} + +\begin{enumerate} +\item Implementiere die Methode \mintinline{java}{void schiessen()} der Klasse \texttt{Alien} nach Vorbild der Klasse \texttt{Raumschiff}. +\item Ergänze die \texttt{act} Methode der Klasse \texttt{Alien} um einen Methodenaufruf der Methode \texttt{schiessen}. +\item \faIcon[regular]{lightbulb} Überlege Dir wie du die Geschwindigkeit des Lasers, beim Erzeugen, so initialisieren kannst, dass er sich auf dem Bildschirm nach unten bewegt. +\item Setze deine Überlegung um und passe deinen Code entsprechen an. +\item Die Aliens sollen nur mit einer gewissen Wahrscheinlichkeit einen Laser abfeuern. Feuere nur dann einen Laser ab, \underline{wenn} eine Zufallszahl von 0 bis 10000 (\mintinline{java}{Greenfoot.getRandomNumber(10000)}) kleiner gleich 4 ist. +\end{enumerate} + +\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} |
