import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Brick here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Brick extends World
{
SimpleTimer time = new SimpleTimer();
Counter con = new Counter();
private int spawnTimer;
/**
* Constructor for objects of class Brick.
*
*/
public Brick() //call for act method
{
super(600, 400, 1); // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
addObject(new AttackZombie(),100,100); // Add Zombie at 100, 100
addObject(new AttackZombie(),300,300);
addObject(new AttackZombie(),400,400);
addObject(new AttackZombie(),200,300);
addObject(new Player(),200,200); // Add Player at 200,200
addObject(con, 50,50); // Add Counter and Timer at 50,50
time.mark();
}
public void act() //call for act method
{
con.setValue(time.millisElapsed() / 1000); // add 1 second/ 1000 millisecond to timer
if(time.millisElapsed() >= 90000){
Greenfoot.setWorld( new Win());
}
}
private void checkForSpawning() // call from act method
{
spawnTimer = (spawnTimer+1)%600; // repeat every 10 seconds (about)
if (spawnTimer == 0) // at each timer reset
{
addObject(new AttackZombie(), 100, 100);
addObject(new AttackZombie(), 200, 200);
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Laser here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Lazer extends Actor
{
/**
* this code checks if the laser is touching the alien
*/
public void checkHit(){
if(isTouching(AttackZombie.class)){
getWorld().removeObject((getOneIntersectingObject(AttackZombie.class)));
}
}
public void addedToWorld(Brick world){
setRotation(getWorld().getObjects(Player.class).get(0).checkRotation());
}
public void act()
/**
* this code runs all of the laser methods
*/
{
move(5);
MyWorld mw = (MyWorld)getWorld();
if(isAtEdge()){
getWorld().removeObject(this);
} else if(isTouching(AttackZombie.class)){
getWorld().removeObject(getOneIntersectingObject(AttackZombie.class));
((MyWorld) getWorld()).newAttackZombie();
((MyWorld)getWorld()).getCounter().addScore();
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class AttackZombie here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class AttackZombie extends Actor
{
int rightSideOfScreen;
int bottomOfScreen;
public void addedToWorld(World Brick)
{
rightSideOfScreen = Brick.getWidth() - 1;
bottomOfScreen = Brick.getHeight() - 1;
}
public void act()
{
move(2);
if(Greenfoot.getRandomNumber(20)==1)
{
setRotation(Greenfoot.getRandomNumber (360));
}
int x = getX();
int y = getY();
if(x<=0 || y<=0 || x >= rightSideOfScreen || y >=bottomOfScreen)
{
turn(180);
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
/**
* Write a description of class Player here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Player extends Actor
{
SimpleTimer Timer = new SimpleTimer();
/**
* Act - do whatever the Player wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
checkkeys();
if (isTouching(AttackZombie.class)) {
getWorld().removeObject(this);
//Greenfoot.setWorld(new EndScreen());
}
if(Timer.millisElapsed() > 500 && Greenfoot.isKeyDown("space"))
{
Timer.mark();
((Brick)getWorld()).addObject(new Laser(), this.getX(), this.getY() );
}
}
public void checkkeys()
{
if ( Greenfoot.isKeyDown("w"))
{
move(3);
}
if ( Greenfoot.isKeyDown("a"))
{
turn(-3);
}
if ( Greenfoot.isKeyDown("s"))
{
move(-3);
}
if ( Greenfoot.isKeyDown("d"))
{
turn(3);
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* A Counter class that allows you to display a numerical value on screen.
*
* The Counter is an actor, so you will need to create it, and then add it to
* the world in Greenfoot. If you keep a reference to the Counter then you
* can adjust its value. Here's an example of a world class that
* displays a counter with the number of act cycles that have occurred:
*
* <pre>
* class CountingWorld
* {
* private Counter actCounter;
*
* public CountingWorld()
* {
* super(600, 400, 1);
* actCounter = new Counter("Act Cycles: ");
* addObject(actCounter, 100, 100);
* }
*
* public void act()
* {
* actCounter.setValue(actCounter.getValue() + 1);
* }
* }
* </pre>
*
* @author Neil Brown and Michael Kölling
* @version 1.0
*/
public class Counter1 extends Actor
{
private static final Color transparent = new Color(0,0,0,0);
private GreenfootImage background;
private int value;
private int target;
private String prefix;
public Counter1()
{
this(new String());
}
/**
* Create a new counter, initialised to 0.
*/
public Counter1(String prefix)
{
background = getImage(); // get image from class
value = 0;
target = 0;
this.prefix = prefix;
updateImage();
}
/**
* Animate the display to count up (or down) to the current target value.
*/
public void act()
{
if (value < target) {
value++;
updateImage();
}
else if (value > target) {
value--;
updateImage();
}
}
/**
* Add a new score to the current counter value. This will animate
* the counter over consecutive frames until it reaches the new value.
*/
public void add(int score)
{
target += score;
}
/**
* Return the current counter value.
*/
public int getValue()
{
return target;
}
/**
* Set a new counter value. This will not animate the counter.
*/
public void setValue(int newValue)
{
target = newValue;
value = newValue;
updateImage();
}
/**
* Sets a text prefix that should be displayed before
* the counter value (e.g. "Score: ").
*/
public void setPrefix(String prefix)
{
this.prefix = prefix;
updateImage();
}
/**
* Update the image on screen to show the current value.
*/
private void updateImage()
{
GreenfootImage image = new GreenfootImage(background);
GreenfootImage text = new GreenfootImage(prefix + value, 22, Color.BLACK, transparent);
if (text.getWidth() > image.getWidth() - 20)
{
image.scale(text.getWidth() + 20, image.getHeight());
}
image.drawImage(text, (image.getWidth()-text.getWidth())/2,
(image.getHeight()-text.getHeight())/2);
setImage(image);
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* A Counter class that allows you to display a numerical value on screen.
*
* The Counter is an actor, so you will need to create it, and then add it to
* the world in Greenfoot. If you keep a reference to the Counter then you
* can adjust its value. Here's an example of a world class that
* displays a counter with the number of act cycles that have occurred:
*
* <pre>
* class CountingWorld
* {
* private Counter actCounter;
*
* public CountingWorld()
* {
* super(600, 400, 1);
* actCounter = new Counter("Act Cycles: ");
* addObject(actCounter, 100, 100);
* }
*
* public void act()
* {
* actCounter.setValue(actCounter.getValue() + 1);
* }
* }
* </pre>
*
* @author Neil Brown and Michael Kölling
* @version 1.0
*/
public class Counter extends Actor
{
private static final Color transparent = new Color(0,0,0,0);
private GreenfootImage background;
private int value;
private int target;
private String prefix;
public Counter()
{
this(new String());
}
/**
* Create a new counter, initialised to 0.
*/
public Counter(String prefix)
{
background = getImage(); // get image from class
value = 0;
target = 0;
this.prefix = prefix;
updateImage();
}
/**
* Animate the display to count up (or down) to the current target value.
*/
public void act()
{
if (value < target) {
value++;
updateImage();
}
else if (value > target) {
value--;
updateImage();
}
}
/**
* Add a new score to the current counter value. This will animate
* the counter over consecutive frames until it reaches the new value.
*/
public void add(int score)
{
target += score;
}
/**
* Return the current counter value.
*/
public int getValue()
{
return target;
}
/**
* Set a new counter value. This will not animate the counter.
*/
public void setValue(int newValue)
{
target = newValue;
value = newValue;
updateImage();
}
/**
* Sets a text prefix that should be displayed before
* the counter value (e.g. "Score: ").
*/
public void setPrefix(String prefix)
{
this.prefix = prefix;
updateImage();
}
/**
* Update the image on screen to show the current value.
*/
private void updateImage()
{
GreenfootImage image = new GreenfootImage(background);
GreenfootImage text = new GreenfootImage(prefix + value, 22, Color.BLACK, transparent);
if (text.getWidth() > image.getWidth() - 20)
{
image.scale(text.getWidth() + 20, image.getHeight());
}
image.drawImage(text, (image.getWidth()-text.getWidth())/2,
(image.getHeight()-text.getHeight())/2);
setImage(image);
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class TimeChecker here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class TimeChecker extends Actor
{
long initialTime;
public TimeChecker() {
initialTime = System.currentTimeMillis();
}
public void act() {
if(System.currentTimeMillis() > initialTime + 200000)
{
Greenfoot.setWorld(new Win());
}
}
}

