18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut...

27
18&3 GSG Version 18&3 GSG Version 1.17 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes „JAVA NEWS & MUSIC“ SS03 Fachhochschule Lippe und Höxter

Transcript of 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut...

Page 1: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

18&3 GSG V- 1.17GameServer + GUI

programmiert April-Juni 2003 von Knut Riechmann

als Teil des Software-Projektes „JAVA NEWS & MUSIC“ SS03

Fachhochschule Lippe und Höxter

Page 2: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

INHALT: 1 Die Idee

1.1 Ein erstes Layout vom 12.04.2003

1.2 Die Aufgabenverteilung

2 Die Server Applikation: 18&3-GSG

2.1 Charakterisierung

2.2 Die grafische Benutzeroberfläche 1

Die grafische Benutzeroberfläche 2

Die grafische Benutzeroberfläche 3

Die grafische Benutzeroberfläche 4

2.3 Aufbau der Klassen a) GameServerGUI.class

b) GameServer.class

c) GameVerbindung.class

d) GameUser.class

3 Die Umsetzung in JAVA

3.1 UML-Klassendiagramm: Vererbung

UML-Klassendiagramm: Assoziationen

3.2 a) Auszug aus der Klasse GameserverGUI

b) Auszug aus der Klasse GameServer

c) Auszug aus der Klasse GameVerbindung

Die Methode verbinden(int port)

d) Auszug aus der Klasse GameUser

e) Teile des Client-Moduls 1

Teile des Client-Moduls 2

4 Ein paar Anmerkungen...

Page 3: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

1) Die Idee

Geboren wurde die Idee ein netzwerkfähiges Spiel

zu programmieren bei der Erstellung eines ersten

Layouts für die JAVA NEWS & MUSIC Seite.

Als zu programmierendes Spiel wurde dann eine

Variante des bekannten Kartenspiels „17 und 4“

ausgewählt.

Page 4: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

1.1) Ein erstes Layout vom 12.04.2003

Page 5: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

1.2) Die Aufgabenverteilung

Aufgrund der Größe des Projektes haben wir

die Aufgaben in zwei Bereiche gegliedert:

Christian Kreienbrinck programmierte das eigentliche

Spiel als JAVA-Applet.

Der Netzwerkteil wurde von mir programmiert:

a) Client Modul, das in das Applet integriert werden konnte

b) Eigenständige JAVA-Server-Applikation

mit grafischer Benutzeroberfläche

Page 6: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2) Die Server-Applikation: 18&3-GSG

Page 7: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.1) Die Server-Applikation: 18&3 GSG

Charakterisierung:

- besteht aus vier Klassen

- grafische Benutzeroberfläche

- voll konfigurierbar

- drei Spiele gleichzeitig möglich

- absturzsicher durch Selbst-Restart

- indirekte Geschwindigkeitssteuerung

- automatische Spielernamen-Bestimmung

Page 8: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.2) Die Server-Applikation: 18&3 GSG

Die grafische Benutzeroberfläche 1

Aktuelle Konfiguration

LOG Infos

Status-Zeile

Menü-Leiste

Page 9: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.2) Die Server-Applikation: 18&3 GSG

Die grafische Benutzeroberfläche 2

Es gibt die Möglichkeit sämtliche

Servermeldungen in einer LOG-Datei zu speichern. Das Dateiauswahlfenster wurde mit

der SWING-Komponente JFileChooser realisiert.

Page 10: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.2) Die Server-Applikation: 18&3 GSG

Die grafische Benutzeroberfläche 3

Sehr viele Parameter der Server

lassen sich konfigurieren.

Mit TextField und JButton konnte

das realisiert werden.

Falsche Eingaben werden erkannt.

Konfigurationsmodus

Page 11: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

Einfache Info- und Hilfefunktionen wurden mit eigenen JFrame-Objekten realisiert.

2.2) Die Server-Applikation: 18&3 GSG

Die grafische Benutzeroberfläche 4

Page 12: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.3) Die Server-Applikation: 18&3 GSG

Aufbau der Klassen:

a) class GameServerGUI

- stellt die grafische Benutzeroberfläche bereit

- ist Erbe der SWING-Klasse JFrame

- Realisierung mit SWING-Komponenten

- Event-Handling mit Interface ActionListener

- läuft als eigenständiger Thread

- ruft eine Instanz der Klasse GameServer auf

Page 13: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.3) Die Server-Applikation: 18&3 GSG

Aufbau der Klassen:

b) class GameServer

