Prüfung:MMProg:WiSe2014:Teil 2
MMProg Prüfungspraktikum WiSe 2014/2015
Teil 2
Anmerkung: Im Prüfungspraktikum werden Ihnen Skripte zur Verfügung gestellt für den Checkout sowie für den Commit. Bitte versuchen Sie nicht selbst einen Checkout zu machen oder direkt über WebStorm zu committen.
Vorbereitung
Um diese Aufgabe zu bearbeiten müssen Sie alle Schritte ausgeführt haben welche in der Vorbereitung von Teil 1 beschrieben sind.
Spielregeln
In diesem Teil des Prüfungspraktikums geht es darum ein teilweise implementiertes Spiel fertigzustellen.
Die Spielregeln sind wie folgt:
- Anfangs erscheint ein Ziel in der Mitte des Spielfelds (blau)
- Der Spieler (grün) muss sich mithilfe der Cursor-Tasten zu diesem Ziel begeben um einen Punkt zu erhalten
- Der Computergegner (rot) bewegt sich ebenfalls zu dem Ziel; beim Erreichen verliert der Spieler einen Punkt
- Wurde das Ziel von einem der beiden Mitspieler erreicht wird die Position des Ziels zufällig verändert
Aufgabe 1
Bearbeiten Sie diese Einzelaufgabe, indem Sie ausschliesslich die Datei "controller/PlayerController.js" erweitern. Die Komponente "PlayerController" soll Tastatureingaben verarbeiten und daraufhin das Spielerobjekt entsprechend bewegen.
Implementieren Sie dazu folgendes Verahlten:
- Beim Drücken der linken Cursortaste erhält der Spieler eine horizontale Geschwindigkeit von -1
- Beim Drücken der rechten Cursortaste erhält der Spieler eine horizontale Geschwindigkeit von 1
- Beim Drücken der oberen Cursortaste erhält der Spieler eine vertikale Geschwindigkeit von -1
- Beim Drücken der unteren Cursortaste erhält der Spieler eine vertikale Geschwindigkeit von 1
- Beim Loslassen der linken oder rechten Cursortaste erhält der Spieler eine horizontale Geschwindigkeit von 0
- Beim Loslassen der oberen oder unteren Cursortaste erhält der Spieler eine vertikale Geschwindigkeit von 0
- Das Browser-Standardverhalten beim Drücken und Loslassen von Tasten soll unterdrückt werden
Wenn Sie anschließend den Browser öffnen und die Datei "index.html" laden sollten Sie den Spieler frei bewegen können.
Aufgabe 2
Bearbeiten Sie diese Einzelaufgabe, indem Sie ausschliesslich die Datei "model/Enemy.js" erweitern. Die Komponente "Enemy" simuliert den Computergegner und soll sich stets automatisch auf das "Goal"-Objekt zu bewegen.
Implementieren Sie dazu folgendes Verhalten nacheinander in der Funktion "self._aimAtGoal()":
- Der Gegner erhält zunächst eine horizontale und vertikale Geschwindigkeit von 0
- Besitzt der Gegner kein ausgewähltes Ziel wird die Funktion sofort wieder beendet
- Es werden die Mittelpunkte (x, y) vom Gegner selbst und dem ausgewählten Ziel bestimmt
- Mithilfe der Mittelpunkte werden die x- und y-Entfernung vom Gegner zum ausgewählten Ziel bestimmt
- Falls der Betrag der x-Entfernung größer ist als der Betrag der y-Entfernung
* und falls die x-Entfernung größer ist als null, erhält der Gegner eine horizontale Geschwindigkeit von -0.85 * und falls die x-Entfernung kleiner ist als null, erhält der Gegner eine horizontale Geschwindigkeit von 0.85
- Falls der Betrag der y-Entfernung größer ist als der Betrag der x-Entfernung
* und falls die y-Entfernung größer ist als null, erhält der Gegner eine vertikale Geschwindigkeit von -0.85 * und falls die y-Entfernung kleiner ist als null, erhält der Gegner eine vertikale Geschwindigkeit von 0.85
Wenn Sie anschließend den Browser öffnen und die Datei "index.html" neu laden sollte der Gegner stets das Ziel verfolgen.
Tipp: Nutzen Sie Math.abs() um den Betrag einer Zahl zu berechnen.
Abgabe
Schließen Sie zunächst WebStorm und alle weiteren Programme die Sie geöffnet haben. Öffnen Sie dann erneut das Terminal und führen Sie folgenden Befehl aus: "sh commit.sh". Geben Sie Ihr RZ-Passwort ein falls Sie dazu aufgefordert werden. Öffnen Sie abschließend folgende URL im Browser um zu überprüfen ob der Commit erfolgreich durchgeführt wurde: https://praktikum.multimedia.hs-augsburg.de/svn/RZ-Kennung/pruefung_20150119 (ersetzen Sie RZ-Kennung durch Ihre eigene)
Anmerkung: Ihr Prüfung wurde nur abgegeben falls Ihre Dateien erfolgreich committed wurden!
