OOP '98 assignment: Stratego
Persoonlijke gegevens
Student 1: Mark Lassche Student 2: Andre Versteeg
student numbers : Mark: 0572136, Andre: 0564524
e-mail : {mlassche,alverste}@cs.vu.nl
university : VU
study : AI
major : Kennistechnologie
year of enrollment: 1994
want group account: Yes
Stratego informatie
Stratego is een bekend en populair bordspel. Ons programma 'Stratego' zal
dit bordspel implementeren. Bij het spelen van dit spel zullen de
regels voor het klassieke twee-speler bordspel gevolgd worden. De gebruiker
zal een grafische user interface ter beschikking hebben om dit spel te
spelen. Hierbij kan gekozen worden uit een spel tegen de computer (AI speler)
of tegen een ander persoon via een netwerkverbinding.
Essentieel in dit programma is de mogelijkheid voor de gebruiker om
tegen een van de bovengenoemde spelertypes een spelletje Stratego te spelen.
Bij het maken van het programma zal ook eerst onze aandacht uitgaan naar
dit essentiele deel. Uitbreidingen zoals file-I/O, geluid, betere AI en
'chat' mogelijkheden via het netwerk zijn optioneel. Wel zal er bij het
ontwerpen van het basis-gedeelte van ons programma rekening gehouden moeten
worden met zulke uitbreidingen, zodat er voor het toevoegen van meer functionaliteit
geen radicale ontwerpveranderingen in het basis-deel nodig zijn. Een taak
voor OO...
Requirements
Beknopte Functionaliteit van het programma
-
Grafische User Interface voor de gebruiker. Met de muis moeten de meeste
functies voor de gebruiker afgehandeld worden.
-
Speelmogelijkheid tegen computer, of tegen een mens via een netwerk.
-
Als via een netwerk gespeeld wordt, kan de gebruiker een tegenstander uitkiezen
uit een lijst met beschikbare spelers.
-
Online help over de spelregels en het gebruik van het spel; in hypertext
formaat.
Vereisten om het programma te draaien
-
Het client-programma 'Stratego' en er moet minimaal een server ergens opgestart
zijn waar de client contact mee kan maken.
-
Terminal / computer waar de Java-engine 1.1.3 op gedraaid kan worden.
-
Voldoende geheugen om de Java engine te starten en het programma in te
laden en te draaien.
-
Muis om in de GUI de meeste functies af te handelen.
-
Netwerk vereisten: het lokale netwerk moet Java Sockets ondersteunen.
Gebruikersprofiel
-
Een van de spelers van het spel moet het server-gedeelte van dit spel kunnen
opstarten op een specifieke plaats die aan de client-programma's bekend
is.
-
Bekend met een windows omgeving en muis gebruik.
-
Als de gebruiker via het netwerk wil spelen, zal hij/zij minimale kennis
moeten hebben van de host en port waarmee het server-gedeelte van het programma
te bereiken is. Dit wordt overigens uitgelegd in de help functie.
-
Kennis van het bordspel Stratego is aanbevolen, maar de spelregels zijn
online beschikbaar.
Design
Het ontwerp zal gemaakt worden volgens met Model Viewer ( Controller
) pattern. Controller staat tussen haakjes omdat dit gedeelte moeilijk
te scheiden is van het Viewer gedeelte in Java.
Belangrijke classes
Bij het ontwerpen van het basis-deel van ons programma met bovengenoemde
functionaliteit beschouwen wij de volgende klasses als essentieel:
-
StrategoServer - regelt de communicatie tussen twee StrategoClient objecten.
-
StrategoClient - het programma voor een individuele gebruiker om Stratego
te spelen.
-
GUI - de grafissche user interface voor een gebruiker, member van een StrategoClient
object.
-
Game - de klasse die het spelverloop tussen twee spelende strategospelers
(Player objecten) regelt, member van een StrategoClient object.
-
Game rules - de klasse die de kennis van de spelregels bevat, member van
Game.
-
Player - abstracte klasse voor het concept speler, twee objecten van een
subklasse van Player zijn nodig in een Game-object.
-
ComputerPlayer - subklasse van Player, levert een zet voor een computer
speler. In deze klasse komt het (in eerste instantie simpele) AI gedeelte
voor het bepalen van een 'slimme' computer zet.
-
DirectPlayer - subklasse van Player, levert een zet voor de gebruiker.
-
DistantPlayer - subklasse van Player, levert de zet van de speler aan de
andere kant van het netwerk.
-
Board - datastructuur voor het stratego bord, member van Game.
-
Piece - representatie van een strategostuk.
-
Move - representatie van een zet in het strategospel, dient voor de communicatie
tussen de twee spelers, zodat alle spelers weten hoe het spel verloopt.
Notes
-
We gebruiken uitsluitend de taal Java om het programma te implementeren.
-
Er wordt gebruik gemaakt van Java Sockets. Ergens op een netwerk draait
een Stratego Server Socket. Door middel van Stratego Client Sockets
kan er gespeeld worden tegen elkaar. Het is van belang dat de host waar
de Server op draait bekend is voor de clients.
-
Het programma gebruikt geen andere programma's; de enige vereiste voor
het draaien van ons programma is de aanwezigheid en correcte werking van
de Java-engine zijn.
-
Voor het maken van dit programma gebruiken wij de Java versie van
Sun gebruikt die op dit moment op de VU aanwezig is in de dir: /usr/local/java/jdk/bin
(versie1.1.3) .