Alexis Final Project
<< Alexander's Final Project | OldProjectsTrailIndex | Cameron's Final Project >>
Click here for a working demonstration
Files







Bullet.java
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.Timer;
public class Bullet {
private int x;
private int y;
boolean left;
private BufferedImage img;
// see http://download.oracle.com/javase/tutorial/2d/images/loadimage.html
public Bullet(String graphicFileName, int x, int y){
this.x=x;
this.y=y;
left=false;
this.img = null;
try {
img = ImageIO.read(new File(graphicFileName));
} catch (IOException e) {
}
}
public int getX() {return x;}
public int getY() {return y;}
/**
* if x changes, we might need to switch the direction our monster is facing
* @param x
*/
public void setX(int x){
left=true;
if (x>this.x){
left=false;
}
this.x=x;
}
public void setY(int y){ this.y=y;}
// see http://download.oracle.com/javase/tutorial/2d/images/drawimage.html
/**
* this is a basic way of drawing the whole img, as it is
*/
public void draw(Graphics g){
g.drawImage(img, x, y, null);
}
public void actionPerformed(ActionEvent e) {
}
}
Plane.java
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Plane {
private int x;
private int y;
boolean left;
private int lives;
private BufferedImage img;
// see http://download.oracle.com/javase/tutorial/2d/images/loadimage.html
public Plane(String graphicFileName, int x, int y){
this.x=x;
this.y=y;
lives=3;
left=false;
this.img = null;
try {
img = ImageIO.read(new File(graphicFileName));
} catch (IOException e) {
}
}
public int getX() {return x;}
public int getY() {return y;}
/**
* if x changes, we might need to switch the direction our monster is facing
* @param x
*/
public void setX(int x){
left=true;
if (x>this.x){
left=false;
}
this.x=x;
}
public void setY(int y){ this.y=y;}
// see http://download.oracle.com/javase/tutorial/2d/images/drawimage.html
/**
* this is a basic way of drawing the whole img, as it is
*/
public void draw(Graphics g){
g.drawImage(img, x, y, null);
}
}
RedBird.java
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.util.Random;
public class RedBird {
private int x;
private int y;
boolean left;
private BufferedImage img;
// see http://download.oracle.com/javase/tutorial/2d/images/loadimage.html
public RedBird(String graphicFileName){
x=0;
Random generator = new Random();
y= generator.nextInt(540);
left=false;
this.img = null;
try {
img = ImageIO.read(new File(graphicFileName));
} catch (IOException e) {
}
}
public int getX() {return x;}
public int getY() {return y;}
/**
* if x changes, we might need to switch the direction our monster is facing
* @param x
*/
public void setX(int x){
left=true;
if (x>this.x){
left=false;
}
this.x=x;
}
public void setY(int y){ this.y=y;}
// see http://download.oracle.com/javase/tutorial/2d/images/drawimage.html
/**
* this is a basic way of drawing the whole img, as it is
*/
public void draw(Graphics g){
g.drawImage(img, x, y, null);
}
public void dead(){
this.x= -90;
this.y= -60;
}
}
driller.java
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.util.Random;
public class Driller {
private int x;
private int y;
boolean left;
private BufferedImage img;
// see http://download.oracle.com/javase/tutorial/2d/images/loadimage.html
public Driller(String graphicFileName){
x=0;
Random generator = new Random();
y= generator.nextInt(540);
left=false;
this.img = null;
try {
img = ImageIO.read(new File(graphicFileName));
} catch (IOException e) {
}
}
public int getX() {return x;}
public int getY() {return y;}
/**
* if x changes, we might need to switch the direction our monster is facing
* @param x
*/
public void setX(int x){
left=true;
if (x>this.x){
left=false;
}
this.x=x;
}
public void setY(int y){ this.y=y;}
// see http://download.oracle.com/javase/tutorial/2d/images/drawimage.html
/**
* this is a basic way of drawing the whole img, as it is
*/
public void draw(Graphics g){
g.drawImage(img, x, y, null);
}
public void dead(){
this.x= -90;
this.y= -60;
}
}
Background.java
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Background {
private int x;
private int y;
private BufferedImage img;
public Background(String graphicFileName, int x, int y){
this.x=x;
this.y=y;
this.img = null;
try {
img = ImageIO.read(new File(graphicFileName));
} catch (IOException e) {
}
}
public void draw(Graphics g){
g.drawImage(img, x, y, null);
}
}
Sound.java
import java.net.URL;
import java.applet.*;
public class Sound {
private String fileName;
private AudioClip player;
public Sound(String file){
fileName=file;
player=null;
}
public void play() {
try {
URL soundToPlay = getClass().getResource(fileName);
player = Applet.newAudioClip(soundToPlay);
player.play();
} catch (Exception e) {}
}
public void loop() {
try {
URL soundToPlay = getClass().getResource(fileName);
player = Applet.newAudioClip(soundToPlay);
player.loop();
} catch (Exception e) {}
}
}
PlaneFrenzy.java
import java.applet.Applet;
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.Random;
import javax.swing.Timer;
import sun.audio.*;
/**
* Demonstrates an 3D Object like a cube
* and makes a "First-person" point-of view
* using the arrow keys to move up and down, left and right
* size of applet should be 800 x 600
*/
@SuppressWarnings("serial")
public class PlaneFrenzy extends Applet implements KeyListener, ActionListener
{
public static final int amount=5; //amount of change each arrow will change
private Plane plane;
private RedBird redB;
private Driller driller;
private Bullet bullet;
private Background bg;
private Timer score;
private Timer bulletMovement;
private Timer RBMovement;
private Timer RBSpawner;
private Timer DMovement;
private Timer DSpawner;
private Image virtualMem;
private Graphics gBuffer;
private Random RBSChance;
private Random DChance;
private Sound bgm;
private int appH;
private int appW;
private int userScore;
private int kills;
private int RBSRate;
private int DRate;
private boolean DKilled;
public void init(){
kills = 0;
RBSRate = 500;
DRate = 500;
DKilled = false;
plane = new Plane("userplane.gif", 650, 300);
bg = new Background("background.jpg", 0, 0);
score = new Timer(1000, this);
bulletMovement = new Timer(1, this);
RBMovement = new Timer(6, this);
RBSpawner = new Timer(RBSRate, this);
DMovement = new Timer(5, this);
DSpawner = new Timer(DRate, this);
bgm = new Sound("bgm.wav");
bgm.loop();
RBSpawner.start();
score.start();
RBSChance = new Random();
DChance = new Random();
appH = getHeight();
appW = getWidth();
virtualMem = createImage(appW, appH);
gBuffer = virtualMem.getGraphics();
this.addKeyListener(this);
}
public void paint(Graphics g){
virtualMem = createImage(appW, appH);
gBuffer = virtualMem.getGraphics();
bg.draw(gBuffer);
if(bulletMovement.isRunning()){
bullet.draw(gBuffer);
}
if(RBMovement.isRunning()){
redB.draw(gBuffer);
}
if(DMovement.isRunning()){
driller.draw(gBuffer);
}
plane.draw(gBuffer);
gBuffer.drawString("YOU HAVE SURVIVED FOR "+userScore+" SECONDS AND HAVE KILLED "+kills+" ENEMIES", 20, 580);
gBuffer.drawString(Integer.toString(RBSRate), 20, 20);
g.drawImage(virtualMem,0,0,this);
}
public void update(Graphics g)
{
paint(g); //get rid of flicker with this method
}
@Override
// shift==16 spacebar==32
public void keyPressed(KeyEvent e) {
int keyCode=e.getKeyCode();
if(keyCode==38){ //up
plane.setY(plane.getY()-amount);
plane = new Plane("userplane_up.gif", plane.getX(), plane.getY());
} else if (keyCode==40){ //down
plane.setY(plane.getY()+amount);
plane = new Plane("userplane_down.gif", plane.getX(), plane.getY());
} else if (keyCode==37){ //left
plane.setX(plane.getX()-amount);
plane = new Plane("userplane.gif", plane.getX(), plane.getY());
} else if (keyCode==39){ //right
plane.setX(plane.getX()+amount*2);
plane = new Plane("userplane.gif", plane.getX(), plane.getY());
} else if (keyCode==65){ //left up
plane.setX(plane.getX()-amount);
plane.setY(plane.getY()-amount);
plane = new Plane("userplane_up.gif", plane.getX(), plane.getY());
} else if (keyCode==68){ //right up
plane.setX(plane.getX()-amount);
plane.setY(plane.getY()+amount);
plane = new Plane("userplane_down.gif", plane.getX(), plane.getY());
} else if (keyCode==32){ //fire
bullet = new Bullet("bullet.gif", plane.getX(), plane.getY()+7);
bulletMovement.start();
} else if (keyCode==75){ //kills cheat
kills++;
} else if (keyCode==83){ //seconds cheat
userScore+= 100;
}
repaint();
}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {}
/**
* Timer Section
*/
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(DKilled == false){
if(kills >= 10){
DSpawner.start();
DKilled = true;
}
}
if(source == score) userScore++;
//BULLET MOVEMENT
else if(source == bulletMovement){
bullet.setX(bullet.getX()-5);
if(RBMovement.isRunning()){
if(bullet.getX()>redB.getX()-2 && bullet.getX()<redB.getX()+45 && bullet.getY()>redB.getY()-10 && bullet.getY()<redB.getY()+30){
bulletMovement.stop();
RBMovement.stop();
redB.dead();
kills += 1;
RBSRate -= 2;
RBSpawner = new Timer(RBSRate, this);
RBSpawner.start();
}
}
if(DMovement.isRunning()){
if(bullet.getX()>driller.getX()-2 && bullet.getX()<driller.getX()+45 && bullet.getY()>driller.getY()-10 && bullet.getY()<driller.getY()+30){
bulletMovement.stop();
DMovement.stop();
driller.dead();
kills += 1;
//if statement for next enemy add here
DRate -= 2;
DSpawner = new Timer(RBSRate, this);
DSpawner.start();
}
}
}
//END OF BULLET
else if(source == RBMovement){
if(redB.getX() == 800){
redB.dead();
RBMovement.stop();
RBSRate -= 4;
RBSpawner = new Timer(RBSRate, this);
RBSpawner.start();
}
else redB.setX(redB.getX()+1);
}
else if(source == RBSpawner){
int i = RBSChance.nextInt(4);
if(i == 1){
redB = new RedBird("redb.gif");
RBMovement.start();
RBSpawner.stop();
}
}
else if(source == DSpawner){
int d = DChance.nextInt(4);
if(d==1){
driller = new Driller("driller.gif");
DMovement.start();
DSpawner.stop();
}
}
else if(source == DMovement){
if(driller.getX() > 799){
driller.dead();
DMovement.stop();
DRate -= 4;
DSpawner = new Timer(DRate, this);
DSpawner.start();
}
if(driller.getX()>300)driller.setX(driller.getX()+8);
else driller.setX(driller.getX()+1);
}
repaint();
}
}

