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;
}
}
}
}