<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-x-formal">
	<id>https://glossar.hs-augsburg.de/w/index.php?action=history&amp;feed=atom&amp;title=MMProg%3AWiSe2015%3APraktikum%3AAufgabe_6</id>
	<title>MMProg:WiSe2015:Praktikum:Aufgabe 6 - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://glossar.hs-augsburg.de/w/index.php?action=history&amp;feed=atom&amp;title=MMProg%3AWiSe2015%3APraktikum%3AAufgabe_6"/>
	<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=MMProg:WiSe2015:Praktikum:Aufgabe_6&amp;action=history"/>
	<updated>2026-07-20T18:44:46Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in GlossarWiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=MMProg:WiSe2015:Praktikum:Aufgabe_6&amp;diff=38244&amp;oldid=prev</id>
		<title>Lawrence: Die Seite wurde neu angelegt: „=Praktikumsaufgabe 6=  ==Ereignisverarbeitung==  ===Ziel===  Ziel dieser Aufgabe ist es die in dem Browser-Tutorium vermittelten Grundlagen für Ereignisverarb…“</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=MMProg:WiSe2015:Praktikum:Aufgabe_6&amp;diff=38244&amp;oldid=prev"/>
		<updated>2015-10-01T21:12:49Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „=Praktikumsaufgabe 6=  ==Ereignisverarbeitung==  ===Ziel===  Ziel dieser Aufgabe ist es die in dem Browser-Tutorium vermittelten Grundlagen für Ereignisverarb…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Praktikumsaufgabe 6=&lt;br /&gt;
&lt;br /&gt;
==Ereignisverarbeitung==&lt;br /&gt;
&lt;br /&gt;
===Ziel===&lt;br /&gt;
&lt;br /&gt;
Ziel dieser Aufgabe ist es die in dem Browser-Tutorium vermittelten Grundlagen für Ereignisverarbeitung zu vertiefen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projekt vorbereiten===&lt;br /&gt;
&lt;br /&gt;
Erzeugen Sie einen neuen Ordner &amp;quot;aufgabe6&amp;quot; innerhalb Ihres Verzeichnis/Repositories.&lt;br /&gt;
Speichern Sie alle Dateien aus dem Vorlagenordner &amp;quot;aufgabe6/vorlage&amp;quot; in diesem Ordner ab.&lt;br /&gt;
&lt;br /&gt;
Fügen Sie sämtlichen Code für die folgenden Teilaufgaben in die Datei &amp;quot;index.js&amp;quot; ein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Spiel starten===&lt;br /&gt;
&lt;br /&gt;
Registrieren Sie auf dem HTML-Input-Element mit der ID &amp;quot;start-game&amp;quot; einen Event-Listener für das &amp;quot;click&amp;quot;-Ereignis.&lt;br /&gt;
Wird der Button geklickt sollen folgendes geschehen:&lt;br /&gt;
&lt;br /&gt;
* Der Button selbst wird aus dem DOM entfernt mithilfe von &amp;lt;code&amp;gt;removeChild()&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es wird eine Funktion namens &amp;lt;code&amp;gt;startGame()&amp;lt;/code&amp;gt; aufgerufen; erzeugen Sie dazu diese zunächst leere Funktion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punktestandsanzeige erzeugen===&lt;br /&gt;
&lt;br /&gt;
Erstellen Sie eine globale Variable &amp;quot;score&amp;quot; und initialisieren Sie diese mit dem Wert 0.&lt;br /&gt;
Erweiteren Sie dann die nach wie vor leere Funktion &amp;lt;code&amp;gt;startGame()&amp;lt;/code&amp;gt; um die folgende Logik:&lt;br /&gt;
&lt;br /&gt;
* Der globalen Variable &amp;quot;score&amp;quot; wird der Wert 0 zugewiesen&lt;br /&gt;
* Es wird ein DOM-Element mit Tag-Namen &amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt; erzeugt&lt;br /&gt;
* Diesem Element wird das Attribut &amp;quot;id&amp;quot; mit Wert &amp;quot;score&amp;quot; zugewiesen&lt;br /&gt;
* Abschließend wird das DOM-Element dem &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt;-Element hinzugefügt mit &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Zielobjekt erzeugen===&lt;br /&gt;
&lt;br /&gt;
Nach der Erzeugung des Punktestands soll die Funktion &amp;lt;code&amp;gt;startGame()&amp;lt;/code&amp;gt; eine neue Funktion &amp;lt;code&amp;gt;createGameObject()&amp;lt;/code&amp;gt; aufrufen.&lt;br /&gt;
Erzeugen Sie die Funktion &amp;lt;code&amp;gt;createGameObject()&amp;lt;/code&amp;gt; und implementieren Sie folgende Logik:&lt;br /&gt;
&lt;br /&gt;
* Es wird ein DOM-Element mit Tag-Namen &amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt; erzeugt&lt;br /&gt;
* Diesem Element wird das Attribut &amp;quot;class&amp;quot; mit dem Wert &amp;quot;goal&amp;quot; zugewiesen&lt;br /&gt;
* Außerdem wird dem Element mittels CSS eine zufällige x- und y-Position zugewiesen&lt;br /&gt;
* Abschließend wird das DOM-Element dem &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt;-Element hinzugefügt mit &amp;lt;code&amp;gt;appendChild()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Tipp:&amp;#039;&amp;#039;&amp;#039; Nutzen Sie folgenden Code um einem Element per CSS eine zufällige x- und y-Position zuzuweisen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
element.style.left = Math.floor(Math.random() * 300) + &amp;#039;px&amp;#039;&lt;br /&gt;
element.style.top = 30 + Math.floor(Math.random() * 300) + &amp;#039;px&amp;#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun die Seite laden und den Button drücken um das Spiel zu starten, sollte ein grünes Rechteck gerendert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Zielobjekt abschiessen===&lt;br /&gt;
&lt;br /&gt;
Fügen Sie nun einen Event-Listener für das &amp;quot;click&amp;quot;-Ereignis auf dem Dokument hinzu, der überprüfen soll ob das Ziel geklickt wurde.&lt;br /&gt;
Dies stellen Sie fest, indem Sie das &amp;quot;class&amp;quot;-Attribut des ursprünglichen Ereignis-Ziels (&amp;lt;code&amp;gt;event.target&amp;lt;/code&amp;gt;) auf den Wert &amp;quot;goal&amp;quot; testen.&lt;br /&gt;
Ist das der Fall soll das Zielelement aus dem Dokument entfernt werden und &amp;lt;code&amp;gt;createGameObject()&amp;lt;/code&amp;gt; erneut aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun auf das grüne Rechteck klicken sollte dies verschwinden und an einer anderen Stelle ein neues erscheinen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Punktestand aktualisieren===&lt;br /&gt;
&lt;br /&gt;
Erzeugen Sie anschließend eine Funktion namens &amp;lt;code&amp;gt;renderScore()&amp;lt;/code&amp;gt;, welche den aktualisierten Punktestand darstellen soll.&lt;br /&gt;
Implementieren Sie dazu folgende Logik:&lt;br /&gt;
&lt;br /&gt;
* Es wird nach dem DOM-Element mit der ID &amp;quot;score&amp;quot; gesucht (z.B. mittels &amp;lt;code&amp;gt;querySelector()&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Der Eigenschaft &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; des Elements wird die Kombination aus &amp;quot;Punkte: &amp;quot; und dem Wert von der Variable &amp;quot;score&amp;quot; zugewiesen&lt;br /&gt;
&lt;br /&gt;
Fügen Sie außerdem einen Aufruf der Funktion an den folgenden Stellen hinzu:&lt;br /&gt;
&lt;br /&gt;
* An der Stelle in der &amp;lt;code&amp;gt;startGame()&amp;lt;/code&amp;gt;-Funktion nachdem die Punktestandsanzeige erzeugt wurde&lt;br /&gt;
* An der Stelle an der beim Klick auf ein Zielelement ein neues erzeugt wird&lt;br /&gt;
&lt;br /&gt;
An der zweiten Stelle soll die globale Variable &amp;quot;score&amp;quot; um eins hochgezählt werden.&lt;br /&gt;
Wenn Sie nun auf ein grünes Rechteck klicken sollte sich der Punktestand um eins erhöhen und angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hindernisse erzeugen===&lt;br /&gt;
&lt;br /&gt;
Um Hindernisse zu erzeugen ändern Sie nun die Funktion &amp;lt;code&amp;gt;createGameObject()&amp;lt;/code&amp;gt; wie folgt ab:&lt;br /&gt;
* Es wird ein einzelnes Argument namens &amp;quot;type&amp;quot; akzpetiert&lt;br /&gt;
* Dieses Argument wird verwendet um zu bestimmen welches Klassenattribut dem neuen Element zugewiesen wird&lt;br /&gt;
&lt;br /&gt;
Ändern Sie die beiden Stellen an denen &amp;lt;code&amp;gt;createGameObject()&amp;lt;/code&amp;gt; aufgerufen wird so, dass es nun &amp;lt;code&amp;gt;createGameObject(&amp;quot;goal&amp;quot;)&amp;lt;/code&amp;gt; heisst.&lt;br /&gt;
Fügen Sie außerdem an der Stelle wo der Punktestand um eins erhöht wird den Aufruf &amp;lt;code&amp;gt;createGameObject(&amp;quot;obstacle&amp;quot;)&amp;lt;/code&amp;gt; hinzu.&lt;br /&gt;
&lt;br /&gt;
Nun sollte mit jedem Klick auf das Ziel ein weiteres Hindernis entstehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Spiel beenden===&lt;br /&gt;
&lt;br /&gt;
Fügen Sie dann einen Event-Listener für das &amp;lt;code&amp;gt;mouseover&amp;lt;/code&amp;gt;-Ereignis hinzu, welches überprüfen soll ob Hindernisse berührt werden.&lt;br /&gt;
Dies können Sie feststellen indem Sie testen, ob das ursprüngliche Ereignis-Ziel (&amp;lt;code&amp;gt;event.target&amp;lt;/code&amp;gt;) die Klasse &amp;quot;obstacle&amp;quot; hat.&lt;br /&gt;
In diesem Fall soll der &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt;-Eigenschaft des &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt;-Elements&lt;br /&gt;
die Kombination aus dem String &amp;quot;Game over. Erreichte Punkte: &amp;quot; und dem Wert der Variable &amp;quot;score&amp;quot; zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
Nun sollte das Spiel vorbei sein sobald Sie ein Hindernis berühren und der finale Punktestand angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Spiel neustarten===&lt;br /&gt;
&lt;br /&gt;
Registrieren Sie einen Event-Listener für das &amp;lt;code&amp;gt;keyup&amp;lt;/code&amp;gt;-Ereignis auf dem Dokument um das Spiel mit Leertaste neustarten zu können.&lt;br /&gt;
Es soll überprüft werden ob &amp;lt;code&amp;gt;event.keyCode&amp;lt;/code&amp;gt; den Wert 32 hat und in diesem Fall soll die Funktion &amp;lt;code&amp;gt;startGame()&amp;lt;/code&amp;gt; aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
Erweitern Sie dann die Funktion &amp;lt;code&amp;gt;startGame()&amp;lt;/code&amp;gt; um folgende Logik damit das Spielfeld vor einem Neustart aufgeräumt wird:&lt;br /&gt;
&lt;br /&gt;
* Der Eigenschaft &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; des &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt;-Elements wird ein leerer String zugewiesen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Optional: Spiel verbessern===&lt;br /&gt;
&lt;br /&gt;
Momentan ist es möglich, dass ein Hindernis direkt an der Stelle des Mauszeigers erscheint und das Spiel beendet ist.&lt;br /&gt;
Erweitern Sie die aktuelle Implementierung so, dass ausgeschlossen ist, dass dies passieren kann.&lt;/div&gt;</summary>
		<author><name>Lawrence</name></author>
	</entry>
</feed>