Moin Moin!
Ich habe ein kleines Problem und stehe grade voll auf dem Schlauch...
Das Problem ist folgendes:
Ich möchte das Smess-Spiel implementieren. Dazu habe ich ein Array aus Spielfeldern erzeugt (court[][]). Die Klasse Spielfeld besitzt eine Spielfigur, bzw. wenn keine Figur darauf ist, dann ist es null. Die Spielfigur wiederum hat eine Position, also ein Spielfeld auf dem sie steht.
Jetzt möchte ich die Figur umsetzen. Das macht folgender Programmabschnitt:
[Java]
public void zugAusfuehren(int startZ, char startS, int endZ, char endS){
int sZ = startZ;
int eZ = endZ;
int sS = startS - 'a' + 1;
int eS = endS - 'a' + 1;
if(this.court[eZ][eS].getFigur() != null){
// Geschlagene Figur löschen
this.court[eZ][eS].getFigur().getBesitzer().deleteFigur(this.court[eZ][eS].getFigur());
}
// Figur auf neues Feld setzen und altes Feld auf null
this.court[eZ][eS].setFigur(this.court[sZ][sS].getFigur());
Spielfigur aushilfe = new Spielfigur();
aushilfe = court[sZ][sS].getFigur();
aushilfe.setPosition(court[eZ][eS]);
this.court[sZ][sS].setFigur(null);
}
[/Java]
Das Problem ist, das in Zeile 13 manchmal eine NullPointerException auftritt. Dabei durchläuft jeder Spielzug zuerst ein Schiedsrichterprogramm, bevor er ausgeführt wird. Der Spielzug ist also korrekt. Es existiert sowohl das von-Feld, als auch das nach-Feld, und das Feld von dem gestartet wird hat eine Spielfigur.
Das komische ist, manchmal dauert es 2 Züge, bis der Fehler auftritt, aber ein anderes Mal kann er erst 10 Züge machen, und dann ist Feierabend.
Vielleicht hat jemand eine Idee? Manchmal sieht man ja den Wald vor lauter Bäumen nicht...
Vielen Dank schonmal im voraus!
Ich habe ein kleines Problem und stehe grade voll auf dem Schlauch...
Das Problem ist folgendes:
Ich möchte das Smess-Spiel implementieren. Dazu habe ich ein Array aus Spielfeldern erzeugt (court[][]). Die Klasse Spielfeld besitzt eine Spielfigur, bzw. wenn keine Figur darauf ist, dann ist es null. Die Spielfigur wiederum hat eine Position, also ein Spielfeld auf dem sie steht.
Jetzt möchte ich die Figur umsetzen. Das macht folgender Programmabschnitt:
[Java]
public void zugAusfuehren(int startZ, char startS, int endZ, char endS){
int sZ = startZ;
int eZ = endZ;
int sS = startS - 'a' + 1;
int eS = endS - 'a' + 1;
if(this.court[eZ][eS].getFigur() != null){
// Geschlagene Figur löschen
this.court[eZ][eS].getFigur().getBesitzer().deleteFigur(this.court[eZ][eS].getFigur());
}
// Figur auf neues Feld setzen und altes Feld auf null
this.court[eZ][eS].setFigur(this.court[sZ][sS].getFigur());
Spielfigur aushilfe = new Spielfigur();
aushilfe = court[sZ][sS].getFigur();
aushilfe.setPosition(court[eZ][eS]);
this.court[sZ][sS].setFigur(null);
}
[/Java]
Das Problem ist, das in Zeile 13 manchmal eine NullPointerException auftritt. Dabei durchläuft jeder Spielzug zuerst ein Schiedsrichterprogramm, bevor er ausgeführt wird. Der Spielzug ist also korrekt. Es existiert sowohl das von-Feld, als auch das nach-Feld, und das Feld von dem gestartet wird hat eine Spielfigur.
Das komische ist, manchmal dauert es 2 Züge, bis der Fehler auftritt, aber ein anderes Mal kann er erst 10 Züge machen, und dann ist Feierabend.
Vielleicht hat jemand eine Idee? Manchmal sieht man ja den Wald vor lauter Bäumen nicht...
Vielen Dank schonmal im voraus!