Hallo,
wie der Titel schon sagt, arbeite ich momentan an dem Handy-Spiel Snake in Java. Der Compiler übersetzt das Problem fehlerlos, sobald ich es ausführe kommt allerdings eine Java Nullpointer Exception.
Mein Konzept: Es gibt eine Klasse Snake, die ein einfaches Rechteck zeichnet (arbeite mit SuM-Bibliotheken, das sind einfache Lernbibliotheken). Um die Schlange zu bewegen, wird vorne ein neues Objekt der Klasse Snake erzeugt und angehängt (also ein Rechteck) und das hinterste Rechteck wird gelöscht.
Hoffe jemand kann mir helfen :rtfm:
Code meiner Methode bewege:
[JAVA=101]public void bewege()
{
switch(zRichtung)
{
case 1: hatvordereSnake.zNachfolger=new Snake(hatvordereSnake.hPosition()+zSpeed,
hatvordereSnake.vPosition(), kGröße);
hatvordereSnake=hatvordereSnake.nachfolger();
break;
case 2: hatvordereSnake.zNachfolger=new Snake(hatvordereSnake.hPosition(),
hatvordereSnake.vPosition()+zSpeed, kGröße);
hatvordereSnake=hatvordereSnake.nachfolger();
break;
case 3: hatvordereSnake.zNachfolger=new Snake(hatvordereSnake.hPosition()-zSpeed,
hatvordereSnake.vPosition(), kGröße);
hatvordereSnake=hatvordereSnake.nachfolger();
break;
case 4: hatvordereSnake.zNachfolger=new Snake(hatvordereSnake.hPosition(),
hatvordereSnake.vPosition()-zSpeed, kGröße);
hatvordereSnake=hatvordereSnake.nachfolger();
break;
}
hatloescheSnake=hathintereSnake;
hathintereSnake=hatloescheSnake.nachfolger();
hatloescheSnake.loesche();
}[/code]
Ich benutze hatvordereSnake, hathintereSnake und hatloescheSnake.
hatvordereSnake ist das Rechteck am Anfang und dient als Orientierung für ein neues Rechteck, damit es weiß, wo es hin muss.
hathintereSnake ist das letzte Rechteck, das gelöscht werden soll.
hatloescheSnake ist nur ein Übergangswert, in ihm wird das letzte Rechteck gespeichert.
Dann wird hatletzteSnake der Nachfolger vom letztenRechteck und das letzteRechteck wird gelöscht.
Bei der Zeile [JAVA=123]hathintereSnake=hatloescheSnake.nachfolger();[/code] kommt allerdings immer eine NullpointerException. Habe ich da irgendwas falsch gemacht?
PS: Für Kritik am Konzept wäre ich dankbar
wie der Titel schon sagt, arbeite ich momentan an dem Handy-Spiel Snake in Java. Der Compiler übersetzt das Problem fehlerlos, sobald ich es ausführe kommt allerdings eine Java Nullpointer Exception.
Mein Konzept: Es gibt eine Klasse Snake, die ein einfaches Rechteck zeichnet (arbeite mit SuM-Bibliotheken, das sind einfache Lernbibliotheken). Um die Schlange zu bewegen, wird vorne ein neues Objekt der Klasse Snake erzeugt und angehängt (also ein Rechteck) und das hinterste Rechteck wird gelöscht.
Hoffe jemand kann mir helfen :rtfm:
Code meiner Methode bewege:
[JAVA=101]public void bewege()
{
switch(zRichtung)
{
case 1: hatvordereSnake.zNachfolger=new Snake(hatvordereSnake.hPosition()+zSpeed,
hatvordereSnake.vPosition(), kGröße);
hatvordereSnake=hatvordereSnake.nachfolger();
break;
case 2: hatvordereSnake.zNachfolger=new Snake(hatvordereSnake.hPosition(),
hatvordereSnake.vPosition()+zSpeed, kGröße);
hatvordereSnake=hatvordereSnake.nachfolger();
break;
case 3: hatvordereSnake.zNachfolger=new Snake(hatvordereSnake.hPosition()-zSpeed,
hatvordereSnake.vPosition(), kGröße);
hatvordereSnake=hatvordereSnake.nachfolger();
break;
case 4: hatvordereSnake.zNachfolger=new Snake(hatvordereSnake.hPosition(),
hatvordereSnake.vPosition()-zSpeed, kGröße);
hatvordereSnake=hatvordereSnake.nachfolger();
break;
}
hatloescheSnake=hathintereSnake;
hathintereSnake=hatloescheSnake.nachfolger();
hatloescheSnake.loesche();
}[/code]
Ich benutze hatvordereSnake, hathintereSnake und hatloescheSnake.
hatvordereSnake ist das Rechteck am Anfang und dient als Orientierung für ein neues Rechteck, damit es weiß, wo es hin muss.
hathintereSnake ist das letzte Rechteck, das gelöscht werden soll.
hatloescheSnake ist nur ein Übergangswert, in ihm wird das letzte Rechteck gespeichert.
Dann wird hatletzteSnake der Nachfolger vom letztenRechteck und das letzteRechteck wird gelöscht.
Bei der Zeile [JAVA=123]hathintereSnake=hatloescheSnake.nachfolger();[/code] kommt allerdings immer eine NullpointerException. Habe ich da irgendwas falsch gemacht?
PS: Für Kritik am Konzept wäre ich dankbar
Zuletzt bearbeitet: