Hallo Zusammen
Ich bin aktuell am ersten Java Projekt mit GameGrid und habe irgendwo einen (wahrscheinlich noch viel mehr) Fehler gemacht und jetzt bewegt sich mein Actor nicht mehr. Ich habe jetzt schon mehrere Stunden versucht den Fehler zu korrigieren aber ich finde ihn nicht. Wenn mir jemand erklären könnte, was ich falsch gemacht habe oder einen Lösungsansatz hat, wäre ich sehr Dankbar.
Eclipse gibt mir die Fehlermeldung:
Das ist meine Main Methode die das Spiel erstellt.
Und das ist die Methode des Actors der vom Spieler gesteuert werden sollte.
Und das ist die Klasse der Bombe die über die Leertaste getriggert werden sollte.
Danke im Voraus für eure Antworten
Lg Sphinx64
Ich bin aktuell am ersten Java Projekt mit GameGrid und habe irgendwo einen (wahrscheinlich noch viel mehr) Fehler gemacht und jetzt bewegt sich mein Actor nicht mehr. Ich habe jetzt schon mehrere Stunden versucht den Fehler zu korrigieren aber ich finde ihn nicht. Wenn mir jemand erklären könnte, was ich falsch gemacht habe oder einen Lösungsansatz hat, wäre ich sehr Dankbar.
Eclipse gibt mir die Fehlermeldung:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Duplicate local variable gg
Syntax error, insert ";" to complete LocalVariableDeclarationStatement
at Bombe.<init>(Bombe.java:22)
at MyGameGrid.<init>(MyGameGrid.java:45)
at MyGameGrid.main(MyGameGrid.java:21)
Das ist meine Main Methode die das Spiel erstellt.
Java:
import ch.aplu.jgamegrid.*;
import java.awt.Color;
import java.awt.Point;
import java.awt.*;
import java.awt.event.KeyEvent;
class MyGameGrid extends GameGrid implements GGActorCollisionListener
{
private Player player1;
private int level;
private boolean explode;
private GameGrid gg;
public static void main(String[] args) {
GameGrid gg = new MyGameGrid();
}
public MyGameGrid()
{
super(26, 18, 35, "sprites/Hintergrund.jpg");
Player player1 = new Player (this);
addActor(player1, new Location (0,0));
SuperBlöcke sBlock1 = new SuperBlöcke ();
addActor(sBlock1, getRandomEmptyLocation() );
player1.addCollisionCandidate(sBlock1);
player1.setCollisionEnabled(isRunning());
addKeyListener(this);
explode=true;
if (explode)
{
Bombe bombe = new Bombe ();
addActor(bombe, new Location(player1.getNbHorzCells(),player1.getNbVertCells()));
}
show ();
doRun();
}
public void act ()
{
}
public void createBombe ()
{
Bombe bombe = new Bombe ();
// addActor(bombe, new Location (player1.getLocation()));
addActor(bombe, getRandomEmptyLocation());
}
public boolean keyPressed(KeyEvent evt)
{
switch (evt.getKeyCode())
{
case KeyEvent.VK_UP:
player1.setDirection(270);
player1.move ();
break;
case KeyEvent.VK_RIGHT:
player1.setDirection(0);
player1.move ();
break;
case KeyEvent.VK_LEFT:
player1.setDirection(180);
player1.move();
break;
case KeyEvent.VK_DOWN:
player1.setDirection(90);
player1.move();
break;
case KeyEvent.VK_SPACE:
createBombe ();
//bombenzähler++;
Player.explode=false;
break;
}
return false;
}
public boolean keyReleased (KeyEvent evt)
{
return false;
}
private int getLevel()
{
return level;
}
public int collide (Actor player1, Actor sBlock1)
{
//player1.removeSelf();
player1.setDirection(player1.getDirection() + 180);
return 0;
}
}
Und das ist die Methode des Actors der vom Spieler gesteuert werden sollte.
Code:
import ch.aplu.jgamegrid.*;
import java.awt.event.KeyEvent;
public class Player extends Actor implements GGKeyListener
{
static boolean explode;
private MyGameGrid mgg;
public Player(MyGameGrid mgg)
{
super ("sprites/Hamster.gif");
this.mgg = mgg;
Player.explode = false;
}
public void act()
{
}
public boolean keyPressed(KeyEvent evt)
{
switch (evt.getKeyCode())
{
case KeyEvent.VK_UP:
setDirection(270);
move ();
break;
case KeyEvent.VK_RIGHT:
setDirection(0);
move ();
break;
case KeyEvent.VK_LEFT:
setDirection(180);
move();
break;
case KeyEvent.VK_DOWN:
setDirection(90);
move();
break;
case KeyEvent.VK_SPACE:
explode = true;
mgg.createBombe ();
//bombenzähler++;
Player.explode=false;
break;
}
return true;
}
public boolean keyReleased(KeyEvent evt)
{
return false;
}
public static boolean getExplode ()
{
return explode;
}
@Override
public boolean keyHit(int keyCode) {
return false;
}
}
Und das ist die Klasse der Bombe die über die Leertaste getriggert werden sollte.
Java:
/**
* Write a description of class Bombe here.
*
* @author (your name)
* @version (a version number or a date)
*/
import ch.aplu.jgamegrid.*;
public class Bombe extends Actor
{
protected MyGameGrid explode;
public Bombe()
{
super (true, "sprites/000.png", 13);
}
public void act(MyGameGrid bombe)
{
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
bombe.showNextSprite ();
// GameGrid.delay (300) ;
}
}
Danke im Voraus für eure Antworten
Lg Sphinx64