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();
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(!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;
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.door==false)
{
scene.move=true;
}
else if(getX()<342)
{
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");
}
}
}
}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()
{
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 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 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)
{
pengu();
nextLevel();
move();
remove();
}
}
private void move()
{
Scene scene=(Scene)getWorld();
if(Greenfoot.isKeyDown("Right")&&scene.move==true)
setLocation(getX()-7,getY());
if(getX()<=750)
{
scene.door=true;
}
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);
}
}
private void nextLevel()
{
Scene scene=(Scene)getWorld();
if(pengu())
{
scene.level++;
Greenfoot.stop();
}
}
private boolean pengu()
{
Actor pengu=getOneObjectAtOffset(30,0,Pengu.class);
return pengu!=null;
}
}
