Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Was sind denn die Kriterien, die bestimmen ob eine Figur weitergehen darf?
Welche Information hat die Figur über das Spielfeld?
Welche Information hat das Spielfeld über die Figur?
kurzer Bsp Code Deines Programms?
Mittlerweile tendiere ich mehr zu getY und getX hin...
hmm kennst du zufaellig das Spiel Metamorphose? Ist eins was sich ein Dozent ausgedacht hat, naja sollen das halt per java nachbasteln.
Hier mal der Auszug aus den Regeln
Metamorphose ist ein Spiel für zwei Personen (Spieler A und Spieler B).
Metamorphose wird auf einem Spielbrett gespielt, das sich aus 7*7 einzelnen Feldern zusammensetzt. Bestimmte Felder sind durch Mauern besetzt.
Als Spielfiguren werden Quadrate und Kreise verwendet.
Es gibt weiße Spielfiguren, die Spieler A gehören, und schwarze Spielfiguren, die Spieler B gehören. Anfangs besitzt jeder Spieler vier Quadrate und drei Kreise.
In jedem Spielzug verschiebt ein Spieler eine seiner Spielfiguren um ein oder mehrere Felder auf dem Spielbrett. Dabei gilt: Quadrate können horizontal und vertikal verschoben werden. Kreise können diagonal verschoben werden. Nachdem eine Figur verschoben wurde, wechselt sie ihren Typ (aus einem Kreis wird ein Quadrat und umgekehrt).
Die Anfangsaufstellung ist in der Abbildung dargestellt.
Spieler A (Weiß) beginnt.
Es besteht Zugzwang.
Auf einem Feld darf maximal eine Figur stehen.
Auf die durch Mauern besetzten Felder dürfen keine Figuren gezogen werden.
Bei einem Spielzug dürfen keine Mauern und andere Figuren (der eigenen oder fremden Farbe) übersprungen werden.
Endet ein Spielzug auf einem Feld, auf dem eine fremde Figur steht, so gilt diese als geschlagen und wird vom Spielbrett entfernt.
Am Anfang des Spiels wählt jeder Spieler (geheim) eine seiner Spielfiguren aus und merkt sie sich als besondere Spielfigur, den König. Wer als erster den König des Gegners schlägt, hat gewonnen. Das Spiel endet unentschieden, wenn beide Spieler nur noch ihren König besitzen.
Relativ viel zu beachten...
Hier ein kurzer auszug aus der Regelwerk klasse:
Java:
public boolean zugIstGueltig(Figur figur, JLabel start, JLabel ziel, JLabel[] felder)
{
//mehrdimensionales array aus JLabel felder generieren
JLabel mFelder[][] = new JLabel[7][7];
for(int i=0; i<mFelder.length; i++){
for(int j=0; j<mFelder[i].length; j++){
if(mFelder[i][j] == start)
mFelder[i][j] = start; // Startpunkt auf das Arrayfeld setzen
if(mFelder[i][j] == ziel)
mFelder[i][j] = ziel; // Zielpunkt auf das Arrayfeld setzen
}
}
// Figur ist Kreis -> darf nur vertikal laufen
if(figur.IsKreis())
{
int xAlt = start.getX();
int yAlt = start.getY();
int xNeu = ziel.getX();
int yNeu = ziel.getY();
if( nachLinksOben() || nachRechtsOben() ||
nachLinksUnten() || nachRechtsUnten())
return true;
else
return false;
}
else
{
int xAlt = start.getX();
int yAlt = start.getY();
int xNeu = ziel.getX();
int yNeu = ziel.getY();
if( Rechts(xAlt,xNeu) || Links(xAlt,xNeu) ||
Oben(yAlt,yNeu) || Unten(yAlt,yNeu))
return true;
else
return false;
}
//Prüfen ob Zielfeld eine Mauer ist
if(MauerDa(ziel, felder))
{
return false;
}
//ACHTUNG: zu testzwecken hinzugefügt, muss gelöscht bzw. ggf angepasst werden.
return true;
}
private boolean Unten(int yAlt, int yNeu)
{
// unten
if(yAlt < yNeu){
for(int i = yAlt; i < yNeu; i++){
// hier muss Feld fuer Feld ueberprueft werden
// ist Feld frei
// evtl die mauer hier einbinden
// ist gegnerischer Stein da und Koenig
}
return true;
}
return false;
}