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

2016/11/6

nullPointerException

Nosson1459 Nosson1459

2016/11/6

#
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 int addObjects;
    public int objectNumber=0;
    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 wasOnCloud=false;
    public boolean door=false;
    public Scene()
    {    
        super(934, 500, 1);    // define size and resolution
        setPaintOrder(HelpBox.class,Blocker.class,GameOver.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(),467,18);
        addObject(new Coins("Coins: "),787,18);
        addObject(new Life("Lives: "),177,18);
        addObject(new Score("Score: "),592,18);
        addObject(new Level("Level: "),362,18);
        addObject(new Blocker(),45,250);
        addObject(new Blocker2(),888,250);
        addObject(new HelpBox(),888,454);
        addObject(new Pause(),110,18);
        level1();
    }
    public void act()
    {
        if(!pause)
        {
            if(lives<0)
            {
                addObject(new GameOver(),467,250);
                if(score==0)
                {
                    showText(""+score,457,210);
                }
                else if(score>99&&score<1000)
                {
                    showText(""+score,467,210);
                }
                else if(score>999&&score<10000)
                {   
                    showText(""+score,472,210);
                }
                else if(score>9999&&score<100000)
                {
                    showText(""+score,477,210);
                }
                else if(score>99999)
                {
                    showText(""+score,482,210);
                }
                Greenfoot.stop();
            }
            if(coins==100)
            {
                score+=500;
                lives++;
                coins=0;
            }
            if(level==2)
            {
                reset();
            }
            if(Greenfoot.isKeyDown("Right")&&move==true)
            {
                addObjects++;
            }
            if(onCloud==true)
            {
                wasOnCloud=true;
            }
            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);
        addObjects=0;
        objectNumber=0;
        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);
    }
    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(),141,270);
        addObject(new Block(),141,310);
        addObject(new Block(),181,310);
        addObject(new Block(),221,310);
        addObject(new Block(),261,310);
        addObject(new Block(),261,270);
        addObject(new Snake(),201,275);
    }
    public void level1()
    {
        for(int j=112;j<573;j+=40)
        {
            for(int i=360;i<481;i+=40)
            {
                addObject(new Block(),j,i);
            }
        }
        addObject(new Pengu(),192,320);
        for(int i=332;i<493;i+=40)
        {
            addObject(new Box(1),i,240);
        }
        addObject ( new cliffC(), 750, 405);
        addObject(new SnakeD(),750,299);
        addObject(new Box(6),750,200);
    }
    private void level1Act()
    {
        if(a==1)
        {
            addObject(new Creature(),532,240);
            a=3;
        }
        if(addObjects==10&&objectNumber==0)
        {
            addObjects=0;
            objectNumber++;
            addObject(new CliffA(2),930,375);
            addObject(new Coin(),930,160);
            addObject(new Coin(),895,160);
        }
        if(addObjects==5&&objectNumber==1)
        {
            addObjects=0;
            objectNumber++;
            addObject(new Coin(),930,160);
        }
        if(addObjects==45&&objectNumber==2)
        {
            addObject(new CliffA(2),930,375);
            addObject(new Cloud(930),780,300);
            addObjects=0;
            objectNumber++;
        }
        if(addObjects==17&&objectNumber==3)
        {
            for(int i=360;i<481;i+=40)
            {
                addObject(new Block(),934,i);
            }
            addObject(new Coin(),934,260);
            addObjects=0;
            objectNumber++;
        }
        if(addObjects==6&&objectNumber==4)
        {
            for(int i=360;i<481;i+=40)
            {
                addObject(new Block(),931,i);
            }
            addObject(new Coin(),931,260);
            addObjects=0;
            objectNumber++;
        }
        if(addObjects==6&&objectNumber==5)
        {
            for(int i=360;i<481;i+=40)
            {
                addObject(new Block(),928,i);
            }
            addObject(new Coin(),928,260);
            addObjects=0;
            objectNumber++;
        }
        if(addObjects==6&&objectNumber==6)
        {
            for(int i=360;i<481;i+=40)
            {
                addObject(new Block(),925,i);
            }
            addObject(new Box(2),925,240);
            addObjects=0;
            objectNumber++;
        }
        if(addObjects>=11&&objectNumber==7&&onCloud==false&&wasOnCloud==true)
        {   
            addObject(new Block(),895,289);
            wasOnCloud=false;
            addObjects=0;
            objectNumber++;
        }
        if(addObjects==12&&objectNumber==8)
        {
            addObject(new cliffC(),934,405);
            addObjects=0;
            objectNumber++;
        }
        if(addObjects==22&&objectNumber==9)
        {
            addObject(new CliffA(2),934,375);
            addObject(new Snake(),934,210);
            addObjects=0;
            objectNumber++;
        }
        if(addObjects==40&&objectNumber==10)
        {
            
            addObject(new Brick(),934,408);
            addObjects=0;
            objectNumber++;
        }
        if(addObjects==10&&objectNumber==11)
        {
            addObject(new Door(),934,283);
            addObject(new DoorPost(),934,283);
            addObjects=0;
            objectNumber++;   
        }
    }
    public void help()
    {
        addObject(new Help(),467,250);
    }
    public void help2()
    {
        List<Help> help=getObjects(Help.class);
        removeObjects(help);
    }
    private void test()
    {
        addObject(new Cloud(561),342,250);
    }
}
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Box here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Box extends Boxes
{
    private GreenfootImage image1=new GreenfootImage("mystery.png");
    private GreenfootImage image2=new GreenfootImage("MysteryG.png");
    private GreenfootImage image3=new GreenfootImage("Block.png");
    private GreenfootImage image4=new GreenfootImage("transparentBox.png");
    private int timer=0;
    private boolean hit=false;
    private int counter=0;
    private boolean empty=false;
    private boolean coin=false;
    private boolean shooting=false;
    private boolean invisible=false;
    private boolean extraLife=false;
    public boolean isThere=true;
    public Box(int type)
    {
        
        if(type==1)
        {
            invisible=false;
            coin=true;
            shooting=false;
            extraLife=false;
        }
        if(type==2)
        {
            invisible=false;
            shooting=true;
            coin=false;
            extraLife=false;
        }
        if(type==3)
        {
            invisible=false;
            shooting=false;
            coin=false;
            extraLife=true;
        }
        if(type==4)
        {
            invisible=true;
            coin=true;
            shooting=false;
            extraLife=false;
            isThere=false;
        }
        if(type==5)
        {
            invisible=true;
            coin=false;
            shooting=true;
            extraLife=false;
            isThere=false;
        }
        if(type==6)
        {
            invisible=true;
            shooting=false;
            coin=false;
            extraLife=true;
            isThere=false;
        }
        if(invisible==false)
        setImage(image1);
        if(invisible==true)
        setImage(image4);
    }
    public Box()
    {
       setImage(image1);
    }
    /**
     * Act - do whatever the Box 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)
        {
            if(!empty)
            {
                checkPengu();
                hit();
            }
            move();
            remove();
        }
    }  
    private boolean checkPengu1()
    {
        Object under=getOneObjectAtOffset(0,getImage().getHeight()/2+1,Pengu.class);
        return under!=null;
    }
    private boolean checkPengu2()
    {
        Object under=getOneObjectAtOffset(getImage().getWidth()/2-1,getImage().getHeight()/2,Pengu.class);
        return under!=null;
    }
    private boolean checkPengu3()
    {
        Object under=getOneObjectAtOffset(-getImage().getWidth()/2+1,getImage().getHeight()/2,Pengu.class);
        return under!=null;
    }
    private void checkPengu()
    {
        if(checkPengu1()||checkPengu2()||checkPengu3())
        {
            hit=true;
        }
    }
    private void hit()
    {
        Scene scene=(Scene)getWorld();
        if(hit==true)
        {
            timer++;
            if(counter<6)
            {
                if(timer==2&&getImage()==image1||getImage()==image4)
                {
                    setImage(image2);
                    timer=0;
                    counter++;
                }
                if(timer==2&&getImage()==image2)
                {
                    setImage(image1);
                    timer=0;
                    counter++;
                }
            }
            
        }
        if(counter==5)
        {
            empty=true;
            if(shooting==true)
            {
                scene.addObject(new Shooting(),getX(),getY());
                scene.score=scene.score+100;
            }
            else if(coin==true)
            {
                scene.coins++;
                scene.score=scene.score+100;
            }
            else if(extraLife==true)
            {
                scene.addObject(new ExtraLife(),getX(),getY());
                scene.score=scene.score+100;
            }
            counter=0;
            hit=false;
            setImage(image3);
        }
    }
    private void move()
    {
        Scene scene=(Scene)getWorld();
        if(Greenfoot.isKeyDown("Right")&&scene.move==true)
        setLocation(getX()-7,getY());   
        if(scene.onCloud==true)
        {
            if(scene.way==true)
            {
                setLocation(getX()-4,getY());
            }
            if(scene.way==false)
            {
                setLocation(getX()+4,getY());
            }
        }
    }
}
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Block here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Block extends Boxes
{
    /**
     * Act - do whatever the Block 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)
        {
            move();
            remove();
        }
    }  
    private void move()
    {
        Scene scene=(Scene)getWorld();
        if(Greenfoot.isKeyDown("Right")&&scene.move==true)
        setLocation(getX()-7,getY());   
        if(scene.onCloud==true)
        {
            if(scene.way==true)
            {
                setLocation(getX()-4,getY());
            }
            if(scene.way==false)
            {
                setLocation(getX()+4,getY());
            }
        }
    }
}
import greenfoot.*;

/**
 * The class Mover provides some basic movement methods. Use this as a superclass
 * for other actors that should be able to move left and right, jump up and fall 
 * down.
 */
public class Mover extends Actor
{
    private static final int acceleration = 2;      // down (gravity)
    private static final int speed = 7;             // running speed (sideways)
    
    private int vSpeed = 0;                         // current vertical speed
    
    private boolean hasHit=false;
    public void moveRight()
    {
        setLocation ( getX() + speed, getY() );
    }

    public void moveLeft()
    {
        setLocation ( getX() - speed, getY() );
    }
            
    public boolean onTop()
    {
        return onTop1()||onTop2()||onTop3();
    }
    private boolean onTop1()
    {
        Object under = getOneObjectAtOffset(-getImage().getWidth()/2+8, -getImage().getHeight()/2 , Boxes.class);
        return under != null;
    }
    private boolean onTop2()
    {
        Object under = getOneObjectAtOffset(0, -getImage().getHeight()/2 , Boxes.class);
        return under != null;
    }
    private boolean onTop3()
    {
        Object under = getOneObjectAtOffset(getImage().getWidth()/2-8, -getImage().getHeight()/2 , Boxes.class);
        return under != null;
    }
    
    private boolean onGround1B()
    {
        Box box = getOneObjectAtOffset(0, getImage().getHeight()/2 , Box.class);
        return box != null&&box.isThere==true;
    }
    private boolean onGround2B()
    {
        Box box = getOneObjectAtOffset(getImage().getWidth()/2-10, getImage().getHeight()/2 , Box.class);
        return box != null||box.isThere==true;
    }
    private boolean onGround3B()
    {
        Box box  = getOneObjectAtOffset(-getImage().getWidth()/2+10, getImage().getHeight()/2 , Box.class);
        return box != null||box.isThere==true;
    }
    private boolean onGroundB()
    {
        return onGround1B()||onGround2B()||onGround3B();
    }
    private boolean onGround1Bc()
    {
        Object under = getOneObjectAtOffset(0, getImage().getHeight()/2 , Block.class);
        return under != null;
    }
    private boolean onGround2Bc()
    {
        Object under = getOneObjectAtOffset(getImage().getWidth()/2-10, getImage().getHeight()/2 , Block.class);
        return under != null;
    }
    private boolean onGround3Bc()
    {
        Object under = getOneObjectAtOffset(-getImage().getWidth()/2+10, getImage().getHeight()/2 , Block.class);
        return under != null;
    }
    private boolean onGroundBc()
    {
        return onGround1Bc()||onGround2Bc()||onGround3Bc();
    }
    private boolean onGround1C()
    {
        Object under = getOneObjectAtOffset(0, getImage().getHeight()/2 , cliffC.class);
        return under != null;
    }
    private boolean onGround2C()
    {
        Object under = getOneObjectAtOffset(getImage().getWidth()/2-10, getImage().getHeight()/2 , cliffC.class);
        return under != null;
    }
    private boolean onGround3C()
    {
        Object under = getOneObjectAtOffset(-getImage().getWidth()/2+10, getImage().getHeight()/2 , cliffC.class);
        return under != null;
    }
    private boolean onGroundC()
    {
        return onGround1C()||onGround2C()||onGround3C();
    }
    private boolean onGround1Br()
    {
        Object under = getOneObjectAtOffset(0, getImage().getHeight()/2 , Brick.class);
        return under != null;
    }
    private boolean onGround2Br()
    {
        Object under = getOneObjectAtOffset(getImage().getWidth()/2-10, getImage().getHeight()/2 , Brick.class);
        return under != null;
    }
    private boolean onGround3Br()
    {
        Object under = getOneObjectAtOffset(-getImage().getWidth()/2+10, getImage().getHeight()/2 , Brick.class);
        return under != null;
    }
    private boolean onGroundBr()
    {
        return onGround1Br()||onGround2Br()||onGround3Br();
    }
    private boolean onGround1CA()
    {
        Object under = getOneObjectAtOffset(0, getImage().getHeight()/2 , CliffA.class);
        return under != null;
    }
    private boolean onGround2CA()
    {
        Object under = getOneObjectAtOffset(getImage().getWidth()/2-10, getImage().getHeight()/2 , CliffA.class);
        return under != null;
    }
    private boolean onGround3CA()
    {
        Object under = getOneObjectAtOffset(-getImage().getWidth()/2+10, getImage().getHeight()/2 , CliffA.class);
        return under != null;
    }
    private boolean onGroundCA()
    {
        return onGround1CA()||onGround2CA()||onGround3CA();
    }
    private boolean onGround1Cl()
    {
        Object under = getOneObjectAtOffset(0, getImage().getHeight()/2 , Cloud.class);
        return under != null;
    }
    private boolean onGround2Cl()
    {
        Object under = getOneObjectAtOffset(getImage().getWidth()/2-10, getImage().getHeight()/2 , Cloud.class);
        return under != null;
    }
    private boolean onGround3Cl()
    {
        Object under = getOneObjectAtOffset(-getImage().getWidth()/2+10, getImage().getHeight()/2 , Cloud.class);
        return under != null;
    }
    private boolean onGroundCl()
    {
        return onGround1Cl()||onGround2Cl()||onGround3Cl();
    }
    private boolean onGround1P()
    {
        Object under = getOneObjectAtOffset(0, getImage().getHeight()/2 , Platform.class);
        return under != null;
    }
    private boolean onGround2P()
    {
        Object under = getOneObjectAtOffset(getImage().getWidth()/2-10, getImage().getHeight()/2 , Platform.class);
        return under != null;
    }
    private boolean onGround3P()
    {
        Object under = getOneObjectAtOffset(-getImage().getWidth()/2+10, getImage().getHeight()/2 , Platform.class);
        return under != null;
    }
    private boolean onGroundP()
    {
        return onGround1P()||onGround2P()||onGround3P();
    }
    private boolean onGround1Cr()
    {
        Object under = getOneObjectAtOffset(0, getImage().getHeight()/2 , Creature.class);
        return under != null;
    }
    private boolean onGround2Cr()
    {
        Object under = getOneObjectAtOffset(getImage().getWidth()/2-10, getImage().getHeight()/2 , Creature.class);
        return under != null;
    }
    private boolean onGround3Cr()
    {
        Object under = getOneObjectAtOffset(-getImage().getWidth()/2+10, getImage().getHeight()/2 , Creature.class);
        return under != null;
    }
    private boolean onGroundCr()
    {
        return onGround1Cr()||onGround2Cr()||onGround3Cr();
    }
    public boolean onGround()
    {
        return onGroundBc()||onGroundB()||onGroundC()||onGroundBr()||onGroundCA()||onGroundCl()||onGroundP()||onGroundCr();
    }
    
    private boolean touchingLeftSide1B()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,getImage().getHeight()/2-20,Boxes.class);
       return side!=null;
    }
    private boolean touchingLeftSide2B()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,-getImage().getHeight()/2+1,Boxes.class);
       return side!=null;
    }
    private boolean touchingLeftSide3B()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,0,Boxes.class);
       return side!=null;
    }
    private boolean touchingLeftSideB()
    {
        return touchingLeftSide1B()||touchingLeftSide2B()||touchingLeftSide3B();
    }
    private boolean touchingLeftSide1C()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,getImage().getHeight()/2-20,cliffC.class);
       return side!=null;
    }
    private boolean touchingLeftSide2C()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,-getImage().getHeight()/2+1,cliffC.class);
       return side!=null;
    }
    private boolean touchingLeftSide3C()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,0,cliffC.class);
       return side!=null;
    }
    private boolean touchingLeftSideC()
    {
        return touchingLeftSide1C()||touchingLeftSide2C()||touchingLeftSide3C();
    }
    private boolean touchingLeftSide1Br()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,getImage().getHeight()/2-20,Brick.class);
       return side!=null;
    }
    private boolean touchingLeftSide2Br()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,-getImage().getHeight()/2+1,Brick.class);
       return side!=null;
    }
    private boolean touchingLeftSide3Br()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,0,Brick.class);
       return side!=null;
    }
    private boolean touchingLeftSideBr()
    {
        return touchingLeftSide1Br()||touchingLeftSide2Br()||touchingLeftSide3Br();
    }
    private boolean touchingLeftSide1CA()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,getImage().getHeight()/2-20,CliffA.class);
       return side!=null;
    }
    private boolean touchingLeftSide2CA()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,-getImage().getHeight()/2+1,CliffA.class);
       return side!=null;
    }
    private boolean touchingLeftSide3CA()
    {
       Object side=getOneObjectAtOffset(-getImage().getWidth()/2,0,CliffA.class);
       return side!=null;
    }
    private boolean touchingLeftSideCA()
    {
        return touchingLeftSide1CA()||touchingLeftSide2CA()||touchingLeftSide3CA();
    }
    private boolean touchingLeftSide1Bl()
    {
        Object side=getOneObjectAtOffset(-getImage().getWidth()/2,getImage().getHeight()/2-20,Blocker.class);
        return side!=null;
    }
    private boolean touchingLeftSide2Bl()
    {
        Object side=getOneObjectAtOffset(-getImage().getWidth()/2,-getImage().getHeight()/2+1,Blocker.class);
        return side!=null;
    }
    private boolean touchingLeftSide3Bl()
    {
        Object side=getOneObjectAtOffset(-getImage().getWidth()/2,0,Blocker.class);
        return side!=null;
    }
    private boolean touchingLeftSideBl()
    {
        return touchingLeftSide1Bl()||touchingLeftSide2Bl()||touchingLeftSide3Bl();
    }
    public boolean touchingLeftSide()
    {
        return touchingLeftSideB()||touchingLeftSideC()||touchingLeftSideBl()||touchingLeftSideBr()||touchingLeftSideCA();
    }
    
    private boolean touchingRightSide1B()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,-getImage().getHeight()/2+1,Boxes.class);
        return side!=null;
    }
    private boolean touchingRightSide2B()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,getImage().getHeight()/2-20,Boxes.class);
        return side!=null;
    }
    private boolean touchingRightSide3B()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,0,Boxes.class);
        return side!=null;
    }
    private boolean touchingRightSideB()
    {
        return touchingRightSide1B()||touchingRightSide2B()||touchingRightSide3B(); 
    }
    private boolean touchingRightSide1Bl()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,-getImage().getHeight()/2+1,Blocker.class);
        return side!=null;
    }
    private boolean touchingRightSide2Bl()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,getImage().getHeight()/2-20,Blocker.class);
        return side!=null;
    }
    private boolean touchingRightSide3Bl()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,0,Blocker.class);
        return side!=null;
    }
    private boolean touchingRightSideBl()
    {
        return touchingRightSide1Bl()||touchingRightSide2Bl()||touchingRightSide3Bl(); 
    }
    private boolean touchingRightSide1C()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,-getImage().getHeight()/2+1,cliffC.class);
        return side!=null;
    }
    private boolean touchingRightSide2C()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,getImage().getHeight()/2-20,cliffC.class);
        return side!=null;
    }
    private boolean touchingRightSide3C()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,0,cliffC.class);
        return side!=null;
    }
    private boolean touchingRightSideC()
    {
        return touchingRightSide1C()||touchingRightSide2C()||touchingRightSide3C(); 
    }
    private boolean touchingRightSide1Br()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,-getImage().getHeight()/2+1,Brick.class);
        return side!=null;
    }
    private boolean touchingRightSide2Br()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,getImage().getHeight()/2-20,Brick.class);
        return side!=null;
    }
    private boolean touchingRightSide3Br()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,0,Brick.class);
        return side!=null;
    }
    private boolean touchingRightSideBr()
    {
        return touchingRightSide1Br()||touchingRightSide2Br()||touchingRightSide3Br(); 
    }
    private boolean touchingRightSide1CA()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,-getImage().getHeight()/2+1,CliffA.class);
        return side!=null;
    }
    private boolean touchingRightSide2CA()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,getImage().getHeight()/2-20,CliffA.class);
        return side!=null;
    }
    private boolean touchingRightSide3CA()
    {
        Object side=getOneObjectAtOffset(getImage().getWidth()/2,0,CliffA.class);
        return side!=null;
    }
    private boolean touchingRightSideCA()
    {
        return touchingRightSide1CA()||touchingRightSide2CA()||touchingRightSide3CA(); 
    }
    public boolean touchingRightSide()
    {
        return touchingRightSideB()||touchingRightSideBl()||touchingRightSideC()||touchingRightSideBr()||touchingRightSideCA(); 
    }
    
    public void setVSpeed(int speed)
    {
        vSpeed = speed;
    }
    
    public void fall()
    {
        bump();
        setLocation ( getX(), getY() + vSpeed);
        vSpeed = vSpeed + acceleration;
        if ( atBottom() )
            gameEnd();
    }
    
    private boolean atBottom()
    {
        return getY() >= getWorld().getHeight() - 2;
    }
    
    public void gameEnd()
    {
        Scene scene=(Scene)getWorld();
        scene.lives--;
        scene.reset();
        scene.level1();
    }

    public void bump()
    {
        if (onTop())
        {
            if(!hasHit)
            {
                vSpeed=-vSpeed;
            }
            hasHit=true;
        }
        if(onGround())
        {
            hasHit=false;
        }
    }
}
import greenfoot.*;

/**
 * A little penguin that wants to get to the other side.
 */
public class Pengu extends Mover
{
    private static final int jumpStrength = 23;
    private int timer=0;
    private int delay=0;
    private static final int gunReload=5;
    
    public void act() 
    {
        Scene scene=(Scene)getWorld();
        if(!scene.pause)
        {
        
            delay++;
            shoot();
            shooting();
            
            coins();
            checkKeys();       
            checkFall();
        }
    }
    
    private void checkKeys()
    {
        Scene scene=(Scene)getWorld();
        if (Greenfoot.isKeyDown("left") )
        {
            scene.direction=false;
            if(!scene.shooting)
            {
                setImage("pengu-left2.png");
            }
            else if(scene.shooting=true)
            {
                setImage("pengu-left2Shooting.png");
            } 
            if(!touchingLeftSide())
            moveLeft();
        }
        changeMove();
        if (Greenfoot.isKeyDown("right")&&scene.move==false)
        {
            scene.direction=true;
            if(!scene.shooting)
            {
                setImage("pengu-right2.png");
            }
            else if(scene.shooting=true)
            {
                setImage("pengu-right2Shooting.png");
            }
            if(!touchingRightSide())
               moveRight();
        }
        if (Greenfoot.isKeyDown("space") )
        {
            if (onGround())
                jump();
        }
    }    
    
    private void jump()
    {
        setVSpeed(-jumpStrength);
        fall();
    }
    
    private void checkFall()
    {
        if (onGround()) {
            setVSpeed(0);
            Actor under = getOneObjectAtOffset(0, getImage().getHeight()/2 , null);
            if(under!=null)
            {
                int h=under.getImage().getHeight()/2+getImage().getHeight()/2-5;
                int y=under.getY();
                 setLocation(getX(),y-h);
            }
        }
        else {
            fall();
        }
        
    }
    private void coins()
    {
        Scene scene=(Scene)getWorld();
        Coin coin=(Coin)getOneIntersectingObject(Coin.class);
        if(coin!=null)
        {
            scene.removeObject(coin);
            scene.score=scene.score+100;
            scene.coins=scene.coins+1;
        }
    }
    private void changeMove()
    {
        Scene scene=(Scene)getWorld();
        if(getX()>=342&&scene.onCloud==false)
        {
            scene.move=true;
        }
        else if(getX()<342||touchingRightSide())
        {
            scene.move=false;
        }
        if(scene.door==true)
        {
            scene.move=false;
        }
    }
    private void shoot()
    {
        Scene scene=(Scene)getWorld();
        if(Greenfoot.isKeyDown("Enter")&&delay>=gunReload&&scene.shooting==true)
        {
            if(scene.direction==false)
            {
                scene.addObject(new Bullet(-7),getX()-26,getY());
            }
            if(scene.direction==true)
            {
                scene.addObject(new Bullet(7),getX()+26,getY());
            }
            delay=0;
        }
    }
    private void shooting()
    {
        Scene scene=(Scene)getWorld();
        if(isTouching(Shooting.class))
        {
            scene.shooting=true;
            removeTouching(Shooting.class);
        }
        if(scene.shooting)
        {
            if(scene.direction==false)
            {
                setImage("pengu-left2Shooting.png");
            }
            if(scene.direction==true)
            {
                setImage("pengu-right2Shooting.png");
            }
        }
        else if(!scene.shooting)
        {
            if(scene.direction==false)
            {
                setImage("pengu-left2.png");
            }
            if(scene.direction==true)
            {
                setImage("pengu-right2.png");
            }
        }
    }
}
y do I get a nullPointerException wen I jump
danpost danpost

2016/11/6

#
Nosson1459 wrote...
y do I get a nullPointerException wen I jump
It would help if you copy/paste here the entire error trace you are getting.
Nosson1459 Nosson1459

2016/11/6

#
java.lang.NullPointerException
	at Mover.onGround2B(Mover.java:54)
	at Mover.onGroundB(Mover.java:63)
	at Mover.onGround(Mover.java:200)
	at Pengu.checkFall(Pengu.java:76)
	at Pengu.act(Pengu.java:25)
	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)
danpost danpost

2016/11/6

#
Lines 54 and 59 of the Mover class should use the AND conditional conjunction, '&&', not the OR one, '||'.
Nosson1459 Nosson1459

2016/11/6

#
thnx
You need to login to post a reply.