aboutsummaryrefslogtreecommitdiff
path: root/Info/9/3/SpaceInvaders/arbeitsauftrag2.tex
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-06-30 13:23:51 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-06-30 13:23:51 +0200
commitf9744a04b6a10bb695c282aae724ae9fa706b0a4 (patch)
tree407456e8ceb381a8c6eadd973052cee7433ad158 /Info/9/3/SpaceInvaders/arbeitsauftrag2.tex
parentc9840b21d5a1615721712061fc4e11f5c7a213ca (diff)
downloadunterricht-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.tex73
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}