配列
Java初心者です。
RPGを作っているのですが、JPanelを継承したクラスのpaintComponentメソッドで、Stageをインスタンス化すると、
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
というエラーメッセージが表示されてしまいます。
エラーが発生している行は、Stage.javaで、mass_x[0]に値を代入しているところです。DrowMapクラスを継承しているので、その辺でミスをしているのだと思いますが・・・。
------------Stage.java
public class Stage extends DrowMap{
//コンストラクタ
public Stage(){
super();
//////////変数に値を代入(一部略)
//マップに使用する画像
mapImage = "/material/mapchip/s10.png";
//マップの作成
map_arrangement = new int[][]{
{1,1,1,1},
{1,0,0,0},
{1,0,0,0},
{1,1,1,1} };
mass_x[0] = 1;//ここでNullPointerExceptionが発生
mass_y[0] = 1;
mass_x[1] = 1;
mass_y[1] = 16;
}
}
----------DrowMap.java
abstract public class DrowMap{
//////////変数宣言(一部略)
//読み込んだマップチップから切り取って表示するマス
public int[] mass_x;
public int[] mass_y;
//表示されるマップの配列
public int[][] map_arrangement;
//使用するマップ画像
public String mapImage;
//使用するマップ画像の縦横のサイズ(単位:ピクセル)
public int mapImageSize_yoko;
public int mapImageSize_tate;
/**マップを描画*/
public void drowMap(Graphics g){
mapchip = ImageIO.read(getClass().getResource(mapImage));//try~catchは略
for(int i=0; i < tate; i++){
//マップのX座標を初期化
map_x = 0;
//マップのY座標=フレームの上枠+行数×チップサイズ
map_y = frame_top_border + i * MAPCHIP_SIZE;
for(int j = 0; j < yoko; j++){
//マップのX座標=(回数-1)×マップチップの大きさ+フレームの左枠
map_x = j * MAPCHIP_SIZE + frame_border;
//次に表示するマスの、チップの番号=map_arrangement[i][j]の値
int chipnumber = map_arrangement[i][j];
//画像ファイルから切り取る部分の左上のx座標
source_x = (mass_x[chipnumber] - 1) * MAPCHIP_SOURCE_SIZE;
//画像ファイルから切り取る部分のy座標
source_y = mass_y[chipnumber] * MAPCHIP_SOURCE_SIZE;
}
//マップの描画
g.drawImage(mapchip,
map_x,map_y,
MAPCHIP_SIZE,MAPCHIP_SIZE,
source_x,source_y,
source_x+MAPCHIP_SOURCE_SIZE,
source_y+MAPCHIP_SOURCE_SIZE,
frame);
}
}
}
色々と試してみたのですが、解決しません。お分かりになる方いらっしゃいましたら、教えていただけないでしょうか。
お礼
これです!なつかしすぎてめっちゃ鳥肌立った! オークションかなんかで購入したいと思います。 回答していただきありがとうございました。