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

2016/11/1

detection

Nosson1459 Nosson1459

2016/11/1

#
i hav 2 actors none of which do i hav any collision detection 4 and wen i pile them on top of each other there is collision detection 4 some reason
danpost danpost

2016/11/1

#
Nosson1459 wrote...
i hav 2 actors none of which do i hav any collision detection 4 and wen i pile them on top of each other there is collision detection 4 some reason
There has got to be a reason. No explanation can be given without codes of all actors involved.
Nosson1459 Nosson1459

2016/11/2

#
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 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()
    {
        showText(""+addObjects,467,250);
        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);
    }
    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,315);
        for(int i=332;i<493;i+=40)
        {
            addObject(new Box(1),i,240);
        }
        addObject ( new cliffC(), 750, 405);
        addObject(new SnakeD(),750,299);
    }
    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 Door(),934,250);
            addObject(new DoorPost(),934,250);
            addObjects=0;
            objectNumber++;
        }
        if(addObjects==0&&objectNumber==11)
        {
            addObject(new Brick(),934,408);
            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.*;

/**
 * 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()
    {
        Object under = getOneObjectAtOffset(0, -getImage().getHeight()/2 , Boxes.class);
        return under != null;
    }
    
    private boolean onGround1B()
    {
        Object under = getOneObjectAtOffset(0, getImage().getHeight()/2 , Boxes.class);
        return under != null;
    }
    private boolean onGround2B()
    {
        Object under = getOneObjectAtOffset(getImage().getWidth()/2-10, getImage().getHeight()/2 , Boxes.class);
        return under != null;
    }
    private boolean onGround3B()
    {
        Object under = getOneObjectAtOffset(-getImage().getWidth()/2+10, getImage().getHeight()/2 , Boxes.class);
        return under != null;
    }
    private boolean onGroundB()
    {
        return onGround1B()||onGround2B()||onGround3B();
    }
    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 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 touchingLeftSide1C()||touchingLeftSide2C()||touchingLeftSide3C();
    }
    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 = 20;
    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();
            changeMove();
            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();
        }
        if(touchingRightSide())
        {
            scene.move=false;
        }
        else if(getX()>=342)
        {
            scene.move=true;
        }
        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(!isTouching(Door.class)||!isTouching(DoorPost.class))
            {
            
            if(!touchingRightSide())
               moveRight();
            }
        }
        if (Greenfoot.isKeyDown("space") )
        {
            if (onGround())
                jump();
        }
    }    
    
    private void jump()
    {
        setVSpeed(-jumpStrength);
        fall();
    }
    
    private void checkFall()
    {
        if (onGround()) {
            setVSpeed(0);
        }
        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)
        {
            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");
            }
        }
    }
}
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Door here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Door extends Actor
{
    /**
     * Act - do whatever the Door 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());
            }
        }
    }
    private void remove()
    {
        Scene scene=(Scene)getWorld();
        if(getX()<=8)
        {
            scene.removeObject(this);
        }
    }   
}
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class DoorPost here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class DoorPost extends Actor
{
    /**
     * Act - do whatever the DoorPost 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());
            }
        }
    }
    private void remove()
    {
        Scene scene=(Scene)getWorld();
        if(getX()<=8)
        {
            scene.removeObject(this);
        }
    }    
}
danpost danpost

2016/11/2

#
Nosson1459 wrote...
i hav 2 actors none of which do i hav any collision detection 4 and wen i pile them on top of each other there is collision detection 4 some reason
I counted six occurrences of the string 'touching' in the Pengu class. Two, in particular, were specifically checking for Door and DoorPost instances.
Nosson1459 Nosson1459

2016/11/3

#
so y aren't they detected separately??
Nosson1459 Nosson1459

2016/11/3

#
and btw those were
if(!touching(Door.class))
not
danpost danpost

2016/11/3

#
Nosson1459 wrote...
and btw those were
if(!touching(Door.class))
not
Still collision detection -- none the less. You were saying to allow a move to the right if not touching Door object or DoorPost object. That is the same as "don't allow a move to the right if touching both". Actually, I think you should probably use the AND conjuction, '&&', not the OR conjunction, '||', there at line 65 of the Pengu class (if not touching one AND not touching the other). At any rate, my point is that it does not matter that you used NOT, '!'; it is still collision checking.
You need to login to post a reply.