i have problem with my actor . every time i step on one its give me error like this
java.lang.NullPointerException
at hráč.points(hráč.java:40)
at hráč.act(hráč.java:71)
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class hráč here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class hráč extends Actor
{
// nastavení zvukového efektu
GreenfootSound cink = new GreenfootSound("26f8b9_sonic_ring_sound_effect.mp3");
//celková rychlost hráče
int rychlost = 3;
// určuje vzdálenost od pevného objektu
int vzdálenost;
//deklaruje svět v hráči
MyWorld můjsvět;
svět2 můjsvět2;
boolean maximumbodů = false;
// pevně nastavaené směry do kterých se hráč může pohybovat
class Směr{
public static final int Nahoru = 270;
public static final int Dolů = 90;
public static final int Doprava = 0;
public static final int Doleva = 180;
}
public hráč(){
vzdálenost = getImage().getWidth();
}
public void addedToWorld(World w,svět2 w2){
můjsvět = (MyWorld)w;
můjsvět2 = (svět2)w2;
}
// odělá body z mapy a přidá 5 score
public void points(){
Actor body = getOneIntersectingObject(points.class);
if(body!=null){
můjsvět.removeObject(body);
můjsvět2.removeObject(body);
můjsvět.addScore(5);
můjsvět2.addScore(5);
cink.play();
}
}
/**
* Act - do whatever the hráč wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
//pohyb po přes tlačítka na klávesnici
if(Greenfoot.isKeyDown("W")){
setRotation(Směr.Nahoru);
moveHráč();
}else if (Greenfoot.isKeyDown("S")){
setRotation(Směr.Dolů);
moveHráč();
}else if(Greenfoot.isKeyDown("A")){
setRotation(Směr.Doleva);
moveHráč();
}else if(Greenfoot.isKeyDown("D")){
setRotation(Směr.Doprava);
moveHráč();
}
points();
}
public void moveHráč(){
//zjišťuje pevnou souřadnici X
int X = getX();
//zjišťuje pevnou souřadnici Y
int Y = getY();
//zjišťuje rotaci
int Rotace = getRotation();
int ZměnaX = getZměnaX(Rotace);
int ZměnaY = getZměnaY(Rotace);
int přídavekKeX = adjustOffset(ZměnaX);
int přídavekKeY = adjustOffset(ZměnaY);
Actor rock = getOneObjectAtOffset(adjustOffset(ZměnaX),adjustOffset(ZměnaY),rock.class);
if(rock == null){
setLocation(X + ZměnaX ,Y + ZměnaY);
}
}
private int getZměnaX(int Rotace){
if(Rotace == Směr.Doprava){
return rychlost;
}
if(Rotace == Směr.Doleva){
return -rychlost;
}
return 0;
}
private int getZměnaY(int Rotace){
if(Rotace == Směr.Dolů){
return rychlost;
}
if(Rotace == Směr.Nahoru){
return -rychlost;
}
return 0;
}
private int adjustOffset(int mimo){
int známkanarazu = (int)Math.signum(mimo);
int vzádálenostod = vzdálenost/2;
int adjustAmount = vzádálenostod * známkanarazu;
return mimo + adjustAmount;
}
}
