JAdventure - Kurs zur Softwareentwicklung
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

1.3. Tasks / TODO Liste

Im nächsten Schritt wird der Arbeitsumfang für den folgenden Implementationsschritt festgelegt. Von den erfassten Schritten nehmen wir die ersten paar, die gut zusammen passen und sich gut zusammen entwickeln lassen werden:

  • In dem Spiel soll es Level geben. Diese sollen ein rechteckiges Gebiet fester Größe darstellen. Level haben einen eindeutigen Namen, der ein Level identifiziert. In einem Level können an beliebigen Stellen Elemente sein.
  • In dem Spiel gibt es Gegenstände. Gegenstände haben einen Namen, eine Ausdehnung und eine Position in dem übergeordneten Objekt.
  • Ausdehnungen sind entweder kreisförmig oder rechteckig
  • Damit wir den erstellten Client präsentieren können, brauchen wir Testlevel / Gegenstände.
  • Level können geladen und gespeichert werden, dabei werden Gegenstände mit geladen oder gespeichert.
  • Gegenstände sollen sich einzelnd als auch zusammen mit dem Element, in dem sie sind, speichern lassen.
  • Es soll beim Speichern von Gegenständen auch abgeleitete Klassen speichern und laden lassen.

Um nun eine Implementation starten zu können, müssten wir für jeden Punkt genaue Abnahmekriterien festlegen. Auf diesen Schritt wollen wir aber an dieser Stelle verzichten, da wir hier sowohl Productowner als auch Entwickler sind.

Was wir aber benötigen ist eine Liste von Tasks, die wir abarbeiten müssen.

  • Der erste Task, der auf jeden Fall gemacht werden muss, ist die Erstellung eines neuen Projektes. Hier sllten auch direkt paar Rahmenbedingungen festgelegt werden:
    • Java Version: In dem Projekt nutzen wir Java 17 - die aktuelle LTS Version
    • Build-Tool: Hier setzen wir auf Maven, damit sind wir unabhängig von einer speziellen Entwicklungsumgebung.
    • Namespace: org.jadv - die Domain jadv.org ist ebenfalls registriert und es bietet sich an, diese zu nutzen.
  • Entity Level
    • dieses soll einen Namen haben.
    • Und es soll eine feste, rechteckige Größe haben, also einfach width / height, welche einfach int sein können.
    • Es soll Gegenstände beherbergen. Diese können wir einfach in einer List speichern.
  • Entity GameObject
    • Soll enen Namen haben
    • Soll eine Größe / Ausdehnung haben
    • Soll eine Position haben.
  • Ausdehnung
    • Es soll eine rechteckige Ausdehnung geben - diese hat width / height
    • Es soll eine runde Ausdehnung geben - diese hat einen Radius.
  • Position
    • Diese besteht aus x / y Koordinate (int)
    • Es gibt eine Referenz auf das Objekt, in dem der Gegenstand ist.
  • Das Speichern soll einfach als JSON erfolgen (Festlegung der POs).
    • Als Library wird auf Gson zurück griffen.
    • Wenn ein Objekt gespeichert wird, dann werden enthaltene Dinge mit gespeichert.
  • Da das Speichern auch für abgeleitete Klassen funktionieren soll, benötigen wir Adapter damit Gson die richtigen Klassen nutzt beim deserialisieren.
  • Im Rahmen von Unit-Tests erstellen wir erste Level mit Gegenständen.