Shooter Game By Josh And Chris
<< Card Game by Chris | OldProjectsTrailIndex | Alexander's Final Project >>
GhostRush
Bullet.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class Bullet implements ActionListener
{
//variables
private int y, x;
private Timer timer;
//constructor
public Bullet()
{
y = 240;
x = 133;
timer = new Timer(10,this);
timer.start();
}
//getters
public void setY(int loc)
{
if(loc==0) y=240;
if(loc==1) y=340;
if(loc==2) y=440;
if(loc==3) y=540;
}
public Rectangle getRect()
{
Rectangle r = new Rectangle(x,y,14,15);
return r;
}
//setters
public int getX() {return x;}
public void stopIt() {timer.stop();}
//draw
public void draw(Graphics g)
{
g.setColor(Color.YELLOW);
g.fillRect(x,y,15,15);
}
//event
public void actionPerformed(ActionEvent arg0) {x+=15;}
}
Enemy.java
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class Enemy implements ActionListener
{
//variables
private Image img;
private Timer timer;
private int rate, x, y;
//constructor
public Enemy(Image pic, int r)
{
img = pic;
rate = r;
int loc =(int) (Math.random()*4);
if(loc==0) y=200;
if(loc==1) y=300;
if(loc==2) y=400;
if(loc==3) y=500;
x = 800;
timer = new Timer(60/rate,this);
timer.start();
}
//getters
public int getX() {return x;}
public Rectangle getRect()
{
Rectangle r = new Rectangle(x,y,100,100);
return r;
}
//setters
public void stopIt()
{
timer.stop();
}
//draw
public void draw(Graphics g)
{
g.drawImage(img,x,y,100,100, null);
}
//event
public void actionPerformed(ActionEvent arg0)
{
x-= 3*(rate);
}
}
Grid.java
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
public class Grid
{
//variables
int lives;
//constructor
public Grid()
{
lives = 5;
}
//draw
public void draw(Graphics g)
{
g.setColor(Color.GRAY);
g.fillRect(0,0,900,600);
g.setColor(Color.WHITE);
g.fillRect(0,200,900,400);
g.setColor(Color.WHITE);
g.setFont(new Font("Helvetica", Font.BOLD, 100));
g.drawString("Ghost", 20, 80);
g.drawString("Rush", 45, 170);
g.setColor(new Color(16,90,240));
g.fillRect(550, 40, 250, 80);
g.fillRect(525, 60, 25, 40);
g.fillRect(800, 60, 25, 40);
g.setColor(new Color(255,106,0));
int xtra = 8;
for(int l = 0; l < lives; l++)
{
g.fillRect(550 + xtra, 50, 43, 60);
xtra += 48;
}
}
//getters
public int getLives()
{
return lives;
}
//setters
public void hurt()
{
lives--;
}
}
Player.java
import java.awt.Graphics;
import java.awt.Image;
public class Player
{
//variables
private boolean attack;
private Image stand,shoot;
private int y,loc;
//constructor
public Player(Image stand, Image shoot)
{
this.stand = stand;
this.shoot = shoot;
attack = false;
y = 10;
loc = 0;
}
//getters
public boolean isAttack() {return attack;}
public int getLoc() {return loc;}
//setters
public void fire() {attack=true;}
public void ceaseFire() {attack=false;}
public void up() {if(loc > 0) loc--;}
public void down() {if(loc < 3) loc++;}
//draw
public void draw(Graphics g)
{
Image img;
int width = 0;
if(attack)
{
img = shoot;
width = 400/3;
}
else
{
img = stand;
width = 100;
}
if(loc==0) y=200;
if(loc==1) y=300;
if(loc==2) y=400;
if(loc==3)y=500;
g.drawImage(img,10,y,width,100,null);
}
}
Runner.java
import java.applet.Applet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import javax.swing.Timer;
public class Runner extends Applet implements KeyListener, ActionListener
{
//variables
private static final long serialVersionUID = 1L;
private static final int WIDTH = 900;
private static final int HEIGHT = 600;
private Player mega;
private Image imageBuffer , shoot, stand, boo;
private Graphics gBuffer;
private Grid grid;
private ArrayList<Bullet> bullets;
private int rate, count, score,timeRate;
private Timer timer;
private ArrayList<Enemy> enemies;
private boolean start,over;
//basically the constructor
public void init()
{
resize(WIDTH,HEIGHT);
this.addKeyListener(this);
shoot = loadImageFromJar("shoot.jpg");
stand = loadImageFromJar("stand.jpg");
boo = loadImageFromJar("newBoo.png");
mega = new Player(stand,shoot);
imageBuffer = createImage(WIDTH,HEIGHT);
gBuffer = imageBuffer.getGraphics();
grid = new Grid();
bullets = new ArrayList<Bullet>();
enemies = new ArrayList<Enemy>();
rate = 1;
count = 0;
score = 0;
start = false;
over = false;
timeRate = 500;
timer = new Timer(timeRate, this);
timer.start();
}
//draw
public void paint(Graphics g)
{
if(grid.getLives() < 1)
{
gBuffer.setColor(Color.BLACK);
gBuffer.fillRect(0, 0, 900, 600);
gBuffer.setColor(Color.WHITE);
gBuffer.setFont(new Font("Helvetica", Font.BOLD, 60));
gBuffer.drawString("Score "+score, 330, 250);
gBuffer.drawString("Enter to Play Again", 150, 350);
g.drawImage(imageBuffer,0,0,this);
over = true;
}
if(!start)
{
gBuffer.setColor(Color.BLACK);
gBuffer.fillRect(0, 0, 900, 600);
gBuffer.setColor(Color.WHITE);
gBuffer.setFont(new Font("Helvetica", Font.BOLD, 40));
gBuffer.drawString("Press Space To Play", 250, 300);
g.drawImage(imageBuffer,0,0,this);
}
if(start && !over && grid.getLives() > 0)
{
grid.draw(gBuffer);
gBuffer.setColor(Color.WHITE);
gBuffer.setFont(new Font("Helvetica", Font.BOLD, 40));
gBuffer.drawString("Score: "+score, 550, 175);
mega.draw(gBuffer);
for(Bullet b: bullets)
{
if(b.getX() > 1000) b.stopIt();
else b.draw(gBuffer);
}
try
{
for(Enemy e: enemies)
{
for(Bullet c : bullets)
{
if(e.getRect().intersects(c.getRect()))
{
e.stopIt();
c.stopIt();
enemies.remove(e);
bullets.remove(c);
score++;
}
}
if(e.getX() < 70)
{
e.stopIt();
enemies.remove(e);
grid.hurt();
}
else e.draw(gBuffer);
}
g.drawImage(imageBuffer,0,0,this);
repaint();
}
catch (ConcurrentModificationException e)
{
repaint();
}
}
}
public void update(Graphics g)
{
paint(g);
}
//exception catcher
public Image loadImageFromJar(String fileName)
{
Image img = null;
try
{
img = getImage(getClass().getResource("/"+fileName));
}
catch (NullPointerException e)
{
//e.printStackTrace
}
return img;
}
//keys
public void keyPressed(KeyEvent e)
{
if(start && !over && e.getKeyCode()==KeyEvent.VK_SPACE)
{
mega.fire();
Bullet b = new Bullet();
b.setY(mega.getLoc());
bullets.add(b);
}
if(!start && e.getKeyCode()==KeyEvent.VK_SPACE)
{
start = true;
}
if(over && e.getKeyCode()==KeyEvent.VK_ENTER)
{
grid = new Grid();
bullets = new ArrayList<Bullet>();
enemies = new ArrayList<Enemy>();
rate = 1;
count = 0;
score = 0;
over = false;
timeRate = 500;
timer.start();
}
if(start && !over && e.getKeyCode()==KeyEvent.VK_UP)
{
mega.up();
}
if(start && !over && e.getKeyCode()==KeyEvent.VK_DOWN)
{
mega.down();
}
repaint();
}
public void keyReleased(KeyEvent e)
{
if(start && !over && e.getKeyCode()==KeyEvent.VK_SPACE)
{
mega.ceaseFire();
}
repaint();
}
public void keyTyped(KeyEvent e) {}
//event
public void actionPerformed(ActionEvent e)
{
if(start && !over)
{
if(count > 10)
{
count = 0;
rate++;
timeRate /= 20;
}
Enemy b = new Enemy(boo, rate);
enemies.add(b);
count++;
}
}
}
