19 Polymorphie

Eigentlich haben wir Polymorphie schon in vielen anderen Beispielen verwendet, ohne etwas davon mitzubekommen. In dieser Lektion werden wir uns aber noch einmal bewusst damit auseinander setzen. Definition Polymorphie bedeutet Vielgestaltigkeit und besagt in ihrem einfachsten Fall, dass Funktionen nach außen hin gleich aussehen (die gleiche Signatur haben), aber unterschiedliches Verhalten implementieren. Dynamisches Binden Am…

Animationen

Um CanvasElemente zu animieren kann man zwei Varianten wählen. Subklasse erzeugen Man erzeugt eine Subklasse vom CanvasElement, welches man animieren möchte. Zum Beispiel AnimierterKreis, welche von Kreiserben soll. In dieser Subklasse kann die animate()Funktion überschrieben werden. class AnimierterKreis : Kreis(){ override suspend fun onEveryFrame() { super.animate() x++ y++ } } Animationsroutine hinzufügen Will man zu…

Szenen

Um Szenen einzubauen, muss man erstmal verstehen, wie diese in der Engine gehandhabt werden. Ein implementiertes Beispielprojekt findet sich bei den Samples: DefaultScene Die Engine selbst startet immer mit einer DefaultScene, welche alle Einstellungen aus der Engine übernimmt. Modul Will man Szenen implementieren, so muss man bei der Engine ein Modul anmelden. Dieses erbt von…

CanvasElemente anzeigen lassen

Um CanvasElemente anzeigen zu lassen, muss man erstmal eines erstellen. Da es sich bei CanvasElementum eine abstrakte Klasse handelt, kann man hiervon keine eigene Instanz (kein Objekt) erzeugen. Hierfür stehen die vorgefertigen Klassen wie Kreis oder Rechteck zur Verfügung. (Hinweis: Klassen für CanvasElemente besitzen Deutsche Namen und Properties, Klassen für Objekte, die der Physik-Simulation gehorchen…

Tastatur- und Mauseingaben

Tastatureingaben Das Singleton Keyboard bildet alle momentan gedrückten Tasten ab. Man kann sie sehr einfach abfragen. Etwa in der animate()-Funktion der CanvasElements oder der Bodies: override suspend fun animate() { super.animate() if (Keyboard.isKeyDown(Key.DOWN)) { radius– } if (Keyboard.isKeyDown(Key.UP)) { radius++ } } Zusätzlich kann das Interface KeyEventReacteable eingebunden werden. Dies funktioniert ähnlich den Mouse-Events (siehe…

Kamera verwenden

Um Spiele oder Anwendungen zu gestalten, deren bespielbare Welt über ein einziges Fenster hinaus geht, kann man eine Kamera verwenden. Hierzu muss bei der Engine ein CameraController registriert werden. Dies muss zwingend erfolgen, nachdem der View aufgebaut wurde: viewDidLoad { // Wir erzeugen einen CameraController, der die Standard-Kamera der Engine verwendet. val cameraController = MeinCameraController(engine.camera)…

18 Übung : Sortieralgorithmen

Sortieralgorithmen sind in der Informatiker-Ausbildung sehr beliebt. Wir werden in der zugehörigen Übung Arrays mit verschiedenen Sortieralgorithmen sortieren. Darunter BubbleSort und SelectionSort. Es gibt aber noch viel mehr solcher Algorithmen. Algorithmen allgemein Verfahren mit einer endlichen
 Beschreibung unter Verwendung wohldefinierter Einzelanweisungen. Beachten Sie, dass die Beschreibung endlich sein muss, nicht die Laufzeit/Ausführung. Ein wohldefinierter Einzelschritt…