Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

programmiert April-Juni 2003 von Knut Riechmann

Ähnliche Präsentationen


Präsentation zum Thema: "programmiert April-Juni 2003 von Knut Riechmann"—  Präsentation transkript:

1 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

2 INHALT: 1 Die Idee 1.1 Ein erstes Layout vom 12.04.2003
1.2 Die Aufgabenverteilung 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 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 Ein paar Anmerkungen...

3 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.

4 1.1) Ein erstes Layout vom

5 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

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

7 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

8 2.2) Die Server-Applikation: 18&3 GSG
Die grafische Benutzeroberfläche 1 Status-Zeile Menü-Leiste LOG Infos Aktuelle Konfiguration

9 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.

10 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

11 2.2) Die Server-Applikation: 18&3 GSG
Die grafische Benutzeroberfläche 4 Einfache Info- und Hilfefunktionen wurden mit eigenen JFrame-Objekten realisiert.

12 2.3) Die Server-Applikation: 18&3 GSG Aufbau der Klassen:
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

13 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

14 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

15 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

16 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.

17 3.1) Die Umsetzung in JAVA UML-Klassendiagramm 1: Vererbung

18 3.1) Die Umsetzung in JAVA UML-Klassendiagramm 2: Assoziationen

19 a) Auszug aus der Klasse GameServerGUI
3.2) Die Umsetzung in JAVA 1. Übergabe der Konfigurationsparameter 2. Neuer THREAD: GameServer a) Auszug aus der Klasse GameServerGUI

20 b) Auszug aus der Klasse GameServer
3.2) Die Umsetzung in JAVA Überwachung, ob neuer Server gestartet werden darf Start eines neuen Threads: GameVerbindung b) Auszug aus der Klasse GameServer

21 c) Auszug aus der Klasse GameVerbindung
3.2) Die Umsetzung in JAVA Versucht neue Verbindung aufzubauen Liegen Daten an, werden diese weitergeleitet. c) Auszug aus der Klasse GameVerbindung

22 Die Methode: verbinden(int port) 3.2) Die Umsetzung in JAVA c) Auszug aus der Klasse GameVerbindung

23 d) Auszug aus der Klasse GameUser
3.2) Die Umsetzung in JAVA Filterfunktion Dienstleistung d) Auszug aus der Klasse GameUser

24 e) Teile des Client-Moduls 1
3.2) Die Umsetzung in JAVA Java.io und java.net Socket + Ströme Eigener Thread Verbindung aufbauen Thread starten import java.io.*; import java.net.*; Socket Verbindung; DataInputStream Eingangsstrom; PrintStream Ausgangsstrom; Thread lesethread; Verbindung = new Socket(" ",6666); Eingangsstrom = new DataInputStream(Verbindung.getInputStream()); Ausgangsstrom = new PrintStream(Verbindung.getOutputStream()); lesethread = new Thread(this); lesethread.start(); e) Teile des Client-Moduls 1

25 e) Teile des Client-Moduls 2
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

26 Hürden, die zu überwinden waren:
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

27 © 2003 by Knut Riechmann, Lemgo
ENDE © 2003 by Knut Riechmann, Lemgo


Herunterladen ppt "programmiert April-Juni 2003 von Knut Riechmann"

Ähnliche Präsentationen


Google-Anzeigen