Space Invader Game
<< Gridworld Dice Games | FinalProjectsTrailIndex | Slider Puzzle >>
Player.java
import java.awt.Color; import info.gridworld.actor.Actor; import info.gridworld.grid.Grid; import info.gridworld.grid.Location; public class Player extends Actor { public Player() { this.setColor(Color.red); } public void act(){ //do nothing } public void move(String d){ if (d.equals("LEFT") ){ Location newLoc=getLocation().getAdjacentLocation(Location.WEST); Grid gr = getGrid(); if(gr!=null && gr.isValid(newLoc)){ moveTo(newLoc); } } if (d.equals("RIGHT") ){ Location newLoc=getLocation().getAdjacentLocation(Location.EAST); Grid gr = getGrid(); if(gr!=null && gr.isValid(newLoc)){ moveTo(newLoc); } } } }
Ship.java
import java.awt.Color; import info.gridworld.actor.Actor; import info.gridworld.grid.BoundedGrid; import info.gridworld.grid.Grid; import info.gridworld.grid.Location; public class Ship extends Actor { private int dir; private double probability; public Ship(double p) { setColor(Color.CYAN); dir=Location.EAST; probability=p; } public void act(){ Location newLoc=getLocation().getAdjacentLocation(dir); Grid<Actor> gr = getGrid(); if(gr.isValid(newLoc)){ moveTo(newLoc); }else{ if(dir==Location.EAST) dir=Location.WEST; else dir=Location.EAST; newLoc=getLocation().getAdjacentLocation(dir); if(gr.isValid(newLoc)) moveTo(newLoc); } if (Math.random()< probability) dropBomb(gr, newLoc); } public void dropBomb(Grid gr, Location loc){ Location bombLoc =loc.getAdjacentLocation(Location.SOUTH); Bomb bomb=new Bomb(); bomb.putSelfInGrid(gr, bombLoc); } }
Bomb.java
import java.awt.Color; import info.gridworld.actor.Actor; import info.gridworld.grid.Grid; import info.gridworld.grid.Location; public class Bomb extends Actor { public Bomb(){ setColor(Color.BLUE); } public void act(){ Grid gr=getGrid(); Location newLoc=getLocation().getAdjacentLocation(Location.SOUTH ); if(gr.isValid(newLoc)) moveTo(newLoc); } }
InvaderGame.java
import java.util.ArrayList; import info.gridworld.actor.Actor; import info.gridworld.actor.ActorWorld; import info.gridworld.grid.*; public class InvaderGame extends ActorWorld { private Grid gr; private Player player; private Ship ship; public InvaderGame(){ gr=new BoundedGrid(15,15); this.setGrid(gr); System.setProperty("info.gridworld.gui.selection", "hide"); System.setProperty("info.gridworld.gui.frametitle", "Invader Game"); System.setProperty("info.gridworld.gui.tooltips", "hide"); setMessage("Use arrows to move, Run to start game"); player = new Player(); ship = new Ship(.4); add(new Location(14,2),player); add(new Location(0,0),ship); } public boolean locationClicked(Location loc){ return false; } public boolean keyPressed(String description, Location loc){ player.move(description); return false; } public void step(){ Location playerLoc=player.getLocation(); if (playerLoc !=null) { boolean alive=true; ArrayList<Location> places=(ArrayList<Location>)gr.getOccupiedLocations(); for (int i=0; i<places.size();i++){ Actor a=(Actor) gr.get(places.get(i)); if (a instanceof Bomb){ a.act(); if (playerLoc.equals(a.getLocation())) alive=false; if (playerLoc.getRow()==a.getLocation().getRow()) a.removeSelfFromGrid(); } } ship.act(); if (!alive){ setMessage("You got hit"); } } } public static void main(String[] args) { InvaderGame game=new InvaderGame(); game.show(); } }