Kann mir jemand die Methode besetztePosition erklären?
Java:
public class SpielfeldInteger implements Spielfeld
{
private int spielInt;
/**
* Initialisiert ein neues, leeres Spielfeld.
*/
public SpielfeldInteger() {
spielInt = 0x00000;//2AAAA
// 0000 0000 0000 0000 0000;
}
/**
* Gibt den Besitzer der angegebenen Position auf dem Spielfeld.
*
* @param zeile vertikale Position (0-2)
* @param spalte horizontale Position (0-2)
* @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
*/
public int gibBesitzer(int zeile, int spalte) {
int schiebung = (zeile*3*2)+(spalte*2);
int geschobenerInt = spielInt>>>schiebung;
//System.out.println(Integer.toBinaryString(geschobenerInt));
//System.out.println((geschobenerInt&3));
if((geschobenerInt&3) == 2) {
return 1;
} else if((geschobenerInt&3) == 3) {
return 2;
} else {
return 0;
}
}
/**
* Besetzt die angegebene Position auf dem Spielfeld fuer einen Spieler.
*
* @param zeile vertikale Position (0-2)
* @param spalte horizontale Position (0-2)
* @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
*/
public void besetzePosition(int zeile, int spalte, int spieler) {
int setzung;
if(spieler == 1 || spieler == 2) {
setzung = (spieler+1)<<(zeile*3*2)+(spalte*2);
spielInt = spielInt|setzung;
}
else if(spieler == 0) {
setzung = ~(3<<(zeile*3*2)+(spalte*2));
spielInt = spielInt&setzung;
}
}
/**
* Gibt an, ob das Spielfeld an allen Positionen belegt ist.
*/
public boolean istVoll() {
return ((spielInt&0x2AAAA) == 0x2AAAA);
}
}