- verwaltet den Start / das Sperren von Servern

- ist Erbe der Klasse Thread

- läuft als eigenständiger Thread

- ruft Instanzen der Klasse GameVerbindung auf

Page 14: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.3) Die Server-Applikation: 18&3 GSG

Aufbau der Klassen:

c) class GameVerbindung

- stellt jeweils einen Server dar

- ist Erbe der Klasse Thread

- läuft als eigenständiger Thread

- arbeitet mit Inputstream und Outputstream

- ruft Methoden der Klasse GameUser auf

Page 15: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

2.3) Die Server-Applikation: 18&3 GSG

Aufbau der Klassen:

d) class GameUser

- kann anhand von IP-Adressen aus Dateinamen

die Spielernamen herausfiltern

- stellt einen Dienst für die Klasse GameVerbindung

bereit

Page 16: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3) Die Umsetzung in JAVA

Im Folgenden soll auf die Umsetzung der Programmierung

in JAVA eingegangen werden. Da der gesamte Code der

4 Klassen aus genau 1036 Zeilen besteht, soll hier aus Zeitgründen

nur auf elementare Stellen eingegangen werden.

Page 17: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.1) Die Umsetzung in JAVA

UML-Klassendiagramm 1: Vererbung

Page 18: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.1) Die Umsetzung in JAVA

UML-Klassendiagramm 2: Assoziationen

Page 19: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

1. Übergabe der Konfigurationsparameter

2. Neuer THREAD: GameServer

a) Auszug aus der Klasse GameServerGUI

Page 20: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

b) Auszug aus der Klasse GameServer

1. Überwachung, ob neuer Server gestartet werden darf

2. Start eines neuen Threads: GameVerbindung

Page 21: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

c) Auszug aus der Klasse GameVerbindung

Versucht neue Verbindung

aufzubauen

Liegen Daten an, werden diese

weitergeleitet.

Page 22: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

c) Auszug aus der Klasse GameVerbindung

Die Methode:

verbinden(int port)

Page 23: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA

d) Auszug aus der Klasse GameUser

- Filterfunktion

- Dienstleistung

Page 24: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

e) Teile des Client-Moduls 1

3.2) Die Umsetzung in JAVA

import java.io.*;import java.net.*; ----------------------------------------------------------------------------------------Socket Verbindung;DataInputStream Eingangsstrom;PrintStream Ausgangsstrom;Thread lesethread; ----------------------------------------------------------------------------------------Verbindung = new Socket("192.168.0.1",6666);Eingangsstrom = new DataInputStream(Verbindung.getInputStream());Ausgangsstrom = new PrintStream(Verbindung.getOutputStream()); ----------------------------------------------------------------------------------------lesethread = new Thread(this);lesethread.start(); ----------------------------------------------------------------------------------------

- Java.io und java.net

- Socket + Ströme

- Eigener Thread

- Verbindung aufbauen

- Thread starten

Page 25: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

3.2) Die Umsetzung in JAVA e) Teile des Client-Moduls 2// In diesem Thread wird dauernd auf Daten gewartet public void run() { String Eingangsdaten; try { while (true) { Eingangsdaten = Eingangsstrom.readLine(); if(Eingangsdaten!=null) { Empfang = new Button(); Empfang.setLabel("Eingegangene Daten: "+Eingangsdaten); Fenster.add(Empfang); Fenster.show(); -------------------------------------------------------------------------------------------------------------------

public void actionPerformed (ActionEvent Ereignis) { ... if (Ereignis.getSource() == Abschicken) { Nachricht = Eingabefenster.getText(); Ausgangsstrom.println(Nachricht); } ... } }

- run()-Methode

- readLine()-Methode

- Label + Button

- Interface ActionListener

- ActionEvent-Objekt

- println()-Methode

Page 26: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

4) Ein paar Anmerkungen ...

Hürden, die zu überwinden waren:

- Sicherheitsaspekte bei JAVA-Applets Testphase ohne Java News & Music - Server

- Servergeschwindigkeit Performance contra Benutzerfreundlichkeit

- Erfahrungen mit Excelsior JET

- Synchronisation Client/Server Informationsaustausch

Page 27: 18&3 GSG Version 1.17 18&3 GSG V- 1.17 GameServer + GUI programmiert April-Juni 2003 von Knut Riechmann als Teil des Software-Projektes JAVA NEWS & MUSIC.

18&3 GSG Version 1.1718&3 GSG Version 1.17

ENDE© 2003 by Knut Riechmann, Lemgo