GlossarWiki:Bücher/Multimedia-Programmierung/WiSe2018: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 13: Zeile 13:
: [[HTML5-Tutorium: HowTo|HowTo]] (eine Liste mit kurzen Anleitungen, um Praktikums-/Tutoriums-Probleme zu lösen)
: [[HTML5-Tutorium: HowTo|HowTo]] (eine Liste mit kurzen Anleitungen, um Praktikums-/Tutoriums-Probleme zu lösen)


;Beispiel für Use Cases: Das Spiel [[Pong]]
;Beispiele
: [[Datei:WK Pong01 Use Cases.png|mini|600px|gerahmt|ohne|Use Cases des Spiels <code>Pong</code>]]
: [[Pong/Modellierung|Use Cases und Datenmodell]] des Spiels [[Pong]]
 
: [https://gitlab.multimedia.hs-augsburg.de/kowa/WK_Pong01.git Implementierung von Pong] ([https://glossar.hs-augsburg.de/beispiel/tutorium/2018/pong/WK_Pong01/web/ index.html])
Pong wird von zwei Spielern gespielt.
: [https://gitlab.multimedia.hs-augsburg.de/kowa/WK_Pong02.git Version 2 von Pong], Physics mit [http://brm.io/matter-js/ matter-js] ([https://glossar.hs-augsburg.de/beispiel/tutorium/2018/pong/WK_Pong02/web/ index.html])
Ein Spieler kann das Spiel starten (Startknopf) und vorzeitig
: [https://gitlab.multimedia.hs-augsburg.de/kowa/WK_TicTacToe01.git Implementierung von TicTacToe] ([https://glossar.hs-augsburg.de/beispiel/tutorium/2018/tictactoe/WK_TicTacToe01/web/ index.html])
beenden (Stopp-Knopf). Nach Spielstart können die beiden Spieler jeweils einen Schläger
: [https://gitlab.multimedia.hs-augsburg.de/kowa/WK_MovingStage01.git Implementierung einer beweglichen Bühne] ([https://glossar.hs-augsburg.de/beispiel/tutorium/2018/moving_stage/WK_MovingStage01/web/ index.html])
am linken bzw. rechten Rand des Spielfeldes mit Hilfe der Richtungstasten des
: [https://gitlab.multimedia.hs-augsburg.de/kowa/WK_Board01.git Implementierung eines interaktiven Spielbretts] ([https://glossar.hs-augsburg.de/beispiel/tutorium/2018/board/WK_Board01/web/ index.html])
Keyboards nach oben und unten bewegen.
: [https://gitlab.multimedia.hs-augsburg.de/kowa/WK_Ball04.git WK_Ball04]: Erweiterungen der [[MMProg:_Praktikum:_WiSe_2018/19|Ball-Aufgabe]]
 
:*[https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index01.html index01.html]: Wie [https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball03/web/index03.html index03.html] von  [[MMProg:_Praktikum:_WiSe_2018/19:_Ball03|Teil 3 der Ball-Aufgabe]], allerdings mit Hintergrundbild via PixiJS. Hinsichtlich der Modularisierung ist die Implementierung deutlich näher an den Beispielen Pong, TicTacToe und MovingStage – siehe nachfolgend.
Nachdem das Spiel gestartet wurde, bewegt sich
:*[https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index02.html index02.html]: Anstelle eines Vogels fliegen viele Vögel, wobei die Größe und die Startposition zufällig gewählt werden. Die Anwendung ist ähnlich zu [https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball02/web/index04c.html index04c.html] von  [[MMProg:_Praktikum:_WiSe_2018/19:_Ball02|Teil 2 der Ball-Aufgabe]], allerdings modularisiert, aber ohne Kollisionserkennung und -behandlung von zwei Vögeln. Redundanter Code wurde mittels Vererbung aus den View-Modulen entfernt (gemäß dem Motto „Keep yout code [[DRY]]“).
der Ball geradlinig im Spielfeld, wobei die Startrichtung zufällig
:*[https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index03.html index03.html]: Dies ist die gleiche Anwendung wie [https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index02.html index02.html], allerdings werden die Vögel nicht mehr statisch mittels der Konfigurationsdatei <code>config.json</code> (und der Funktion <code>concretize</code>) erzeugt, sondern dynamisch mittels der Klasse <code>ItemBuilder</code>, die in [https://glossar.hs-augsburg.de/beispiel/tutorium/2018/moving_stage/WK_MovingStage01/web/index04.html <code>app03</code> und <code>app04</code>] des [https://gitlab.multimedia.hs-augsburg.de/kowa/WK_MovingStage01.git <code>MovingStage</code>-Beispiels] eingeführt wurde. Damit können Vögel später auch wieder gelöscht werden.
gewählt wird. Kollisionen mit der oberen oder
:*[https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index04.html index04.html]: Dies ist eine Erweiterung Anwendung wie [https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index03.html index03.html]. Bei einem Klick auf einen Vogel wird dieser aus der Anwendung mittels der <code>remove</code>-Methode der Builderklasse entfernt. Zum Einsatz kommt das PixiJS-Ereignis [http://pixijs.download/dev/docs/PIXI.DisplayObject.html#event:pointerdown <code>pointerdown</code>], das auch schon in [https://gitlab.multimedia.hs-augsburg.de/kowa/WK_TicTacToe01.git <code>TicTacToe</code>] verwendet wurde.
unteren Wand haben eine Richtungsänderung des Balls
:*[https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index05.html index05.html]: Dies ist die gleiche Anwendung wie die Anwendung [https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index04.html index04.html]. Es werden allerdings in den Views nicht nur Tux und Owl, sondern auch „Moorhühner“ angezeigt. Das besondere an den Moorhühnern ist, dass sie nicht einzeln, sondern mittels eines so genannten Spritesheets in die Anwendung geladen werden: [[Datei:Hens-70.png|60px]]. Dies bietet Performanzvorteile beim Laden der Anwendung, wenn viele Bilder zum Einsatz kommen. Das SpriteSheet wurde samt der zugehörigen JSON-Datei, die die Position der einzelnen Bilder im Sheet beschreibt, mittels [https://www.codeandweb.com/texturepacker TexturePacker] erstellt.
zur Folge (Einfallswinkel = Ausfallwinkel).  
:*[https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index06.html index06.html]: Dies ist die gleiche Anwendung wie die Anwendung [https://glossar.hs-augsburg.de/beispiel/tutorium/2018/ball/WK_Ball04/web/index05.html index05.html]. Es werden allerdings nur noch Moorhühner angezeigt. Und diese werden mit Hilfe der PixiJS-Klasse [http://pixijs.download/dev/docs/PIXI.extras.AnimatedSprite.html <code>AnimatedSprite</code>] animiert. (Da PixiJS v5 sich noch im Alpha-Stadion befindet, wird noch die Klasse <code>PIXI.extras.AnimatedSprite</code> verwendet, die erst ab Version 5 als “deprecated” gilt.) Darüber hinaus wurde für die Moorhühner mit Hilfe von [https://www.codeandweb.com/physicseditor <code>PhysicsEditor</code>] ein Polygon erstellt, das den Rand der Vögel beschreibt. Dieses Polygon wird dem PixiJS-Sprite als [http://pixijs.download/dev/docs/PIXI.DisplayObject.html#hitArea <code>hitArea</code>] übergeben. Damit wird erreicht, dass ein Klick auf ein Moorhuhn nur dann von PixiJS registriert wird, wenn man tatsächlich das Huhn ({{dh}} das Moorhuhn-Bild) mit der Maus  anklickt.
 
: [https://gitlab.multimedia.hs-augsburg.de/kowa/WKLib01.git Die aktuelle Version der Bibliothek WKLib] (es kann nicht garantiert werden, dass in allen Vorlesungsbeispielen stets die aktuellste Version dieser Bibliothek enthalten ist)
Eine Kollision des Schlägers mit einem Ball hat eine Richtungsänderung des Balls zu Folge.  
Wird der Schläger im Moment der Kollision bewegt, so wird der Ball abhängig von der
Bewegungsrichtung und Geschwindigkeit des Schlägers abgelenkt.
 
Mit den Wänden hinter den Schlägern kollidiert der Ball nicht.  
Wenn er hinter einem Schläger die Bühne verlässt, erhält der Gegner, {{dh}} der
Akteur, der den anderen Schläger bedient, einen Punkt,
 
Ziel des Spiels ist es, den Ball möglichst lange im Spiel zu halten.
Der aktuelle Punktestand (Score) wird den beiden Spielern jederzeit angezeigt.


[[Kategorie:Buch|Multimedia-Programmierung]]
[[Kategorie:Buch|Multimedia-Programmierung]]
[[Kategorie:Multimedia-Programmierung]]
[[Kategorie:Multimedia-Programmierung]]

Aktuelle Version vom 15. Oktober 2019, 14:00 Uhr

Multimedia-Programmierung – Skript zur Vorlesung im WiSe 2018/2019

Autor: Wolfgang Kowarschick

Vorlesung
Theorie
UML-Diagramme: Typische Fehler
Praktikum
Einrichten einer Entwicklungsumgebung für Web-Anwendungen
Hello-World-Tutorium
Praktikumsaufgaben WiSe 2018/19
HowTo (eine Liste mit kurzen Anleitungen, um Praktikums-/Tutoriums-Probleme zu lösen)
Beispiele
Use Cases und Datenmodell des Spiels Pong
Implementierung von Pong (index.html)
Version 2 von Pong, Physics mit matter-js (index.html)
Implementierung von TicTacToe (index.html)
Implementierung einer beweglichen Bühne (index.html)
Implementierung eines interaktiven Spielbretts (index.html)
WK_Ball04: Erweiterungen der Ball-Aufgabe
  • index01.html: Wie index03.html von Teil 3 der Ball-Aufgabe, allerdings mit Hintergrundbild via PixiJS. Hinsichtlich der Modularisierung ist die Implementierung deutlich näher an den Beispielen Pong, TicTacToe und MovingStage – siehe nachfolgend.
  • index02.html: Anstelle eines Vogels fliegen viele Vögel, wobei die Größe und die Startposition zufällig gewählt werden. Die Anwendung ist ähnlich zu index04c.html von Teil 2 der Ball-Aufgabe, allerdings modularisiert, aber ohne Kollisionserkennung und -behandlung von zwei Vögeln. Redundanter Code wurde mittels Vererbung aus den View-Modulen entfernt (gemäß dem Motto „Keep yout code DRY“).
  • index03.html: Dies ist die gleiche Anwendung wie index02.html, allerdings werden die Vögel nicht mehr statisch mittels der Konfigurationsdatei config.json (und der Funktion concretize) erzeugt, sondern dynamisch mittels der Klasse ItemBuilder, die in app03 und app04 des MovingStage-Beispiels eingeführt wurde. Damit können Vögel später auch wieder gelöscht werden.
  • index04.html: Dies ist eine Erweiterung Anwendung wie index03.html. Bei einem Klick auf einen Vogel wird dieser aus der Anwendung mittels der remove-Methode der Builderklasse entfernt. Zum Einsatz kommt das PixiJS-Ereignis pointerdown, das auch schon in TicTacToe verwendet wurde.
  • index05.html: Dies ist die gleiche Anwendung wie die Anwendung index04.html. Es werden allerdings in den Views nicht nur Tux und Owl, sondern auch „Moorhühner“ angezeigt. Das besondere an den Moorhühnern ist, dass sie nicht einzeln, sondern mittels eines so genannten Spritesheets in die Anwendung geladen werden: . Dies bietet Performanzvorteile beim Laden der Anwendung, wenn viele Bilder zum Einsatz kommen. Das SpriteSheet wurde samt der zugehörigen JSON-Datei, die die Position der einzelnen Bilder im Sheet beschreibt, mittels TexturePacker erstellt.
  • index06.html: Dies ist die gleiche Anwendung wie die Anwendung index05.html. Es werden allerdings nur noch Moorhühner angezeigt. Und diese werden mit Hilfe der PixiJS-Klasse AnimatedSprite animiert. (Da PixiJS v5 sich noch im Alpha-Stadion befindet, wird noch die Klasse PIXI.extras.AnimatedSprite verwendet, die erst ab Version 5 als “deprecated” gilt.) Darüber hinaus wurde für die Moorhühner mit Hilfe von PhysicsEditor ein Polygon erstellt, das den Rand der Vögel beschreibt. Dieses Polygon wird dem PixiJS-Sprite als hitArea übergeben. Damit wird erreicht, dass ein Klick auf ein Moorhuhn nur dann von PixiJS registriert wird, wenn man tatsächlich das Huhn (d. h. das Moorhuhn-Bild) mit der Maus anklickt.
Die aktuelle Version der Bibliothek WKLib (es kann nicht garantiert werden, dass in allen Vorlesungsbeispielen stets die aktuellste Version dieser Bibliothek enthalten ist)