Hallo,
ich brauche unbedingt HIlfe bei meinem Spiel.
Es wird mir ein Fehler angezeigt den ich absolut nicht verstehen kann (oder will).
Fehler:
[WR]Exception in thread "Thread-3" java.lang.NullPointerException
at Game.Game.draw(Game.java:111)
at Game.Game.setnewPosi(Game.java:80)
at Game.Game.movePlayer(Game.java:187)
at Core.Protokoll.decode(Protokoll.java:42)
at Core.Client.run(Client.java:97)
at java.lang.Thread.run(Unknown Source)[/WR]
Eine typische NullPointerException halt! ;(
Aber sowas ist ja im normal Fall schnell behoben, außer bei dem hier:
Die GAME Klasse:
und hier dann das Protokoll bei dem die anderern Spieler verschoben werden sobald eine neue Position eingeht (posi):
Das Problem muss eindeutig die Graphics sein, dass hab ich schon heraus gefunden aber was ist daran falsch??? ;( :rtfm:
Ich es kann mir schnell jemand helfen!
Gruß Anton
ich brauche unbedingt HIlfe bei meinem Spiel.
Es wird mir ein Fehler angezeigt den ich absolut nicht verstehen kann (oder will).
Fehler:
[WR]Exception in thread "Thread-3" java.lang.NullPointerException
at Game.Game.draw(Game.java:111)
at Game.Game.setnewPosi(Game.java:80)
at Game.Game.movePlayer(Game.java:187)
at Core.Protokoll.decode(Protokoll.java:42)
at Core.Client.run(Client.java:97)
at java.lang.Thread.run(Unknown Source)[/WR]
Eine typische NullPointerException halt! ;(
Aber sowas ist ja im normal Fall schnell behoben, außer bei dem hier:
Die GAME Klasse:
Java:
public class Game extends Container {
private static final long serialVersionUID = 1L;
static GUI gui = null;
static Client client = new Client(null);
static Textures texture = new Textures();
static Map map = new Map();
static int[][] ls_game = new int[20][20];
static int[][] ls_posi = new int[10][2];
static Graphics gr;
int size = 25;
int godirection = 0;
Thread tshoot;
static Shoot[] shoot = new Shoot[5];
static int cshoot = 0;
static int shoots = 5;
static int guimode = 1;
//gamemode 0: rect
//gamemode 1: img
public Game(GUI _gui) {
if (_gui != null) {
gui = _gui;
gr = this.getGraphics();
setBounds(10, 10, 500, 500);
}
}
public void setnewPosi(int in, boolean send, int x, int y) {
int type = in / 10;
if (in == 0 || in == 1) {
type = in;
}
int _x = ls_posi[type][0];
int _y = ls_posi[type][1];
gr = this.getGraphics();
int direction = in - (type * 10);
if (canset(x, y, in)) {
clear(in, _x, _y);
draw(in, x, y);
if (send) {
client.sendMSG("pos&&" + GUI.id + "&&" + x + "&&" + y + "&&"
+ direction, "all");
}
ls_posi[type][0] = x;
ls_posi[type][1] = y;
ls_game[x][y] = type;
}
else {
if (in == getPlayerid(GUI.id) + direction) {
draw(in, _x, _y);
ls_posi[type][0] = _x;
ls_posi[type][1] = _y;
ls_game[_x][_y] = type;
}
}
}
public void draw(int in, int x, int y){
int type = in / 10;
if (in == 0 || in == 1) {
type = in;
}
if (guimode == 0) {
gr.setColor(texture.getColor(type));
gr.fillRect(x * size, y * size, size, size);
}
if (guimode == 1) {
gr.drawImage(texture.getSymbol(in), x * size, y * size, this);
}
}
public boolean clear(int type, int x, int y) {
if (canset(x, y, 0)) {
if (ls_game[x][y] == type / 10) {
System.out.println(gr);
if (guimode == 0) {
gr.setColor(Color.GRAY);
gr.fillRect(x * size, y * size, size, size);
}
if (guimode == 1) {
gr.drawImage(texture.getSymbol(0), x * size, y * size, this);
}
return true;
}
}
return false;
}
public boolean canset(int x, int y, int type) {
if (x < 0) {
return false;
}
if (y < 0) {
return false;
}
if (x > 19) {
return false;
}
if (y > 19) {
return false;
}
if (ls_game[x][y] == 1) {
if (type == getPlayerid(GUI.id)) {
return false;
}
if (type == getPlayerid(GUI.id) + 1) {
return false;
}
if (type == getPlayerid(GUI.id) + 2) {
return false;
}
if (type == getPlayerid(GUI.id) + 3) {
return false;
}
}
return true;
}
}
und hier dann das Protokoll bei dem die anderern Spieler verschoben werden sobald eine neue Position eingeht (posi):
Java:
public String decode(String msg) {
String res = "";
String[] arr = null;
if (msg != null && !msg.isEmpty()) {
arr = msg.split("&&");
if (arr.length >= 1) {
if (arr[0].equalsIgnoreCase("start")) {
System.out.println("start");
gui.start();
res = "";
}
if (arr[0].equalsIgnoreCase("id")) {
if (arr.length == 2) {
int id = Integer.valueOf(arr[1]);
GUI.id = id;
res = "";
}
}
if (arr[0].equalsIgnoreCase("pos")) {
if(arr.length == 5){
int id = Integer.valueOf(arr[1]);
if(id != GUI.id){
int x = Integer.valueOf(arr[2]);
int y = Integer.valueOf(arr[3]);
System.out.println("Spieler[" + id + "]hat seine Postion auf " + x + "/" + y +" gewechselt!");
game.movePlayer(game.getPlayerid(id), x, y);
res = "";
}
}
}
}
}
return res;
}
Das Problem muss eindeutig die Graphics sein, dass hab ich schon heraus gefunden aber was ist daran falsch??? ;( :rtfm:
Ich es kann mir schnell jemand helfen!
Gruß Anton