Gadsen: Tower Defense

Tutoriumsaufgabe für den Programmierwettbewerb

Hinweis: Das ist aktuell nur ein Prototyp des Spiels. Wendet euch bei Fehlern, Problemen oder Fragen gerne an uns.

Aktuellste Version: gaTDsen-1.0.5.jar (die Changelogs findet ihr hier)

Willkommen zur Tutoriumsaufgabe, die euch einen ersten Einblick in den Programmierwettbewerb für das Modul „Algorithmen und Datenstrukturen“ im Sommersemester 2024 bietet.

Die Details der Weihnachtsaufgabe findet ihr hier.

Wichtige Links:

Das Spiel entsteht im Rahmen eines studentischen Softwareprojekts. Bei Problemen und Fragen findet ihr die Kontaktmöglichkeiten hier.

Die Dokumentation des gesamten Projektes enthält alle Klassen, die das Projekt umfasst. Dazu zählen auch eine Menge nicht-wettbewerbsrelevanter Klassen. Trotzdem könnt ihr gerne mal darin herumstöbern…

Was ist das für ein Spiel?

Das gesamte Spielprinzip kannst du dir wie das Spiel „Bloons: Tower Defense“ vorstellen – nur hier mit Katzen und Mäusen

Das Spiel besteht aus einer Map, die sich aus Pfaden, Hindernissen und „normalen“ Feldern zusammensetzt.
Jede Runde bewegen sich Gegner vom Startfeld des Pfades am oberen Rand der Karte bis zum Endfeld am unteren Rand. Wenn Gegner das Endpfeld erreichen, ziehen dem Spieler Leben ab.
Durch das Platzieren von Türmen ist es dem Spieler möglich den Gegnern jede Runde Schaden zuzufügen und so zu besiegen. Für jeden besiegten Gegner erhält der Spieler eine gewisse Menge an Geld, mit der er sich weitere Türme kaufen kann.
Das Spiel wird in der Regel zu zweit gespielt, das heißt noch gegen einen weiteren gegnerischen Spieler. Beide Spieler beeinflussen sich nicht. Der Spieler, der zuerst alle seine Leben verloren hat, verliert.

Häufige Fragen

Ich habe Problem XY und/oder brauche Hilfe bei XYZ.

Wenn Probleme bei der Installation und Einrichtung auftreten, frage gerne auf dem FinEmporium-Discord oder im EinfInf-Tutorium. Wir können leider nicht jede Frage zur Dokumentation beantworten, aber hoffen diese so verständlich wie möglich formuliert zu haben.

Du hast Fragen zur Umsetzung? Diese kannst du ebenfalls gerne auf dem FinEmporium-Discord stellen. Dort können dir deine Kommilitonen dann weiterhelfen.

Da ist ein Bug!

Wenn du einen Fehler findest, schicke uns einen Screenshot und eine Anleitung wie du ihn entdeckt hast per Mail. Wir versuchen diesen dann schnellstmöglich zu beheben.

Anleitung sollte folgende Punkte enthalten:

  • Was hast du getan? (Schritte, wie es reproduzieren kann oder einen Ausschnitt vom Quellcode)
  • Was ist passiert?
  • Was sollte eigentlich passieren? Was hast du erwartet?
Wie reiche ich meinen Bot ein?

Über euer gewohntes Einreichungssytem (der EinfInf Webseite).

Externe Teilnehmer können gerne ihren Bot per Mail an uns mit dem Betreff „Bot-Einreichung xzy“.

Auf meinem Betriebssystem funktioniert das Spiel nicht.

Wir haben das Spiel auf gängigen Betriebssystemen (MacOS, Windows, Arch Linux) getestet. Unsere Pipeline baut das Spiel ebenfalls erfolgreich auf Alpine Linux.

Wir können leider nicht gewährleisten, dass es für jede Konfiguration funktioniert und können auch nur wenig daran ändern. Vielleicht findet ihr auf dem FinEmporium-Discord etwas Hilfe.

Kann ich wie für die Übungsaufgaben mehrfach einreichen?

Ja.

Darf ich Zufallszahlen verwenden?

Falls du für deinen Bot random() – Funktionen verwendest, solltest du Seeds verwenden.

So sind die Zufallszahlen bei deiner Einreichung immer gleich und dein Bot besteht auch bei erneutem Testen.

Du hast ebenfalls die Möglichkeit das random Attribut der Bot-Klasse zu verwenden, wie hier in der Bot-Vorlage. Der Seed dieses Attributs berechnet sich pro Spiel immer aus dem Quellcode der teilnehmenden Spieler. Für die gleiche Spielkonfiguration aus genau den gleichen Spielern gibt dieser Zufallszahlengenerator also für jeden Durchlauf die gleichen Werte zurück.

Kann ich „offline“ testen, ob mein Bot besteht?

Ja. Ihr könnt in der grafischen Variante die Weihnachtsaufgabe auswählen.

Wie ihr die Headless Variante (Spiel ohne grafische Oberfläche) startet, findet ihr in der Installationsanleitung.

Betreut und Organisiert von Acagamics e.V.