hi
ich brauche hilfe ich komme nicht mehr weiter
es geht darum
ich muss ein Simple Gammon entwerfen
Gesamtziel
Ziel dieses Aufgaben ist es, einen vereinfachten Backgammon-Klon---Simple Gammon---zu implementieren. Backgammon wird (wenn nicht virtuell am Computer) auf einem Spielbrett mit 15 Spielsteinen pro Spieler gespielt. Das Spielziel ist dabei, die eigenen Steine erfolgreich vom Brett zu ziehen. Eine grundsätzliche Einführung zu Backgammon ist beispielsweise hier zu finden. Wir werden die Spielregeln jedoch aus Vereinfachungsgründen etwas abändern, eine genaue Beschreibung der angepassten Regeln findet sich in Aufgabenteil 3, wo diese auch tatsächlich implementiert werden müssen.
Grundsätzlich gilt, dass die Aufgaben innerhalb des gesamten SimpleGammon Blocks aufeinander aufbauen.
Aufgabe 1 - Spielsteine, Spielfelder, Spielzüge, und 2 Aufzählungstypen
Zwischenziel: Enumerations, Erstellung grundlegender Objekte
Zunächst sollen einige Klassen erstellt werden, welche die grundlegenden Funktionalitäten für das Spiel modellieren.
Die Aufzählungstypen (Enum) SpikeColor und PlayerID sollen die für das Spiel nötigen Farben sowie 2 Spieler-Bezeichnungen typsicher modellieren. Die Klassen Chip, Spike und Move repräsentieren Spielsteine, Spielfelder, sowie Spielzüge.
SpikeColor.java
Implementieren Sie den Aufzählungstyp SpikeColor im Paket jpp.simpleGammon.basics, welcher die nötigen Farben modelliert. Benötigt werden die Farben LIGHT und DARK für die Spielfelder.
PlayerID.java
Implementieren Sie weiterhin den Aufzählungstyp PlayerID im Paket jpp.simpleGammon.basics, welcher die Spielerbezeichnungen modelliert. Für unsere Zwecke genügen PL_1 (weiße Steine) und PL_2 (schwarze Steine). Diese Typen dienen der Unterscheidung der beiden Spieler, wobei gilt, dass PL_1 die Zacken von 1 bis 24 durchlaufen muss, PL_2 hingegen in umgekehrter Richtung von 24 bis 1.
Chip.java
Die Klasse Chip im Paket jpp.simpleGammon.basics repräsentiert Spielsteine des Simple Gammon Spiels; sie verwaltet die ID des zugehörigen Spielers (entweder PlayerID.PL_1 für weiße Steine oder PlayerID.PL_2 für schwarze Steine), einen boolean-Wert out der angibt, ob der Spielstein aktuell im Aus liegt, einen boolean-Wert done für die Darstellung ob der Spielstein erfolgreich zu Ende (= vom Brett) gespielt wurde, sowie ein Spike-Objekt zur Verwaltung des Spielfelds auf welchem sich der Spielstein aktuell befindet. Die Klasse soll (mindestens) folgende Schnittstelle bereitstellen:
*
public Chip ( PlayerID player )
Der Konstruktor der Spielstein-Klasse; er setzt die ID des Spielers auf den übergebenen Wert und initialisiert die Werte für out und done mit false.
*
public PlayerID getPlayerID ( )
liefert die ID des Spielers.
*
public boolean isDone ( )
gibt an, ob der Spielstein bereits erfolgreich vom Brett gespielt wurde.
*
public void setDone ( boolean done )
setzt den Status des Spielsteins, d.h. ob er erfolgreich vom Brett gespielt werden konnte oder nicht.
*
public boolean isOut ( )
gibt an, ob der Stein aktuell im Aus steht.
*
public void setOut ( boolean out )
setzt den Aus-Status des Spielsteins auf den übergebenen Wert.
*
public Spike getCurrentSpike ( )
liefert das Spielfeld, auf dem sich der Spielstein aktuell befindet.
*
public void setCurrentSpike ( Spike spike )
setzt das aktuelle Spielfeld auf dem sich der Spielstein befindet.
Spike.java
Die Klasse Spike im Paket jpp.simpleGammon.basics modelliert jeweils ein Spielfeld (= eine Zacke) auf dem SimpleGammon Spielfeld. Sie soll die Nummer und die Farbe des Feldes (SpikeColor.LIGHT oder SpikeColor.DARK) verwalten, sowie eine Liste der aktuell auf dem Feld befindlichen Spielsteine. Folgende Schnittstelle soll (mindestens) erfüllt werden:
*
public Spike ( int spikeNumber, SpikeColor color )
Initialisiert die Nummer des Feldes und seine Farbe mit den übergebenen Werten und erzeugt eine leere Liste für die Verwaltung der Spielsteine.
*
public SpikeColor getSpikeColor ( )
liefert die Farbe der Zacke.
*
public int getSpikeNumber ( )
liefert die Nummer des Spielfeldes.
*
public PlayerID getPlayerID ( )
liefert die ID des Spielers der Spielsteine auf dem Feld liegen hat. Falls aktuell keine Spielsteine auf dem Feld liegen, wird null zurückgegeben.
*
public void addChip ( Chip chip )
setzt den übergebenen Chip auf das Spielfeld, fügt ihn also der Spielstein-Liste hinzu.
*
public void removeChip ( Chip chip )
falls die Liste der Spielsteine nicht leer ist wird der übergebene Chip vom Spielfeld (und damit aus der Liste) gelöscht.
*
public boolean hasSingleChip ( )
gibt an, ob das Spielfeld aktuell von genau einem einzigen Stein belegt ist.
*
public boolean hasZeroChips ( )
gibt an, ob das Spielfeld aktuell von keinem einzigen Spielstein belegt ist (also leer).
*
public List< Chip > ArrayList< Chip > getChips ( )
liefert die Liste der aktuell auf dem Feld befindlichen Spielsteine. Hierbei muss der Rückgabetyp mindestens vom Typ List< Chip > sein.
*
public String toString ( )
liefert eine String-Repräsentation der Zacke. Falls sich Steine auf dem Spielfeld befinden soll die Ausgabe wie folgendes Beispiel aussehen:
spike 5 is LIGHT and has 3 chips of color BLACK
Falls das Spielfeld leer ist, soll folgende Ausgabe erfolgen:
spike 5 is DARK and is empty
Dabei werden die Index-Nummer und die Farbe des Feldes, sowie die Anzahl und Farbe der Spielsteine mit den tatsächlichen Werten der entsprechenden Klassenattribute ersetzt; die obigen beiden Ausgaben dienen wirklich nur als Anschauungsbeispiele.
Move.java
Die Klasse Move im Paket jpp.simpleGammon.basics verwaltet einen Spielzug, welcher aus dem Start-Spielfeld sowie einem Ziel-Spielfeld besteht. Weiterhin soll die Klasse mit geeigneten Attributen verwalten können, ob der Spielzug, falls ausgeführt, in der Lage ist einen gegnerischen Stein zu schlagen, oder den zu bewegenden Stein ins Ziel zu bringen. Die folgende Schnittstelle soll (mindestens) erfüllt werden:
*
public Move ( Spike start, Spike destination )
Initialisiert das Start-Feld des Spielzugs mit dem als start übergebenen Wert, das Ziel-Feld des Zugs mit destination.
*
public Spike getStartPos ( )
liefert das Start-Spielfeld des Spielzugs.
*
public Spike getEndPos ( )
liefert das Ziel-Spielfeld des Spielzugs.
*
public int getMoveLength ( )
liefert die Länge des Spielzugs.
*
public void canBeat ( boolean bool )
setzt den Schlagen-Status des Moves: true, falls der Zug einen gegnerischen Stein schlagen kann, false, falls nicht.
*
public boolean beats ( )
liefert den Schlagen-Status des Moves.
*
public void canSetDone ( boolean bool )
setzt den Ziel-Status des Moves: true, falls der Spielzug den zu bewegenden Stein ins Ziel bringen kann, false, falls nicht.
*
public boolean setsDone ( )
liefert den Ziel-Status.
*
public String toString ( )
liefert eine String-Repräsentation der Bewegung. Die Ausgaben orientieren sich an folgenden Beispielen:
o
17 -- > 23
im Fall eines Spielzugs von Feld 17 auf Feld 23
o
20 -- > Chip reaches goal
im Fall eines Spielzugs von Feld 20 ins Ziel
o
17 -- > 12
Beating an opposing chip
im Fall eines Spielzugs von Feld 17 auf Feld 12 wobei auf Feld 12 ein Stein des Gegners ins Aus geschlagen wird.
o
Chip is on the board again: -- > 23
im Fall eines Spielzugs vom Aus zurück auf das Spielfeld auf Feld 23
also und ich bin bei SPIKE
und bei MOVE
mein Code latet
public class Spike {
private int spikeNumber ;
private SpikeColor color;
private Chip chip;
private PlayerID player;
/**
*
* @param spikeNumber
* @param color
*/
public Spike ( int spikeNumber, SpikeColor color ) {
this.spikeNumber = spikeNumber;
this.color = color;
}
public SpikeColor getSpikeColor ( ){
return color;
}
public int getSpikeNumber ( ){
return spikeNumber;
}
/**
* liefert die ID des Spielers.
* @return Spieler
*/
public PlayerID getPlayerID ( ) { //???
return player;
}
public void addChip ( Chip chip ){
this.chip = chip;
}
public void removeChip ( Chip chip ) {
this.chip = chip;
}
public boolean hasSingleChip ( ){
return false;
}
public boolean hasZeroChips ( ){
return false;
}
}
public class Move {
private Spike Start;
private Spike Destination;
public Move ( Spike start, Spike destination ) {
this.Start = start;
this.Destination = destination;
}
public Spike getStartPos ( ) {
return Start;
}
public Spike getEndPos ( ) {
return Destination;
}
public int getMoveLength ( ){
return Destination - Start;
}
public void canBeat ( boolean bool ) {
}
}
kann jamand mir weiterhelfen ??!!
dankeschön:rtfm:
ich brauche hilfe ich komme nicht mehr weiter
es geht darum
ich muss ein Simple Gammon entwerfen
Gesamtziel
Ziel dieses Aufgaben ist es, einen vereinfachten Backgammon-Klon---Simple Gammon---zu implementieren. Backgammon wird (wenn nicht virtuell am Computer) auf einem Spielbrett mit 15 Spielsteinen pro Spieler gespielt. Das Spielziel ist dabei, die eigenen Steine erfolgreich vom Brett zu ziehen. Eine grundsätzliche Einführung zu Backgammon ist beispielsweise hier zu finden. Wir werden die Spielregeln jedoch aus Vereinfachungsgründen etwas abändern, eine genaue Beschreibung der angepassten Regeln findet sich in Aufgabenteil 3, wo diese auch tatsächlich implementiert werden müssen.
Grundsätzlich gilt, dass die Aufgaben innerhalb des gesamten SimpleGammon Blocks aufeinander aufbauen.
Aufgabe 1 - Spielsteine, Spielfelder, Spielzüge, und 2 Aufzählungstypen
Zwischenziel: Enumerations, Erstellung grundlegender Objekte
Zunächst sollen einige Klassen erstellt werden, welche die grundlegenden Funktionalitäten für das Spiel modellieren.
Die Aufzählungstypen (Enum) SpikeColor und PlayerID sollen die für das Spiel nötigen Farben sowie 2 Spieler-Bezeichnungen typsicher modellieren. Die Klassen Chip, Spike und Move repräsentieren Spielsteine, Spielfelder, sowie Spielzüge.
SpikeColor.java
Implementieren Sie den Aufzählungstyp SpikeColor im Paket jpp.simpleGammon.basics, welcher die nötigen Farben modelliert. Benötigt werden die Farben LIGHT und DARK für die Spielfelder.
PlayerID.java
Implementieren Sie weiterhin den Aufzählungstyp PlayerID im Paket jpp.simpleGammon.basics, welcher die Spielerbezeichnungen modelliert. Für unsere Zwecke genügen PL_1 (weiße Steine) und PL_2 (schwarze Steine). Diese Typen dienen der Unterscheidung der beiden Spieler, wobei gilt, dass PL_1 die Zacken von 1 bis 24 durchlaufen muss, PL_2 hingegen in umgekehrter Richtung von 24 bis 1.
Chip.java
Die Klasse Chip im Paket jpp.simpleGammon.basics repräsentiert Spielsteine des Simple Gammon Spiels; sie verwaltet die ID des zugehörigen Spielers (entweder PlayerID.PL_1 für weiße Steine oder PlayerID.PL_2 für schwarze Steine), einen boolean-Wert out der angibt, ob der Spielstein aktuell im Aus liegt, einen boolean-Wert done für die Darstellung ob der Spielstein erfolgreich zu Ende (= vom Brett) gespielt wurde, sowie ein Spike-Objekt zur Verwaltung des Spielfelds auf welchem sich der Spielstein aktuell befindet. Die Klasse soll (mindestens) folgende Schnittstelle bereitstellen:
*
public Chip ( PlayerID player )
Der Konstruktor der Spielstein-Klasse; er setzt die ID des Spielers auf den übergebenen Wert und initialisiert die Werte für out und done mit false.
*
public PlayerID getPlayerID ( )
liefert die ID des Spielers.
*
public boolean isDone ( )
gibt an, ob der Spielstein bereits erfolgreich vom Brett gespielt wurde.
*
public void setDone ( boolean done )
setzt den Status des Spielsteins, d.h. ob er erfolgreich vom Brett gespielt werden konnte oder nicht.
*
public boolean isOut ( )
gibt an, ob der Stein aktuell im Aus steht.
*
public void setOut ( boolean out )
setzt den Aus-Status des Spielsteins auf den übergebenen Wert.
*
public Spike getCurrentSpike ( )
liefert das Spielfeld, auf dem sich der Spielstein aktuell befindet.
*
public void setCurrentSpike ( Spike spike )
setzt das aktuelle Spielfeld auf dem sich der Spielstein befindet.
Spike.java
Die Klasse Spike im Paket jpp.simpleGammon.basics modelliert jeweils ein Spielfeld (= eine Zacke) auf dem SimpleGammon Spielfeld. Sie soll die Nummer und die Farbe des Feldes (SpikeColor.LIGHT oder SpikeColor.DARK) verwalten, sowie eine Liste der aktuell auf dem Feld befindlichen Spielsteine. Folgende Schnittstelle soll (mindestens) erfüllt werden:
*
public Spike ( int spikeNumber, SpikeColor color )
Initialisiert die Nummer des Feldes und seine Farbe mit den übergebenen Werten und erzeugt eine leere Liste für die Verwaltung der Spielsteine.
*
public SpikeColor getSpikeColor ( )
liefert die Farbe der Zacke.
*
public int getSpikeNumber ( )
liefert die Nummer des Spielfeldes.
*
public PlayerID getPlayerID ( )
liefert die ID des Spielers der Spielsteine auf dem Feld liegen hat. Falls aktuell keine Spielsteine auf dem Feld liegen, wird null zurückgegeben.
*
public void addChip ( Chip chip )
setzt den übergebenen Chip auf das Spielfeld, fügt ihn also der Spielstein-Liste hinzu.
*
public void removeChip ( Chip chip )
falls die Liste der Spielsteine nicht leer ist wird der übergebene Chip vom Spielfeld (und damit aus der Liste) gelöscht.
*
public boolean hasSingleChip ( )
gibt an, ob das Spielfeld aktuell von genau einem einzigen Stein belegt ist.
*
public boolean hasZeroChips ( )
gibt an, ob das Spielfeld aktuell von keinem einzigen Spielstein belegt ist (also leer).
*
public List< Chip > ArrayList< Chip > getChips ( )
liefert die Liste der aktuell auf dem Feld befindlichen Spielsteine. Hierbei muss der Rückgabetyp mindestens vom Typ List< Chip > sein.
*
public String toString ( )
liefert eine String-Repräsentation der Zacke. Falls sich Steine auf dem Spielfeld befinden soll die Ausgabe wie folgendes Beispiel aussehen:
spike 5 is LIGHT and has 3 chips of color BLACK
Falls das Spielfeld leer ist, soll folgende Ausgabe erfolgen:
spike 5 is DARK and is empty
Dabei werden die Index-Nummer und die Farbe des Feldes, sowie die Anzahl und Farbe der Spielsteine mit den tatsächlichen Werten der entsprechenden Klassenattribute ersetzt; die obigen beiden Ausgaben dienen wirklich nur als Anschauungsbeispiele.
Move.java
Die Klasse Move im Paket jpp.simpleGammon.basics verwaltet einen Spielzug, welcher aus dem Start-Spielfeld sowie einem Ziel-Spielfeld besteht. Weiterhin soll die Klasse mit geeigneten Attributen verwalten können, ob der Spielzug, falls ausgeführt, in der Lage ist einen gegnerischen Stein zu schlagen, oder den zu bewegenden Stein ins Ziel zu bringen. Die folgende Schnittstelle soll (mindestens) erfüllt werden:
*
public Move ( Spike start, Spike destination )
Initialisiert das Start-Feld des Spielzugs mit dem als start übergebenen Wert, das Ziel-Feld des Zugs mit destination.
*
public Spike getStartPos ( )
liefert das Start-Spielfeld des Spielzugs.
*
public Spike getEndPos ( )
liefert das Ziel-Spielfeld des Spielzugs.
*
public int getMoveLength ( )
liefert die Länge des Spielzugs.
*
public void canBeat ( boolean bool )
setzt den Schlagen-Status des Moves: true, falls der Zug einen gegnerischen Stein schlagen kann, false, falls nicht.
*
public boolean beats ( )
liefert den Schlagen-Status des Moves.
*
public void canSetDone ( boolean bool )
setzt den Ziel-Status des Moves: true, falls der Spielzug den zu bewegenden Stein ins Ziel bringen kann, false, falls nicht.
*
public boolean setsDone ( )
liefert den Ziel-Status.
*
public String toString ( )
liefert eine String-Repräsentation der Bewegung. Die Ausgaben orientieren sich an folgenden Beispielen:
o
17 -- > 23
im Fall eines Spielzugs von Feld 17 auf Feld 23
o
20 -- > Chip reaches goal
im Fall eines Spielzugs von Feld 20 ins Ziel
o
17 -- > 12
Beating an opposing chip
im Fall eines Spielzugs von Feld 17 auf Feld 12 wobei auf Feld 12 ein Stein des Gegners ins Aus geschlagen wird.
o
Chip is on the board again: -- > 23
im Fall eines Spielzugs vom Aus zurück auf das Spielfeld auf Feld 23
also und ich bin bei SPIKE
und bei MOVE
mein Code latet
public class Spike {
private int spikeNumber ;
private SpikeColor color;
private Chip chip;
private PlayerID player;
/**
*
* @param spikeNumber
* @param color
*/
public Spike ( int spikeNumber, SpikeColor color ) {
this.spikeNumber = spikeNumber;
this.color = color;
}
public SpikeColor getSpikeColor ( ){
return color;
}
public int getSpikeNumber ( ){
return spikeNumber;
}
/**
* liefert die ID des Spielers.
* @return Spieler
*/
public PlayerID getPlayerID ( ) { //???
return player;
}
public void addChip ( Chip chip ){
this.chip = chip;
}
public void removeChip ( Chip chip ) {
this.chip = chip;
}
public boolean hasSingleChip ( ){
return false;
}
public boolean hasZeroChips ( ){
return false;
}
}
public class Move {
private Spike Start;
private Spike Destination;
public Move ( Spike start, Spike destination ) {
this.Start = start;
this.Destination = destination;
}
public Spike getStartPos ( ) {
return Start;
}
public Spike getEndPos ( ) {
return Destination;
}
public int getMoveLength ( ){
return Destination - Start;
}
public void canBeat ( boolean bool ) {
}
}
kann jamand mir weiterhelfen ??!!
dankeschön:rtfm: