mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2024-12-01 12:19:45 +01:00
190 lines
7.1 KiB
Markdown
190 lines
7.1 KiB
Markdown
|
# Beispielprogramme des Programmierprojekts
|
||
|
|
||
|
Hier ist der Quellcode für das in der Einarbeitungsphase genutzte Spiel
|
||
|
_Battleships_ zu finden. Die Quellen bestehen aus den folgenden
|
||
|
Gradle-Unterprojekten:
|
||
|
|
||
|
* _:battleship:server_
|
||
|
* _:battleship:client_
|
||
|
* _:battleship:model_
|
||
|
* _:battleship:converter_
|
||
|
* _:common_
|
||
|
* _:jme-common_
|
||
|
|
||
|
_Battleships_ ist ein netzwerkbasiertes Spiel und besteht aus einem Server- und
|
||
|
einem Clientanteil, die in den Unterprojekten _:battleship:server_ und
|
||
|
_:battleship:client_ realisiert sind. Beide nutzen das Unterprojekt
|
||
|
_:battleship:model_, das den gemeinsamen Modellanteil enthält.
|
||
|
|
||
|
Die Unterprojekte _:common_ und _:jme-common_ enthalten Hilfsklassen.
|
||
|
|
||
|
Das Unterprojekt _:battleship:converter_ wird für _Battleships_ selbst nicht
|
||
|
benötigt, sondern enthält lediglich den Code, um ein im Spiel verwendetes
|
||
|
3d-Modell eines Schlachtschiffs in eine _J3O_-Datei umzuwandeln, die von jME
|
||
|
einfacher geladen werden kann.
|
||
|
|
||
|
## 1 Vorbereitung
|
||
|
|
||
|
Für das Programmierprojekt empfehlen wir die Verwendung von Java 20. Unter Linux
|
||
|
sollte [_Eclipse Temurin_](https://adoptium.net/temurin/releases/?version=20)
|
||
|
als JDK verwendet werden, andere JDKs können unter Linux Probleme verursachen.
|
||
|
Auf anderen Betriebssystemen empfehlen wir aber ebenfalls Temurin. Im Folgenden
|
||
|
ist beschrieben, wie Sie Temurin installieren und die Umgebungsvariable
|
||
|
**JAVA_HOME** richtig setzen, damit Sie Gradle (siehe unten) verwenden können.
|
||
|
|
||
|
### 1.1 Installation von Temurin
|
||
|
|
||
|
Laden Sie [_Eclipse Temurin_](https://adoptium.net/temurin/releases/?version=20)
|
||
|
entsprechend Ihrem Betriebssystem und Ihrer Prozessorarchitektur herunter und
|
||
|
entpacken Sie das Archiv in einem Verzeichnis Ihrer Wahl auf Ihrem Rechner.
|
||
|
|
||
|
### 1.2 Setzen von JAVA_HOME
|
||
|
|
||
|
Zur Verwendung mit Gradle muss die Umgebungsvariable **JAVA_HOME** richtig
|
||
|
gesetzt werden. Folgen Sie dazu den nachfolgenden Anweisungen entsprechend Ihrem
|
||
|
Betriebssystem:
|
||
|
|
||
|
* **Windows:**
|
||
|
|
||
|
Öffnen Sie ihre Powershell (Core) bzw. ihr Windows Terminal mit Powershell
|
||
|
(Core). Überprüfen Sie, ob die Umgebungsvariable korrekt gesetzt ist:
|
||
|
`Get-ChildItem -Path Env:JAVA_HOME`
|
||
|
Falls kein oder ein falscher Pfad gesetzt ist, setzen Sie diesen mit dem
|
||
|
folgenden Kommando (in einer Zeile):
|
||
|
`[System.Environment]::SetEnvironmentVariable('JAVA_HOME','<Pfad zum SDK>',[System.EnvironmentVariableTarget]::User)`
|
||
|
|
||
|
Alternativ können Sie die GUI verwenden. Unter Windows 10 klicken Sie die
|
||
|
Windows-Taste und dann das Zahnrad um die Einstellungen zu öffnen. Dort wählen
|
||
|
Sie "System", dann "Info" (links unten) und nun
|
||
|
"Erweiterte Systemeinstellungen" (rechts) um den Dialog "Systemeigenschaften"
|
||
|
zu starten. Im Reiter "Erweitert" klicken Sie
|
||
|
"Umgebungsvariablen..." und klicken dann unter "Benutzervariablen" den Knopf
|
||
|
"Neu..." um JAVA_HOME anzulegen oder "Bearbeiten" um ihn zu ändern. Geben Sie
|
||
|
als Name `JAVA_HOME` und als Wert den Pfad ein. Schließen Sie mit "OK".
|
||
|
|
||
|
> **(!) Beachten Sie, dass Sie die jeweilige Applikation neu starten müssen**,
|
||
|
> um von der gesetzten Umgebungsvariablen Notiz zu nehmen.
|
||
|
> Dies betrifft auch die Shell, die Sie gerade verwenden.
|
||
|
|
||
|
* **UNIX (Linux/MacOS):**
|
||
|
|
||
|
Öffnen oder erstellen Sie die Datei `~/.profile` (wenn Sie die Bash verwenden;
|
||
|
bei anderen Shells sind es andere Dateien) und ergänzen Sie am Ende der Datei
|
||
|
die Zeile:
|
||
|
|
||
|
`export JAVA_HOME="<Pfad zum entpackten Archiv>"`
|
||
|
|
||
|
Ersetzen Sie dabei `<Pfad zum entpackten Archiv>` mit dem entsprechenden Pfad.
|
||
|
Zum Beispiel:
|
||
|
|
||
|
`export JAVA_HOME="/home/user/jdk-20.0.2"`
|
||
|
|
||
|
Fügen Sie dann die folgende Zeile hinzu:
|
||
|
|
||
|
`export PATH="$JAVA_HOME/bin:$PATH"`
|
||
|
|
||
|
## 2 Programmstart
|
||
|
|
||
|
Grundsätzlich kann man das gesamte Projekt einfach in IntelliJ öffnen. Details
|
||
|
dazu sind im Aufgabenblatt zur Einarbeitungsaufgabe zu finden. Im Folgenden ist
|
||
|
beschrieben, wie die _Batttleships_ unmittelbar von der Kommandozeile gestartet
|
||
|
werden können.
|
||
|
|
||
|
Um _Battleships_ spielen zu können, muss man zuerst das Server-Programm auf
|
||
|
einem Rechner und dann zweimal das Client-Programm auf beliebigen Rechnern
|
||
|
starten, die TCP/IP-Verbindungen zum Server erlauben. Natürlich ist es auch
|
||
|
möglich, alle drei Programme auf demselben Rechner zu starten.
|
||
|
|
||
|
Es empfiehlt sich der Start von der Kommandozeile. Will man alle drei Programme
|
||
|
auf demselben Rechner starten, sollte man dazu drei Shell-Instanzen öffnen und
|
||
|
in jeder eines der Programme starten. Auf diese Weise können die
|
||
|
Logging-Ausgaben der drei Programme voneinander unterschieden werden.
|
||
|
|
||
|
Das Server-Programm startet man unmittelbar mit Gradle mit
|
||
|
|
||
|
`./gradlew :battleship:server:run`
|
||
|
|
||
|
Unter Windows kann es je nach Shell (Eingabeaufforderung cmd) erforderlich sein,
|
||
|
`/` jeweils durch `\ ` zu ersetzen.
|
||
|
|
||
|
Im Verzeichnis `battleship/server` befindet sich die Datei `config.propeties`,
|
||
|
worüber sich der Server konfigurieren lässt. Mit der Zeile `port=1234` lässt
|
||
|
sich der verwendete Server-Port (hier 1234) einstellen. Außerdem befindet sich
|
||
|
dort die Datei `logging.properties`, womit das Logging des Servers konfiguriert
|
||
|
wird.
|
||
|
|
||
|
Das Client-Programm startet man unmittelbar mit Gradle mit
|
||
|
|
||
|
`./gradlew :battleship:client:run`
|
||
|
|
||
|
Die Datei `logging.properties` im Verzeichnis `battleship/client` konfiguriert
|
||
|
das Logging des Clients.
|
||
|
|
||
|
Alternativ kann man auch die Start-Skripte
|
||
|
|
||
|
* `./battleship/server/build/install/battleship-server/bin/battleship-server`
|
||
|
* `./battleship/client/build/install/battleship/bin/battleship`
|
||
|
|
||
|
direkt in der Kommandozeile starten. Allerdings müssen sie zuvor mittels
|
||
|
|
||
|
`./gradlew installDist`
|
||
|
|
||
|
erzeugt worden sein. Beachten Sie aber, dass nur im **aktuellen
|
||
|
Arbeitsverzeichnis** nach den Dateien `config.properties` und
|
||
|
`logging.properties` gesucht wird und diese geladen werden. Das heißt, dass die
|
||
|
vordefinierten Dateien in den Verzeichnissen `battleship/server` und
|
||
|
`battleship/client` nur dann gelesen werden, wenn Sie diese Verzeichnisse als
|
||
|
aktuelle Arbeitsverzeichnisse nutzen. Wie üblich müssen Sie dazu in der
|
||
|
Kommandozeile
|
||
|
|
||
|
`cd battleship/server`
|
||
|
|
||
|
bzw.
|
||
|
|
||
|
`cd battleship/client`
|
||
|
|
||
|
eingeben.
|
||
|
|
||
|
## 3 Hinweise zu _Battleships_
|
||
|
|
||
|
Der _Battleships_-Client hat ein Menü, in das man immer mit der
|
||
|
Esc-Taste kommt. Aus dem Menü heraus lässt sich das Programm auch schließen.
|
||
|
Beachte, dass sich beim Laden und Speichern eines Spiels kein Dateidialog
|
||
|
öffnet. Vielmehr muss man den Dateipfad in das Dialogfeld eingeben. Da
|
||
|
JSON-Dateien geschrieben werden, empfiehlt sich das Datei-Suffix _.json_.
|
||
|
|
||
|
## 4 Allgemeine Gradle-Tasks:
|
||
|
|
||
|
- `./gradlew clean`
|
||
|
|
||
|
Entfernt alle `build`-Verzeichnisse und alle erzeugten Dateien.
|
||
|
|
||
|
- `./gradlew classes`
|
||
|
|
||
|
Übersetzt den Quellcode und legt unter build den Bytecode sowie
|
||
|
Ressourcen ab.
|
||
|
|
||
|
- `./gradlew javadoc`
|
||
|
|
||
|
Erzeugt die Dokumentation aus den JavaDoc-Kommentaren im Verzeichnis
|
||
|
`build/docs/javadoc` des jeweiligen Unterprojekts.
|
||
|
|
||
|
- `./gradlew test`
|
||
|
|
||
|
Führt die JUnit-Tests durch. Ergebnisse sind im Verzeichnis
|
||
|
`build/reports/tests` des jeweiligen Unterprojekts zu finden.
|
||
|
|
||
|
- `./gradlew build`
|
||
|
|
||
|
Führt die JUnit-Tests durch und erstellt in `build/distributions`
|
||
|
gepackte Distributionsdateien
|
||
|
|
||
|
- `./gradlew installDist`
|
||
|
|
||
|
Erstellt unter `battleship/client/build/install` und
|
||
|
`battleship/server/build/install` Verzeichnisse, die jeweils eine ausführbare
|
||
|
Distribution samt Start-Skripten enthält (siehe oben).
|
||
|
|
||
|
---
|
||
|
Juli 2024
|