Skip to content
Snippets Groups Projects
Commit c62203b6 authored by Janek Özbay's avatar Janek Özbay :speech_balloon:
Browse files

Erste Version des Protokolls

parent 7926891e
No related branches found
No related tags found
No related merge requests found
# Schnittstellendefinition
## Allgemeines
**Verwendete Netzwerktechnologie:**
- java.net.Socket
- java.net.ServerSocket
**Art des Datentransfers:**
- Plaintext
**Andere Festlegungen:**
- Semester wird direkt übetragen => Ob Spieler auf diesem spielen kann, wird nicht im Netzwerk behandelt
- Schiffe mit der Größe `8-Credits <= 0` werden aufgeteilt in einzelne Schiffe der Größe `8-Credits/2`
**Semester - Schiffe**
1. 2, 2, 2, 2, 4, 6
2. 2, 2, 2, 2, 2,
3. 2, 2, 2, 2, 4, 6
4. 2, 2, 2, 2, 4, 6
5. 2, 2, 2, 3, 3, 6
6. 2, 1, 1, 1, 6
## API-Definition Version 1
### Trennzeichen
";" => Befehle auslesen durch String.split(";");
----
### 1. HELLO
**Synopsis:**
```
HELLO;<USERNAME>[;VERSION]
```
**Description:**
Wird durch den Client bei der Verbindung an den Host gesendet. Typischerweise die erste Nachricht.
**Options:**
* *USERNAME*: Name des hostenden Spielers
* String (UTF-8)
* Maximale Länge: 255 Zeichen
* *VERSION* (optional): Versionsnummer des Programms
* int: API_VERSION
----
### 2. VERSION_SEND (Optional)
**Synopsis:**
```
VERSION_SEND;<VERSION>
```
**Seit Version:** 1
**Description:**
Einmalig vor Spielbeginn senden um dem Peer mitzuteilen welche Version des Protokolls man benutzt. Optional.
Wird nie ein ``VERSION_SEND`` empfangen, wird per Definition Version 1 benutzt.
**Options:**
----
### 3. VERSION_ACK
**Synopsis:**
```
VERSION_ACK;<VERSION>
```
**Description:**
Einmalig vor Spielbeginn senden nachdem man das ``VERSION_SEND`` des Peers empfangen hat um sicher zu gehen dass die Version des Partners die Gleiche ist.
**Options:**
* *VERSION*: Versionsnummer des Programms
* int: API_VERSION
----
### 4. SEMESTER_SEND
**Synopsis:**
```
SEMESTER_SEND;<SEMESTER>
```
**Description:**
Einmalig vor Spielbeginn senden um dem Peer mitzuteilen in welchem Semestern man spiel.
**Options:**
* *SEMESTER*: Höchstes spielbares Semester des Sendenden
* int: Ganzzahl im Intervall [1,6]
----
### 5. SEMESTER_ACK
**Synopsis:**
```
SEMESTER_ACK;<SEMESTER>
```
**Description:**
Einmalig vor Spielbeginn senden um dem Peer mitzuteilen in welchem Semestern man spiel. Es wird ``min(meinSemester, peerSemester)`` als Semester ausgewählt. Nach Empfangen von SEMESTER_ACK kann begonnen werden die Schiffe zu setzen.
**Options:**
* *SEMESTER*: min(meinSemester, peerSemester)
* int: Ganzzahl im Intervall [1,6]
----
### 6. READY_CHECK
**Synopsis:**
```
READY_CHECK
```
**Description:**
Sendet Nachricht für Bereitschafts-Überprüfung an anderen Spieler. Erwartet eine Antwort.
----
### 7. READY_RESPONSE
**Synopsis:**
```
READY_RESPONSE;<SHIPS_PLACED>
```
**Description:**
**Options:**
* *SHIPS_PLACED*: Anzahl der noch nicht platzierten Schiffe
* int: Zahl im Intervall [0, Anzahl der nicht platzierten Schiffe]
----
### 8. START
**Synopsis:**
```
START;<WHO>
```
**Description:**
**Options:**
* *WHO*: String ∈ { "YOU", "ME" }
----
### 9. START_ACK
**Synopsis:**
```
START_ACK;<WHO>
```
**Description:**
**Options:**
* *WHO*:
* String ∈ { "YOU", "ME" }
----
### 10. FIRE
**Synopsis:**
```
FIRE;<ROW>;<COLUMN>
```
**Description:**
**Options:**
* *ROW*: Das Feld im Spielfeld welches beschossen wird
* int im Intervall [0, Spielfeldgröße-1]
* *COLUMN*: Das Feld im Spielfeld welches beschossen wird
* int im Intervall [0, Spielfeldgröße-1]
----
### 11. FIRE_ACK
**Synopsis:**
```
FIRE_ACK;<ROW>;<COLUMN;<STATUS>
```
**Description:**
**Options:**
* *ROW*: Das Feld im Spielfeld welches beschossen wird
* int im Intervall [0, Spielfeldgröße-1]
* *COLUMN*: Das Feld im Spielfeld welches beschossen wird
* int im Intervall [0, Spielfeldgröße-1]
* *STATUS*:
* String ∈ {"HIT", "MISS", "SUNK"}
----
### 12. ERROR
**Synopsis:**
```
ERROR;<MSG>
```
**Description:**
Falls ein Fehler auftritt, diesen dem Mitspieler mitteilen um Debugging auf beiden Seiten ermöglichen
**Options:**
* *MSG*: Fehler-Nachricht
* String
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment