PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pacman - NullPointerException



haggys22
22.09.2010, 22:27
Hallo,
ich bin gerade dabei, mir mein eigenes Pacman mit Java zu programmieren.
Dafür habe ich .BMPs erstellt, die die Wände, die Monster und Pacman darstellen. Dabei habe ich alle Möglichkeiten wie die Wände vorkommen können beachtet und auch einen "Auswahlcode" dafür geschrieben. Da hat noch alles funktioniert.
Alte Pacmanversion (http://rapidshare.com/files/420651174/PacMan.zip)
Nun wollte ich noch einen "Mapeditor" erstellen, wobei ich in einer Textdatei, in meinem Fall "Pacman.txt" die Map mit Zahlen aufschreibe (0=leeres Feld, 1=Münze, 2=Wand, etc.) und dann die Zahlen in Java in die richtigen Felder umwandle. Doch dabei wird mir immer wieder folgender Fehler angezeigt:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Labyrinth.anzeigen(Labyrinth.java:299)
at Ansicht$2.paint(Ansicht.java:99)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Labyrinth.anzeigen(Labyrinth.java:299)
at Ansicht$2.paint(Ansicht.java:99)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
,wobei ich damit nicht viel anfangen kann, da ich der Meinung bin, dass keine Variable den Wert "null" haben sollte.
Pacman mit Mapeditor (http://rapidshare.com/files/420651177/PacMan2.zip)
Es wäre nett wenn mir jemand bei meinem Problem helfen könnte ;)

mfG
haggys22

PS: Ich arbeite mit BlueJ falls dies eine wichtige Information sein sollte ;)

Invincible
23.09.2010, 13:51
hi,

Dein Hauptproblem ist, damit du erstmal weitermachen kannst ist:


for(int y = 0; y < 22; y++){
String c = Character.toString(zeile.charAt(y));
if(c == "0"){
feld[x][y].neuerStatus(0);
}
if(c == "1"){
feld[x][y].neuerStatus(1);
}
if(c == "2"){
feld[x][y].neuerStatus(2);
}
if(c == "3"){
feld[x][y].neuerStatus(3);
}
if(c == "A"){
monster[0] = new Grünie(x, y);
}
if(c == "B"){
monster[1] = new Pinkie(x, y);
}
if(c == "C"){
monster[2] = new Türkie(x, y);
}
if(c == "P"){
pacman.setzePosition(x, y);
}
}
}Das muss so:


for(int x = 0; x <12; x++){
String zeile = "";
zeile = in.readLine();
for(int y = 0; y < 12; y++){
String c = Character.toString(zeile.charAt(y));
if(c.equals("0")){
System.out.println("0");
feld[x][y].neuerStatus(0);
}
if(c.equals("1")){
System.out.println("1");
feld[x][y].neuerStatus(1);
}
if(c.equals("2")){
System.out.println("2");
feld[x][y].neuerStatus(2);
}
if(c.equals("3")){
System.out.println("3");
feld[x][y].neuerStatus(3);
}
if(c.equals("A")){
System.out.println("A");
monster[0] = new Grünie(x, y);
}
if(c.equals("B")){
System.out.println("B");
monster[1] = new Pinkie(x, y);
}
if(c.equals("C")){
System.out.println("C");
monster[2] = new Türkie(x, y);
}
if(c.equals("P")){
System.out.println("P");
pacman = new Pacman(x,y);
}
}
}So liest er ihr Map ein, zwar noch fehlerhaft, aber du kannst weitermachen^^

E: Die System.out.println("1"); etc... kannste natürlich weglassen.

haggys22
23.09.2010, 19:01
Erstmal n dickes Dankeschön :)
Bloß jetzt bin ich am Verzweifeln wie ich das Spielfeld um 90° im Uhrzeigersinn "drehen" kann :rolleyes:

Mr. Edit
23.09.2010, 20:07
123
456
789

wird:

741
852
963

also Element[X|Y]=Element[Breite-Y-1|X]
bei Null-basierenden Arrays

Zum Beispiel die "7" an Position [0|2]
kommt nach [3-2-1|0]=[0|0]

oder "2" an [1|0]
zu [3-0-1|1]=[2|1]

EDIT: Und nicht vergessen vorher Feld zu kopieren!

haggys22
23.09.2010, 21:52
Vielen Danke, aber ich glaube, ich schreibe einfach die "Maps" 90° verdreht, da mein Array nicht quadratisch ist^^aber warum wird nur ein teil vom Feld angezeigt?

Die neue Version von Pacman findet ihr unter MyDrive - Ihr kostenloser Online-Speicher (http://www.mydrive.ch), dort als Gast@Haggi94, PW: haggys22 einloggen und im Ordner "free-hack.com" den Ordner PacMan2 runterladen.

Getti
23.09.2010, 21:56
Ich hoffe du hast die Datei noch irgendwo anders gespeichert und auch sonst nix wichtiges da im Account liegen...
Könnte schwören das in spätesten 24 Stunden das pw geändert wird (falls es nicht schon passiert ist).
LG

haggys22
23.09.2010, 22:07
Es ist ein Gastaccount der keine Einstellungen machen kann ;P

EDIT: So... alles läuft, bis auf Pacman o.0