Hallo Kammeraden.
Ich habe mir eine datenstruktur angelegt die Wiefolgt aussieht:
Die Klasse Spielstein sieht so aus:
Jetzt möchte ich die Datenstruktur als 2D-Array Nutzen:
Ich bekomme immer eine NullPointerException beim Aufruf von
<B>data[x][y].addStone(st);</b>
Ich stehe auf der Leitung.....
Kann mir jedmand helfen, wie mein Konstrukt funktioniert. Irgendwo ist ein Denkfehler drin. Oder das ganze Konstrukt taugt nix.
PS: ich habe nur den relevanten Code stehen gelassen, der mit dem eigenltichen Problem zu tun hat. Wenn der ganze benötigt wird schick ich ihn nach.
Vielen Dank!
Screaper
Ich habe mir eine datenstruktur angelegt die Wiefolgt aussieht:
PHP:
public class GameData {
private ArrayList<SpielStein> spielSteine = new ArrayList<SpielStein>();
public GameData(){
}
public void addStone(SpielStein s){
spielSteine.add(new SpielStein(s.getXPos(), s.getYPos(), s.getCTyp()));
}
public int getNumberOfStones(){
return spielSteine.size();
}
public void deleteList(){
spielSteine.clear();
}
public SpielStein getProperties(int i){
return spielSteine.get(i);
}
}
Die Klasse Spielstein sieht so aus:
PHP:
public class SpielStein implements CommonGuiInterface{
private int xPos;
private int yPos;
private char cTyp;
private Color color;
public SpielStein(){}
public SpielStein(int x, int y, char c) {
cTyp = c;
xPos = x;
yPos = y;
setColor(cTyp);
}
private void setColor(char cTyp){
if(cTyp =='c'){color =CLIENTBOWL;}
if(cTyp =='s'){color =SERVERBOWL;}
if(cTyp =='n'){color =SPIELFELDCOLOR;}
}
public void setCTyp(char c){
cTyp = c;
}
public char getCTyp(){
return cTyp;
}
public void paintStone(Graphics g){
if(!(cTyp=='n')){
g.setColor(color);
g.fillOval(xPos, yPos, BOWLSIZE, BOWLSIZE);
}
}
public int getXPos(){
return xPos;
}
public int getYPos(){
return yPos;
}
public Color getCColor(){
return color;
}
}
Jetzt möchte ich die Datenstruktur als 2D-Array Nutzen:
PHP:
package logic;
import gui.*;
import com.*;
import java.util.*;
import java.awt.event.*;
public class Play implements CommonGuiInterface {
//Datenstrukturen
private GameData[][] data;
int xSize=0;
int ySize=0;
public Play (int x, int y, String adresse, int port, int time) {
xSize = x;
ySize = y;
data = new GameData[xSize][ySize];
}
//Rechnet die Koordinaten fürs Array aus.
private void identifyCoordinates(MouseEvent e){
xAxis = (e.getX()/FIELDSIZE);
yAxis = (e.getY()/FIELDSIZE);
System.out.println("Feldnummer: "+ xAxis+" "+yAxis);
}
public void updateData(int x, int y, int mx, int my){
addBowleToField(x, y, mx, my);
// if(isFull(x, y))calculateNewPositions();
// else return;
}
//Fügt eine Kugel zur Aktuellen Position hinzu
private void addBowleToField(int x, int y, int mx, int my ){
char color ='n';
if (whoseTurnIsIt == 0) color='c';
if (whoseTurnIsIt == 1) color='s';
SpielStein st = new SpielStein(mx,my,color);
data[x][y].addStone(st);
}
}}
Ich bekomme immer eine NullPointerException beim Aufruf von
<B>data[x][y].addStone(st);</b>
Ich stehe auf der Leitung.....
Kann mir jedmand helfen, wie mein Konstrukt funktioniert. Irgendwo ist ein Denkfehler drin. Oder das ganze Konstrukt taugt nix.
PS: ich habe nur den relevanten Code stehen gelassen, der mit dem eigenltichen Problem zu tun hat. Wenn der ganze benötigt wird schick ich ihn nach.
Vielen Dank!
Screaper