Projektarbeit Java - BFH-TI / Organisation

Werbung
Berner Fachhochschule
Hochschule für Technik und Informatik, HTI
Fachbereich Elektro- und Informatik
Labor für technische Informatik
Projektarbeit Java
4-Gewinnt
© 2004, Labor für Technische Informatik
Dateiname:
Erstellt:
Autoren:
Version:
Projektarbeit Info4.DOC
Januar 2005
Roger Weber, Christoph Reinhard
1.1
Inhaltsverzeichnis
Inhaltsverzeichnis
1 Einführung
1.1 Allgemeine Ziele
1.2 Thema
1.3 Alternative Themen
1.4 Bewertung
1.6 Abgabetermin
1.5 Dokumentation
2 Projektarbeit 4-Gewinnt
2.1 Aufgabenstellungen
2.2 Verschiedene Funktionsstufen
2.3 Mögliches Vorgehen
Anhang A: GUI- Möglichkeiten
Anhang B: GUI mit Swing
Anhang C: Vernetzung der PC’s
3
3
3
3
3
3
3
4
4
4
4
5
6
8
2
Einführung
1 Einführung
1.1 Allgemeine Ziele
Mit der vorliegenden Projektarbeit sollen folgende Ziele erreicht werden:
1. Der Stoff des Unterrichtsmoduls "Informatik 4" soll durch das Programmieren einer etwas umfangreicheren
Anwendung gefestigt und vertieft werden. Insbesondere geht es darum, ein objektorientiertes Design zu erstellen
und dieses anschliessend in Code umzusetzen.
2. Das Zusammenarbeiten in Teams soll gefördert werden. Diese Projektarbeit wird deshalb in Zweier- oder
Dreiergruppen durchgeführt.
1.2 Thema
In dieser Arbeit geht es darum, das Spiel 4-Gewinnt als Java-Applikation mit einem GUI auf einem PC zu implementieren.
Eine detaillierte Beschreibung finden sie im Kapitel 2.
1.3 Alternative Themen
Sie können als Alternative zum Thema 4-Gewinnt ein eigenes Thema wählen. Voraussetzungen sind:
1. Das Programm ist eine Java-Applikation.
2. Die Applikation verwendet ein GUI.
3. Sie beschreiben ihre Applikation in einem Pflichtenheft. Dieses Pflichtenheft muss vom Dozenten vor
Projektbeginn genehmigt werden.
Alle weiteren Bedingungen (Bewertung, Kurzreferat und Dokumentation) entsprechen dem vorliegenden Dokument.
1.4 Bewertung
Die Projektarbeit wird mit einer Note bewertet. Bewertungskriterien sind:
1. Dokumentation
2. Funktionalität & Zielerreichung
3. Design
4. Code-Qualität
1.5 Dokumentation
In der Dokumentation beschreiben Sie bitte das Pflichtenheft, das Projektmanagement (Analyse), die Struktur des
Programms (Klassendiagrammen), die Probleme, die Tests usw. Auch das Laborjournal können sie in die Dokumentation
integrieren. Legen Sie Ihrem Bericht eine CD mit dem Quellode bei. Der Bericht sollte (ohne Anhang) 10 Seiten A4 nicht
überschreiten.
1.6 Abgabetermin
Der Abgabetermin ist die letzte Woche der Unterrichtsperiode.
3
Projektarbeit 4-Gewinnt
2 Projektarbeit 4-Gewinnt
2.1 Aufgabenstellungen
Das Spiel 4-Gewinnt soll auf einem PC implementiert werden. Das Programm hat folgende Eigenschaften:
1.
2.
3.
4.
5.
Die Spieler können sich zu Beginn des Spiels anmelden.
Jeder Spieler erhält eine Farbe.
Die Spieler kommen abwechslungsweise zum Zuge.
Der Spielstand wird auf dem GUI grafisch dargestellt. Mögliche Varianten zur Darstellung finden sie im Anhang
A. Sie können aber selbstverständlich eine eigene Oberfläche entwickeln. Das GUI soll in AWT oder Swing
programmiert werden.
Das Programm erkennt, welcher Spieler gewonnen hat und gratuliert diesem.
2.2 Verschiedene Funktionsstufen
Abhängig davon wie sie in ihrem Projekt vorwärts kommen können sie verschiedene Funktionsstufen in ihr 4-Gewinnt
einbauen. Die erste Stufe sollten alle Teams erreichen. In den weiteren Stufen geht es darum, das Spiel an zwei PC’s über
das Netz zu spielen. Den für die Vernetzung notwendigen Code finden sie auf dem Info-Laufwerk, eine Beschreibung dazu
im Anhang.
1.
2.
3.
Spiel gegeneinander an einem PC
Spiel gegeneinander mit zwei vernetzten PC’s
Abspeichern des Spielstandes
2.3 Mögliches Vorgehen
1.
2.
3.
4.
5.
6.
Erstellen sie das Projektmanagement (Zeitplan, Organisation im Team ...)
Erstellen sie ein Design für die Software
Schreiben sie den Code.
Testen sie die Software.
Führen sie während der Projektarbeit ein Journal, in welchem sie die gemachten Erkenntnisse, Probleme und
Lösungen notieren.
Erstellen sie ihre Dokumentation nicht erst am Schluss des Projektes, sondern parallel zum Projektablauf.
4
GUI- Möglichkeiten
Anhang A: GUI- Möglichkeiten
Verschiedene GUI Möglichkeiten:
5
GUI mit Swing
Anhang B: GUI mit Swing
Swing ist eine etwas modernere Bibliothek zur Programmierung von GUI’s als AWT. Sie können diese Projektarbeit
entweder in AWT oder in Swing programmieren.
Swing wird sehr ähnlich wie AWT programmiert. Wesentlichste Unterschiede sind:
1. Die Klassennamen beginnen mit einem „J“. Z.B. JButton statt Button.
2. Eine Komponente wird nicht einfach mit „add“ auf dem Fenster zugefügt. Zuerst muss eine Methode
„getContentPane“ aufgerufen werden: auf dem von ihr zurückgegebenen Container können die Komponenten mit
„add“ zugefügt werden.
3. Anstelle der Methode „paint“ wird „paintComponent“ verwendet.
4. Gezeichnet wird in einem „JPanel“. „Canvas“ gibt es in Swing nicht.
Wenn sie sich für Swing entscheiden gibt ihnen dieser Anhang eine kurze Übersicht zu einigen Swing- Klassen, die sie
für 4-Gewinnt gebrauchen können:
Class JFrame
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
Class JOptionPane
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JOptionPane
Class JMenuBar
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JMenuBar
6
GUI mit Swing
Class JPanel
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
Class JLabel
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JLabel
7
Vernetzung der PC’s
Anhang C: Vernetzung der PC’s
Um das Spiel gegen einen Gegner auf einem anderen Computer im Netzwerk zu spielen, müssen die jeweiligen Züge (Reihe
in welcher der Stein plaziert wird) ausgetauscht werden. Eine Möglichkeit dies zu tun, ist die Kommunikation über Sockets.
Die Kommunikation über Sockets
Als Socket bezeichnet man eine Stream- basierte Programmierschnittstelle zur Kommunikation zweier Rechner in einem
TCP/IP-Netz.
Das Übertragen von Dateien über eine Socket- Verbindung ist vergleichbar mit dem Zugriff auf eine Datei:
1. Verbindung aufbauen
2. Daten lesen und/oder schreiben
3. Verbindung schliessen
Zur Kommunikation über Sockets stehen zwei Klassen „Client.java“ und „Server.java“ zur Verfügung.
Server.java
Wichtig:
Zuerst muss ein Objekt der Klasse Server instanziert werden. Der Server wartet dann auf dem
entsprechenden Port auf eine Verbindung des Clients.
public Server(String port)
public void sendMove(int ownMove)
Konstruktor: öffnet den Socket und warte auf einen Slave um eine
Verbindung herzustellen.
Wartet bis vom Client ein Zug gesendet wird und gibt diesen als int
zurück.
Sendet einen Zug zum Client.
public void closeConnection()
Schliesst die Verbindung.
public String getConnectionStatus()
Gibt den Status der Verbindung als String zurück.
public int getNextMove()
public String getMoveStatus()
- "Verbindung hergestellt!"
- "Verbindung terminiert!"
Gibt den Status des gesendeten Zuges zurück.
- "waiting for move from client..."
- "got move from client. move = " + move
Client.java
public Client(String port, String remoteIP)
public int getNextMove()
public void sendMove(int ownMove)
public void closeConnection()
public String getConnectionStatus()
public String getMoveStatus()
Konstruktor: versucht sofort eine Socket- Verbindung zum Server
(remoteIP) herzustellen
Wartet bis vom Master ein Zug gesendet wird und gibt diesen als int
zurück.
Sendet einen Zug zum Master.
Schliesst die Verbindung.
Gibt den Status der Verbindung als String zurück.
- "Verbindung hergestellt!"
- "Verbindung terminiert!"
Gibt den Status des gesendeten Zuges zurück.
- "waiting for move from server..."
- "got move from server. move = " + move
8
Herunterladen