This site requires JavaScript, please enable it in your browser!
Greenfoot back
Nosson1459
Nosson1459 wrote ...

2016/11/13

nullPointerException

Nosson1459 Nosson1459

2016/11/13

#
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class SnakeD here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class SnakeD extends Monster
{
    private GreenfootImage image1=new GreenfootImage("snake4.png");
    private GreenfootImage image2=new GreenfootImage("snake3.png");
    private GreenfootImage image3=new GreenfootImage("snake3S.png");
    private GreenfootImage image4=new GreenfootImage("snake4S.png");
    private int speed=-2;
    private boolean squished=false;
    private int timer=0;
    public SnakeD()
    {
        setImage(image2);
    }
    /**
     * Act - do whatever the SnakeD wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        Scene scene=(Scene)getWorld();
        if(!scene.pause)
        {
            squished();
            penguMove();
            if(!squished)
            {
                move();
            }
            remove();
            if(!squished&&!removed)
            {
                out();
            }
        }
    }   
    private void move()
    {
        Scene scene=(Scene)getWorld();
        move(speed);
        cliffC cliffC=(cliffC)getOneIntersectingObject(cliffC.class);
        int turnLeft=cliffC.getX()-cliffC.getImage().getWidth()/2;
        int turnRight=cliffC.getX()+cliffC.getImage().getWidth()/2;
        if(speed<0)
           setImage(image2);
        if(speed>0)
           setImage(image1);
        if(onGround())
        {
           if(touchingLeftSide())
              speed=-speed;
           if(touchingRightSide())
              speed=-speed;
        }
        if(!onGround())
           fall();
        if(getX()<=turnLeft+20)
        {
            setImage(image1);
            speed=-speed;
        }
        if(getX()>=turnRight-20)
        {
            setImage(image2);
            speed=-speed;
        }
        
    }
    private void squished()
    {
        if(onTop())
        {
            Scene scene=(Scene)getWorld();
            squished=true;
            scene.stomp.play();
            if(getImage()==image1)
            setImage(image3);
            if(getImage()==image2)
            setImage(image4);
            if(!onGround())
            fall();
        }
    }
    private void remove()
    {
        Scene scene=(Scene)getWorld();
        if(squished==true)
        {
            timer++;
        }
        if(atBottom()||getX()<=-100)
        {
            scene.removeObject(this);
            removed=true;
        }
        else if(timer>=20)
        {
            scene.removeObject(this);
            scene.score+=500;
            timer=0;
            removed=true;
        }
        
        else if(isTouching(Bullet.class))
        {
            removeTouching(Bullet.class);
            scene.score+=500;
            scene.removeObject(this);
            removed=true;
        }
    }
}
import greenfoot.*; 
import java.util.List;
/**
 * This is the whole scene. It creates and contains the objects that are in it.
 */
public class Scene extends World
{
    public int turnLeft;
    public int turnRight;
    public int lives=2;
    private int width=750;
    private int height=500;
    public int score=0;
    public int coins=0;
    public int level=1;
    public boolean move=false;
    public boolean direction=true;
    private int a=1;
    public boolean onCloud=false;
    public boolean way=true;
    public boolean shooting=false;
    public boolean pause=false;
    public boolean isDoor=false;
    public GreenfootSound up=new GreenfootSound("smb_1-up.wav");
    public GreenfootSound breakBlock=new GreenfootSound("smb_breakblock.wav");
    public GreenfootSound bump=new GreenfootSound("smb_bump.wav");
    public GreenfootSound coin=new GreenfootSound("smb_coin.wav");
    public GreenfootSound fireball=new GreenfootSound("smb_fireball.wav");
    public GreenfootSound jump=new GreenfootSound("smb_jumpsmall.wav");
    public GreenfootSound pauseSound=new GreenfootSound("smb_pause.wav");
    public GreenfootSound powerup=new GreenfootSound("smb_powerup.wav");
    public GreenfootSound powerupAppears=new GreenfootSound("smb_powerup_appears.wav");
    public GreenfootSound stomp=new GreenfootSound("smb_stomp.wav");
    public Scene()
    {    
        super(750, 500, 1, false);    // define size and resolution
        setPaintOrder(EndScore.class,GameOver.class,HelpBox.class,Help.class,Coins.class,Level.class,Life.class,Score.class,Pause.class,Bar.class,Door.class,Pengu.class,DoorPost.class,Paused.class,Box.class,Shooting.class,Snake.class,SnakeD.class,Cloud.class);
        addObject(new Bar(),375,18);
        addObject(new Coins("Coins: "),645,18);
        addObject(new Life("Lives: "),85,18);
        addObject(new Score("Score: "),470,18);
        addObject(new Level("Level: "),270,18);
        addObject(new HelpBox(),730,18);
        addObject(new Pause(),18,18);
        level1();
    }
    public void act()
    {
        if(!pause)
        {
            if(lives<0)
            {
                addObject(new GameOver(),375,250);
                addObject(new EndScore(),375,212);
                Greenfoot.stop();
            }
            if(coins==100)
            {
                score+=500;
                lives++;
                coins=0;
            }
            if(level==2)
            {
                reset();
            }
            level1Act();
        }
    }
    public void reset()
    {
        List<Platform> platform=getObjects(Platform.class);
        List<Boxes> box=getObjects(Boxes.class);
        List<Pengu> pengu=getObjects(Pengu.class);
        List<cliffC> cliffC=getObjects(cliffC.class);
        List<CliffA> cliffA=getObjects(CliffA.class);
        List<Cloud> cloud=getObjects(Cloud.class);
        List<Monster> monster=getObjects(Monster.class);
        List<Coin> coin=getObjects(Coin.class);
        List<Bullet> bullet=getObjects(Bullet.class);
        removeObjects(platform);
        removeObjects(bullet);
        removeObjects(box);
        removeObjects(pengu);
        removeObjects(cliffC);
        removeObjects(cliffA);
        removeObjects(cloud);
        removeObjects(coin);
        removeObjects(monster);
        onCloud=false;
        a=1;
        shooting=false;
        List<Shooting> shooting=getObjects(Shooting.class);
        removeObjects(shooting);
        List<Brick> brick=getObjects(Brick.class);
        removeObjects(brick);
        List<Door> door=getObjects(Door.class);
        removeObjects(door);
        List<DoorPost> doorPost=getObjects(DoorPost.class);
        removeObjects(doorPost);
        isDoor=false;
        List<ExtraLife> extraLife=getObjects(ExtraLife.class);
        removeObjects(extraLife);
    }
    public void simulation()
    {
        addObject ( new CliffA(), 50, 405);
        addObject ( new cliffC(), 650, 405);
        
        addObject ( new Cloud(), 369, 315 );
        
        addObject ( new Pengu(), 46, 291 );
        
        addObject(new SnakeD(),650,302);
        addObject(new Block(2),141,270);
        addObject(new Block(2),141,310);
        addObject(new Block(2),181,310);
        addObject(new Block(2),221,310);
        addObject(new Block(2),261,310);
        addObject(new Block(2),261,270);
        addObject(new Snake(),201,275);
    }
    public void levelUp()
    {
        if(level==1)
        level1();
        if(level==2)
        level2();
    }
    public void level1()
    {
        for(int j=20;j<481;j+=40)
        {
            for(int i=360;i<481;i+=40)
            {
                addObject(new Block(2),j,i);
            }
        }
        addObject(new Pengu(),192,320);
        for(int i=240;i<401;i+=40)
        {
            addObject(new Box(1),i,240);
        }
        addObject ( new cliffC(), 658, 405);
        addObject(new SnakeD(),658,299);
        addObject(new Box(6),658,200);
        addObject(new CliffA(2),908,375);
        addObject(new Coin(),908,160);
        addObject(new Coin(),873,160);
        addObject(new Coin(),943,160);
        addObject(new CliffA(2),1243,375);
        addObject(new Cloud(930),1076,300);
        for(int j=1362;j<1483;j+=40)
        {
            for(int i=360;i<481;i+=40)
            {
                addObject(new Block(2),j,i);
            }
        }
        for(int i=1362;i<1443;i+=40)
        {
            addObject(new Coin(),i,240);
        }
        addObject(new Box(2),1482,240);
        addObject(new Block(1),1679,289);
        addObject(new cliffC(),1788,405);
        addObject(new CliffA(2),1942,375);
        addObject(new Snake(),1942,210);
        for (int j=2105; j<2346; j+=40)
        {
            for (int i=336; i<497; i+=40)
            {
                addObject(new Block(3),j,i);
            }
        }
        addObject(new Door(),2292,283);
        addObject(new DoorPost(),2292,283);
    }
    private void level1Act()
    {
        if(a==1)
        {
            addObject(new Creature(),440,240);
            a=3;
        }
    }
    private void level2()
    {
        reset();
        int a=359;
        for(int j=20;j<661;j+=40)
        {
            for(int i=480;i>a;i-=40)
            {
                if(j<301||j>381)
                {
                    addObject(new Block(2),j,i);
                }
            }
            if(j>381&&j<541)
            {
                a+=40;
            }
            else if(j>141&&j<261)
            {
                a-=40;
            }
        }
    }
    public void help()
    {
        addObject(new Help(),375,250);
    }
    public void help2()
    {
        List<Help> help=getObjects(Help.class);
        removeObjects(help);
    }
    private void test()
    {
        int a=359;
        for(int j=20;j<661;j+=40)
        {
            for(int i=480;i>a;i-=40)
            {
                if(j<301||j>381)
                {
                    addObject(new Block(2),j,i);
                }
            }
            if(j>381&&j<541)
            {
                a+=40;
            }
            else if(j>141&&j<261)
            {
                a-=40;
            }
        }
    }
}
java.lang.NullPointerException at SnakeD.move(SnakeD.java:50) at SnakeD.act(SnakeD.java:35) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) how do I fix this problem
Nosson1459 Nosson1459

2016/11/13

#
fixed it its fine
You need to login to post a reply.