Projekt:2022/RoboRally: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 18: Zeile 18:
* [https://git.ngb.schule/IF-LK-2022/RoboRally Gitea-Repository]
* [https://git.ngb.schule/IF-LK-2022/RoboRally Gitea-Repository]
* [https://board.ngb.schule/project/changeCurrentProject/7 Scrum-Board und Issue-Tracker]
* [https://board.ngb.schule/project/changeCurrentProject/7 Scrum-Board und Issue-Tracker]
* [https://zeichenmaschine.xyz/docs JavaDoc der Zeichenmaschine]
** [https://zeichenmaschine.xyz/docs/schule/ngb/zm/layers/DrawingLayer.html JavaDoc der Zeichenebene]
{{Info:Start}}
=== Hinweise zur Zeichenmaschine ===
* Die Hauptklasse <code>RoboRally</code> erweitert die Klasse [https://zeichenmaschine.xyz/docs/schule/ngb/zm/Zeichenmaschine.html Zeichenmaschine], die für die Ausführung des Programms zuständig ist und das Programmfenster verwaltet.
* Zum Zeichnen auf die Zeichenfläche wird die Klasse [https://zeichenmaschine.xyz/docs/schule/ngb/zm/layers/DrawingLayer.html DrawingLayer] verwendet. Sie bietet diverse Methoden zum Zeichnen von Formen an.
* Ein Objekt der Klasse <code>DrawingLayer</code> wird an die <code>draw</code> Methoden der verschiedenen Klassen (z.B. <code>Tile</code>) als Parameter <code>drawing</code> übergeben. (Siehe Beispiele in den vorhandenen Unterklassen von <code>Tile</code>.)
* Die meisten Klassen erben von der Oberklasse [https://zeichenmaschine.xyz/docs/schule/ngb/zm/Constants.html Constants], die eine Reihe an Hilfsmethoden zur Verfügung stellt. Diese reichen von Zufallszahlen (<code>random(int, int)</code>), über mathematische Funktionen (<code>sin(double)</code>) bis zu Abstandsberechnungen (<code>distance(double, double, double, double)</code>). So können die Methoden in den Unterklassen einfach verwendet werden.
* Die Klasse <code>Constants</code> besitzt auch eine Menge konstanter Werte und einige Variablen, die global im laufenden Programm gelten. Dazu gehören Konstanten für Farben (<code>BLUE</code>, <code>RED</code>, ...) und z.B. die Größe der Zeichenfläche (<code>canvasWidth</code>, <code>canvasHeight</code>).
{{Info:End}}


== Aufgaben Erweiterungsphase ==
== Aufgaben Erweiterungsphase ==
Zeile 26: Zeile 38:


# Entwirf eine Idee für eine neue Kachel für die Fabrikkarte. Überleg Dir dazu, wie die Kachel funktioniert und wie sie aussehen könnte.
# Entwirf eine Idee für eine neue Kachel für die Fabrikkarte. Überleg Dir dazu, wie die Kachel funktioniert und wie sie aussehen könnte.
# Erstelle eine Karte im [https://board.ngb.schule/project/changeCurrentProject/7 Scrum-Board], die Deine Kachel beschreibt. Stelle als '''Meilenstein''' "III. Erweiterung" ein und weise sie Dir selber als Bearbeiter:in zu.
# Erstelle eine Karte im [https://board.ngb.schule/project/changeCurrentProject/7 Scrum-Board], die Deine Kachel beschreibt. Stelle als '''Meilenstein''' "III. Erweiterung" ein und weise sie Dir selber als Bearbeiter:in zu. (''Prüfe auch, ob ein ähnlicher Effekt schon von jemand anderem implementiert wird und tausche Dich ggf. darüber aus. Beschreibe deinen Effekt so präzise, dass die anderen ihn nachvollziehen können.'')
# Erstelle eine neue Unterklasse der Klasse <code>Tile</code> im Paket <code>tiles</code>. Implementiere sie nach Deiner Idee und teste sie ausgiebig.
# Erstelle eine neue Unterklasse der Klasse <code>Tile</code> im Paket <code>tiles</code>. Implementiere sie nach Deiner Idee und teste sie ausgiebig.



Aktuelle Version vom 8. Dezember 2022, 09:02 Uhr

Seite zum Projekt Robo Rally des Informatik LK im Schuljahr 2022/23.

Projekt Robo Rally

In diesem Projekt entwickeln wir gemeinsam eine Version des Brettspiels "Robo Rally". Die Entwicklung wird in vier Phasen ablaufen:

  1. Analyse eines bestehenden Prototyps und Einarbeitung in Methoden der Softwaretechnik.
  2. Fertigstellung des Prototyps.
  3. Erweiterung des Prototyps um fehlende Funktionen.
  4. Freie Ausgestaltung des Programms mit weiteren Funktionen und Fehlerbehebungen.

Wichtige Links

Icon Info.png

Hinweise zur Zeichenmaschine

  • Die Hauptklasse RoboRally erweitert die Klasse Zeichenmaschine, die für die Ausführung des Programms zuständig ist und das Programmfenster verwaltet.
  • Zum Zeichnen auf die Zeichenfläche wird die Klasse DrawingLayer verwendet. Sie bietet diverse Methoden zum Zeichnen von Formen an.
  • Ein Objekt der Klasse DrawingLayer wird an die draw Methoden der verschiedenen Klassen (z.B. Tile) als Parameter drawing übergeben. (Siehe Beispiele in den vorhandenen Unterklassen von Tile.)
  • Die meisten Klassen erben von der Oberklasse Constants, die eine Reihe an Hilfsmethoden zur Verfügung stellt. Diese reichen von Zufallszahlen (random(int, int)), über mathematische Funktionen (sin(double)) bis zu Abstandsberechnungen (distance(double, double, double, double)). So können die Methoden in den Unterklassen einfach verwendet werden.
  • Die Klasse Constants besitzt auch eine Menge konstanter Werte und einige Variablen, die global im laufenden Programm gelten. Dazu gehören Konstanten für Farben (BLUE, RED, ...) und z.B. die Größe der Zeichenfläche (canvasWidth, canvasHeight).


Aufgaben Erweiterungsphase

Icon Heft.png
Arbeitsauftrag

Eine neue Kachel implementieren

Entwickele eine neue Kachel für die Karte und integriere sie in das Spiel.

  1. Entwirf eine Idee für eine neue Kachel für die Fabrikkarte. Überleg Dir dazu, wie die Kachel funktioniert und wie sie aussehen könnte.
  2. Erstelle eine Karte im Scrum-Board, die Deine Kachel beschreibt. Stelle als Meilenstein "III. Erweiterung" ein und weise sie Dir selber als Bearbeiter:in zu. (Prüfe auch, ob ein ähnlicher Effekt schon von jemand anderem implementiert wird und tausche Dich ggf. darüber aus. Beschreibe deinen Effekt so präzise, dass die anderen ihn nachvollziehen können.)
  3. Erstelle eine neue Unterklasse der Klasse Tile im Paket tiles. Implementiere sie nach Deiner Idee und teste sie ausgiebig.

Nicht jede Kachel muss eine aufwendige Aktion haben. Du kannst Dich an den Kacheln des Brettspiels orientieren, oder Dir eine eigene Idee überlegen. Zur Inspiration kannst Du auch in die Zusatzmaterialien schauen.

Deine Kachel kann auch mit einem Effekt verknüpft sein. Zum Beispiel könnte ein Roboter auf dem Feld einen Effekt bekommen oder es wird ein Effekt "geheilt".

Einen neuen Effekt implementieren

Entwickele einen neuen Effekt und integriere ihn in das Spiel.

  1. Entwirf eine Idee für einen neuen Effekt, der in das Spiel passt. Überleg Dir dazu, was der Effekt für einen Effekt (!) hat, wenn er angewandt wird und auch, wie ein Roboter diesen Effekt bekommen kann.
  2. Erstelle eine Karte im Scrum-Board, die Deinen Effekt beschreibt. Stelle als Meilenstein "III. Erweiterung" ein und weise sie Dir selber als Bearbeiter:in zu.
  3. Erstelle eine neue Unterklasse der Klasse Effect im Paket effects. Implementiere sie nach Deiner Idee und teste sie ausgiebig.