R
rob bell
Hi im trying to create a basic game in java, and for now im just trying to
get a map to print. Everything compiles fine but i get a
nullpointerexception at the line:
labelArray[x][y].setLocation((y*20),(x*20));
I cant understand how seen as the array is initialised earlier.
heres the rest of the code, as u can see its pretty basic.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class MyGame {
JFrame gameFrame;
JPanel gamePanel;
int[][] mapArray = { {1,1,1,1,3,1,2,2,2,2},
{1,1,1,1,1,1,2,2,2,2},
{2,2,2,2,2,1,1,1,1,1},
{2,2,2,2,2,1,1,1,1,1} };
JLabel labelArray[][] = new JLabel[10][4];
public MyGame() {
gameFrame = new JFrame("Quest");
gamePanel = new JPanel();
ImageIcon grassIcon = new ImageIcon("img/grass.gif");
ImageIcon playerIcon = new ImageIcon("img/playerDown.gif");
ImageIcon waterIcon = new ImageIcon("img/water.gif");
for(int x = 0; x < 4; x++){
for(int y = 0; y < 10; y++){
if(mapArray[x][y] == '1'){
labelArray[x][y] = new JLabel(grassIcon);
gamePanel.add(labelArray[x][y], new Integer(1));
}
if(mapArray[x][y] == '2'){
labelArray[x][y] = new JLabel(waterIcon);
gamePanel.add(labelArray[x][y], new Integer(1));
}
if(mapArray[x][y] == '3'){
labelArray[x][y] = new JLabel(playerIcon);
gamePanel.add(labelArray[x][y], new Integer(1));
}
}
}
gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameFrame.setDefaultLookAndFeelDecorated(true);
gameFrame.getContentPane().add(gamePanel, BorderLayout.NORTH);
gameFrame.pack();
gameFrame.setSize(600,450);
gameFrame.setResizable(false);
gameFrame.setVisible(true);
for(int x = 0; x < 4; x++){
for(int y = 0; y < 10; y++){
labelArray[x][y].setLocation((y*20),(x*20)); //
heres the problem here
}
}
}
public static void main (String[] args){
MyGame newGame = new MyGame();
}
}
any help will be appreciated, also any tips on how i could improve or any
major pitfalls ive made.
thankyou
Rob
get a map to print. Everything compiles fine but i get a
nullpointerexception at the line:
labelArray[x][y].setLocation((y*20),(x*20));
I cant understand how seen as the array is initialised earlier.
heres the rest of the code, as u can see its pretty basic.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class MyGame {
JFrame gameFrame;
JPanel gamePanel;
int[][] mapArray = { {1,1,1,1,3,1,2,2,2,2},
{1,1,1,1,1,1,2,2,2,2},
{2,2,2,2,2,1,1,1,1,1},
{2,2,2,2,2,1,1,1,1,1} };
JLabel labelArray[][] = new JLabel[10][4];
public MyGame() {
gameFrame = new JFrame("Quest");
gamePanel = new JPanel();
ImageIcon grassIcon = new ImageIcon("img/grass.gif");
ImageIcon playerIcon = new ImageIcon("img/playerDown.gif");
ImageIcon waterIcon = new ImageIcon("img/water.gif");
for(int x = 0; x < 4; x++){
for(int y = 0; y < 10; y++){
if(mapArray[x][y] == '1'){
labelArray[x][y] = new JLabel(grassIcon);
gamePanel.add(labelArray[x][y], new Integer(1));
}
if(mapArray[x][y] == '2'){
labelArray[x][y] = new JLabel(waterIcon);
gamePanel.add(labelArray[x][y], new Integer(1));
}
if(mapArray[x][y] == '3'){
labelArray[x][y] = new JLabel(playerIcon);
gamePanel.add(labelArray[x][y], new Integer(1));
}
}
}
gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameFrame.setDefaultLookAndFeelDecorated(true);
gameFrame.getContentPane().add(gamePanel, BorderLayout.NORTH);
gameFrame.pack();
gameFrame.setSize(600,450);
gameFrame.setResizable(false);
gameFrame.setVisible(true);
for(int x = 0; x < 4; x++){
for(int y = 0; y < 10; y++){
labelArray[x][y].setLocation((y*20),(x*20)); //
heres the problem here
}
}
}
public static void main (String[] args){
MyGame newGame = new MyGame();
}
}
any help will be appreciated, also any tips on how i could improve or any
major pitfalls ive made.
thankyou
Rob