import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Lawn here. * * @author (your name) * @version (a version number or a date) */ public class Lawn extends World { private int PeaTimer; private int zombTimer; private Location [][] grid; /** * Constructor for objects of class Lawn. * */ public Lawn() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(1050, 600, 1); grid = new Location[5][9]; for(int r = 0; r < grid.length; r++) { for(int c = 0; c < grid[r].length; c++) { grid[r][c] = new Location(215 + (c*80), 130 + (r*97)); } } Menu menu = new Menu(); addObject(menu, getWidth()/2, 38); menuLoad(); lawnmower(); zombTimer=300; PeaTimer=0; } public void act() { if(!(StartScreen.checkChange())) { Greenfoot.setWorld(new StartScreen()); } zombSpawn(); if(Greenfoot.mousePressed(this)) { build(Greenfoot.getMouseInfo().getX(), Greenfoot.getMouseInfo().getY()); } PeaTimer++; } public void build(int x, int y) { String key = getKey(); for(int r=0; r < grid.length; r++) { for(int c = 0; c <grid[r].length; c++) { if( x + 40 >= grid[r][c].getX() && x - 40 <= grid[r][c].getX()) { if(y + 48 >= grid[r][c].getY() && y - 48 <= grid[r][c].getY()) { if(checkEmpty(grid[r][c].getX(), grid[r][c].getY()) && key != null) { spawn(grid[r][c].getX(), grid[r][c].getY(), key); } } } } } } public String getKey() { if(Greenfoot.isKeyDown("P")) { return "P"; } else if(Greenfoot.isKeyDown("S")) { return "S"; } else if(Greenfoot.isKeyDown("W")) { return "W"; } else if(Greenfoot.isKeyDown("M")) { return "M"; } else if(Greenfoot.isKeyDown("T")) { return "T"; } else { return null; } } public void spawn(int x, int y, String str) { if(str.equals("P")) //&& SunScoreboard.getSun() >= PeaShooter.COST) { addObject(new PeaShooter(), x, y); SunScoreboard.changeSun((PeaShooter.COST)*-1); } else if(str.equals("S")) //&& SunScoreboard.getSun() >= Sunflower.COST) { addObject(new Sunflower(), x, y); SunScoreboard.changeSun((Sunflower.COST)*-1); } else if(str.equals("W")) { addObject(new Wallnut(), x, y); SunScoreboard.changeSun((Wallnut.COST)*-1); } else if(str.equals("M")) { addObject(new PotatoMine(), x, y); SunScoreboard.changeSun((PotatoMine.COST)*-1); } else if(str.equals("T")) { addObject(new Threepeater(), x, y); SunScoreboard.changeSun((Threepeater.COST)*-1); } else; //addObject(new PeaShooter(), x, y); } public boolean checkEmpty(int x, int y) { if(getObjectsAt(x, y, Plant.class).size() > 0) { return false; } else { return true; } } public void zombSpawn() { int zomb = (int)(Math.random()*4); if(zombTimer == 0) { if(zomb == 0) { addObject(new RegZombie(), getWidth() , 130 + ((int)(Math.random()*5)*97)); } else if(zomb == 1) { addObject(new BucketZombie(), getWidth(), 130 + ((int)(Math.random()*5)*97)); } else if(zomb == 2) { addObject(new NewsZombie(), getWidth(), 130 + ((int)(Math.random()*5)*97)); } else if(zomb == 3) { addObject(new ScreenZombie(), getWidth(), 130 + ((int)(Math.random()*5)*97)); } zombTimer=300; } else { zombTimer--; } } public void menuLoad() { BuySunFlower buySun = new BuySunFlower(); addObject(buySun, 313, 38); BuyPeaShooter buyPea = new BuyPeaShooter(); addObject(buyPea, 407, 38); BuyWallnut buyWall = new BuyWallnut(); addObject(buyWall, 360, 38); } public static void gameOver() { Greenfoot.setWorld(new GameOver()); } public void lawnmower() { for(int i = 0; i < grid.length; i++) { addObject(new Lawnmower(), 125, grid[i][0].getY()); } } }

