Compare commits
10 Commits
253bb9a302
...
e7c4f9937c
| Author | SHA1 | Date | |
|---|---|---|---|
| e7c4f9937c | |||
| 801be01be1 | |||
| e835d3c795 | |||
| d53c84839d | |||
| 390e962462 | |||
| cc3800bdfe | |||
| 365d465271 | |||
| fee5a5bbf9 | |||
| a8c959700b | |||
| db4cb9e5f1 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Asteroids/bin/
|
||||||
33
Asteroids.jnlp
Executable file
33
Asteroids.jnlp
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
<!--
|
||||||
|
Copyright 2012 Richard Barrette
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License
|
||||||
|
-->
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<jnlp spec="1.0+" codebase="" href="">
|
||||||
|
<information>
|
||||||
|
<title>Asteroids</title>
|
||||||
|
<vendor>Richard Barrette</vendor>
|
||||||
|
</information>
|
||||||
|
<resources>
|
||||||
|
<j2se version="1.6+" ref="http://java.sun.com/products/autodl/j2se" />
|
||||||
|
<jar href="Asteroids.jar" main="true" />
|
||||||
|
</resources>
|
||||||
|
<applet-desc
|
||||||
|
name="Asteroids"
|
||||||
|
main-class="com.RickBarrette.asteroids.GameApplet"
|
||||||
|
width="1000"
|
||||||
|
height="800">
|
||||||
|
</applet-desc>
|
||||||
|
<update check="background"/>
|
||||||
|
</jnlp>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.7
|
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
org.eclipse.jdt.core.compiler.source=1.7
|
org.eclipse.jdt.core.compiler.source=1.6
|
||||||
|
|||||||
@@ -26,14 +26,14 @@ import java.awt.Graphics;
|
|||||||
* This class will be used to make astroids, to destroy the ship!
|
* This class will be used to make astroids, to destroy the ship!
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public class Asteroid extends MovingSpaceObject implements Collider, Drawable {
|
public class Asteroid extends MovingSpaceObject implements Collider {
|
||||||
|
|
||||||
private final int mNumberSplit;
|
private final int mNumberSplit;
|
||||||
private final int mHitsLeft;
|
private final int mHitsLeft;
|
||||||
private final int mRadius;
|
private final int mRadius;
|
||||||
private final double mMinVelocity;
|
private final double mMinVelocity;
|
||||||
private final double mMaxVelocity;
|
private final double mMaxVelocity;
|
||||||
private AsteroidGame mGame;
|
private final AsteroidGameThread mGame;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Asteroid
|
* Creates a new Asteroid
|
||||||
@@ -45,7 +45,7 @@ public class Asteroid extends MovingSpaceObject implements Collider, Drawable {
|
|||||||
* @param hitsLeft number of hits left
|
* @param hitsLeft number of hits left
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public Asteroid(double x, double y, double minVelocity, double maxVelocity, int radius, int numberSplit, int hitsLeft, AsteroidGame game) {
|
public Asteroid(double x, double y, double minVelocity, double maxVelocity, int radius, int numberSplit, int hitsLeft, AsteroidGameThread game) {
|
||||||
mGame = game;
|
mGame = game;
|
||||||
mColor = new Color(66,33,0);
|
mColor = new Color(66,33,0);
|
||||||
mX = x;
|
mX = x;
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ import java.util.Random;
|
|||||||
* This class maintain's the game logic. It is the main driver
|
* This class maintain's the game logic. It is the main driver
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public class AsteroidGame extends Thread {
|
public class AsteroidGameThread extends Thread {
|
||||||
|
|
||||||
private static final int DELAY_IN_MSEC = 50;
|
private static final int DELAY_IN_MSEC = 50;
|
||||||
private final ArrayList<Object> mWorld;
|
private final ArrayList<Object> mWorld;
|
||||||
private final GameFrame mGameFrame;
|
private final GameApplet mGameApplet;
|
||||||
public boolean isStarted = false;
|
public boolean isStarted = false;
|
||||||
private long mLastTime;
|
private long mLastTime;
|
||||||
|
|
||||||
@@ -38,8 +38,8 @@ public class AsteroidGame extends Thread {
|
|||||||
* Creates an new Asteroids game
|
* Creates an new Asteroids game
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public AsteroidGame() {
|
public AsteroidGameThread(GameApplet gameFrame) {
|
||||||
mGameFrame = new GameFrame(this);
|
mGameApplet = gameFrame;
|
||||||
mWorld = new ArrayList<Object>();
|
mWorld = new ArrayList<Object>();
|
||||||
//TODO simulate game play unitll game ist started
|
//TODO simulate game play unitll game ist started
|
||||||
this.start();
|
this.start();
|
||||||
@@ -50,7 +50,7 @@ public class AsteroidGame extends Thread {
|
|||||||
* @param add
|
* @param add
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public synchronized void addElement(Object o) {
|
public synchronized void addElement(final Object o) {
|
||||||
mWorld.add(o);
|
mWorld.add(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,22 +73,30 @@ public class AsteroidGame extends Thread {
|
|||||||
|
|
||||||
if(s != null){
|
if(s != null){
|
||||||
s.allStop();
|
s.allStop();
|
||||||
hyperJump(s);
|
s.hyperJump();
|
||||||
}
|
}
|
||||||
|
|
||||||
mGameFrame.getStatusBar().decrementShipCount();
|
mGameApplet.getStatusBar().decrementShipCount();
|
||||||
|
|
||||||
if(mGameFrame.getStatusBar().getShipCount() > 0){
|
if(mGameApplet.getStatusBar().getShipCount() > 0){
|
||||||
pauseGame();
|
pauseGame();
|
||||||
mGameFrame.setDisplayText("You died, You can hyper jump to a safe place now... Press start when ready.");
|
mGameApplet.setDisplayText("You died, You can hyper jump to a safe place now... Press start when ready.");
|
||||||
} else {
|
} else {
|
||||||
mGameFrame.setDisplayText("Game Over");
|
mGameApplet.setDisplayText("Game Over");
|
||||||
if(s != null)
|
if(s != null)
|
||||||
mWorld.remove(s);
|
mWorld.remove(s);
|
||||||
}
|
}
|
||||||
mGameFrame.repaint();
|
mGameApplet.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the game's frame
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public GameApplet getGameFrame() {
|
||||||
|
return this.mGameApplet;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the world
|
* @return the world
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
@@ -96,26 +104,7 @@ public class AsteroidGame extends Thread {
|
|||||||
public ArrayList<Object> getWorld() {
|
public ArrayList<Object> getWorld() {
|
||||||
return mWorld;
|
return mWorld;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Hyperjumps the sip
|
|
||||||
* @param ship
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public void hyperJump(Ship ship) {
|
|
||||||
// boolean isSafe = true;
|
|
||||||
Random gen = new Random();
|
|
||||||
// do{
|
|
||||||
System.out.println("hyper jumping");
|
|
||||||
ship.setLocation(gen.nextInt(mGameFrame.getDisplayWidth()), gen.nextInt(mGameFrame.getDispalyHeight()));
|
|
||||||
// for(int i = 0; i < mWorld.size(); i++)
|
|
||||||
// if(mWorld.get(i) instanceof Collider)
|
|
||||||
// if(((Collider) mWorld.get(i)).checkForCollision(ship))
|
|
||||||
// isSafe = false;
|
|
||||||
// } while (!isSafe);
|
|
||||||
mGameFrame.repaintDispaly();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* populates the world for a new game
|
* populates the world for a new game
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
@@ -125,10 +114,10 @@ public class AsteroidGame extends Thread {
|
|||||||
/*
|
/*
|
||||||
* added a asteroid per level
|
* added a asteroid per level
|
||||||
*/
|
*/
|
||||||
for(int i = 0; i < mGameFrame.getStatusBar().getLevel(); i ++)
|
for(int i = 0; i < mGameApplet.getStatusBar().getLevel(); i ++)
|
||||||
addElement(new Asteroid(gen.nextInt(mGameFrame.getDisplayWidth()), gen.nextInt(mGameFrame.getDispalyHeight()), 1, 10, 50, 3, 3, this));
|
addElement(new Asteroid(gen.nextInt(mGameApplet.getDisplayWidth()), gen.nextInt(mGameApplet.getDispalyHeight()), 1, 10, 50, 3, 3, this));
|
||||||
|
|
||||||
notification("Level "+ mGameFrame.getStatusBar().getLevel());
|
notification("Level "+ mGameApplet.getStatusBar().getLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -146,22 +135,23 @@ public class AsteroidGame extends Thread {
|
|||||||
public void newGame() {
|
public void newGame() {
|
||||||
Random gen = new Random();
|
Random gen = new Random();
|
||||||
mWorld.clear();
|
mWorld.clear();
|
||||||
mGameFrame.setDisplayText(null);
|
mGameApplet.setDisplayText(null);
|
||||||
|
|
||||||
mGameFrame.getStatusBar().setShipCount(3);
|
mGameApplet.getStatusBar().setShipCount(3);
|
||||||
mGameFrame.getStatusBar().setScore(0);
|
mGameApplet.getStatusBar().setScore(0);
|
||||||
mGameFrame.getStatusBar().setAsteroidCount(1);
|
mGameApplet.getStatusBar().setAsteroidCount(1);
|
||||||
mGameFrame.getStatusBar().setTime(0);
|
mGameApplet.getStatusBar().setTime(0);
|
||||||
mGameFrame.getStatusBar().setShotCount(0);
|
mGameApplet.getStatusBar().setShotCount(0);
|
||||||
mGameFrame.getStatusBar().setLevel(1);
|
mGameApplet.getStatusBar().setLevel(1);
|
||||||
|
|
||||||
mWorld.add(new Ship(gen.nextInt(mGameFrame.getDisplayWidth()), gen.nextInt(mGameFrame.getDispalyHeight()),0,.35,.98,.2,1));
|
mWorld.add(new Ship(gen.nextInt(mGameApplet.getDisplayWidth()), gen.nextInt(mGameApplet.getDispalyHeight()), 0, .35, .98, .2, 1, this));
|
||||||
|
|
||||||
initLevel();
|
initLevel();
|
||||||
|
|
||||||
startGame();
|
startGame();
|
||||||
|
|
||||||
notification("Level "+ mGameFrame.getStatusBar().getLevel());
|
notification("Level "+ mGameApplet.getStatusBar().getLevel());
|
||||||
|
mGameApplet.repaintDispaly();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -170,7 +160,7 @@ public class AsteroidGame extends Thread {
|
|||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
private void notification(final String string) {
|
private void notification(final String string) {
|
||||||
mGameFrame.setDisplayText(string);
|
mGameApplet.setDisplayText(string);
|
||||||
|
|
||||||
new Thread(new Runnable(){
|
new Thread(new Runnable(){
|
||||||
@Override
|
@Override
|
||||||
@@ -181,7 +171,7 @@ public class AsteroidGame extends Thread {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
if(isStarted)
|
if(isStarted)
|
||||||
mGameFrame.setDisplayText(null);
|
mGameApplet.setDisplayText(null);
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
@@ -192,7 +182,7 @@ public class AsteroidGame extends Thread {
|
|||||||
*/
|
*/
|
||||||
public synchronized void pauseGame(){
|
public synchronized void pauseGame(){
|
||||||
isStarted = false;
|
isStarted = false;
|
||||||
mGameFrame.setDisplayText("Paused");
|
mGameApplet.setDisplayText("Paused");
|
||||||
setMovingSpaceObjectsEnabled(false);
|
setMovingSpaceObjectsEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,9 +191,9 @@ public class AsteroidGame extends Thread {
|
|||||||
* @param o object to be removed
|
* @param o object to be removed
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public synchronized void removeElement(Object o) {
|
public synchronized void removeElement(final Object o) {
|
||||||
if(o instanceof Asteroid) {
|
if(o instanceof Asteroid) {
|
||||||
mGameFrame.getStatusBar().incrementScore(2);
|
mGameApplet.getStatusBar().incrementScore(2);
|
||||||
}
|
}
|
||||||
mWorld.remove(o);
|
mWorld.remove(o);
|
||||||
}
|
}
|
||||||
@@ -223,17 +213,23 @@ public class AsteroidGame extends Thread {
|
|||||||
while (true){
|
while (true){
|
||||||
if(isStarted) {
|
if(isStarted) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* brute force focus,
|
||||||
|
* this seems to be the only fix I can find, for now
|
||||||
|
*/
|
||||||
|
mGameApplet.requestFocus();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* increment time
|
* increment time
|
||||||
*/
|
*/
|
||||||
mGameFrame.getStatusBar().incrementTime(System.currentTimeMillis() - mLastTime);
|
mGameApplet.getStatusBar().incrementTime(System.currentTimeMillis() - mLastTime);
|
||||||
mLastTime = System.currentTimeMillis();
|
mLastTime = System.currentTimeMillis();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* update the display and stats
|
* update the display and stats
|
||||||
*/
|
*/
|
||||||
mGameFrame.repaintDispaly();
|
mGameApplet.repaintDispaly();
|
||||||
mGameFrame.getStatusBar().updateStatus();
|
mGameApplet.getStatusBar().updateStatus();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check for collsions
|
* check for collsions
|
||||||
@@ -260,16 +256,16 @@ public class AsteroidGame extends Thread {
|
|||||||
* if there are no more asteroids, then increment the level
|
* if there are no more asteroids, then increment the level
|
||||||
*/
|
*/
|
||||||
if(asteroidCount == 0){
|
if(asteroidCount == 0){
|
||||||
mGameFrame.getStatusBar().incrementLevel();
|
mGameApplet.getStatusBar().incrementLevel();
|
||||||
initLevel();
|
initLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 1up every 200 points
|
* 1up every 200 points
|
||||||
*/
|
*/
|
||||||
if(mGameFrame.getStatusBar().getScore() > 0 && mGameFrame.getStatusBar().getScore() % 200 == 0){
|
if(mGameApplet.getStatusBar().getScore() > 0 && mGameApplet.getStatusBar().getScore() % 200 == 0){
|
||||||
if(!hasOneUped){
|
if(!hasOneUped){
|
||||||
mGameFrame.getStatusBar().incrementShipCount();
|
mGameApplet.getStatusBar().incrementShipCount();
|
||||||
hasOneUped = true;
|
hasOneUped = true;
|
||||||
|
|
||||||
notification("1up!");
|
notification("1up!");
|
||||||
@@ -280,8 +276,8 @@ public class AsteroidGame extends Thread {
|
|||||||
/*
|
/*
|
||||||
* update the status bar with the new counts
|
* update the status bar with the new counts
|
||||||
*/
|
*/
|
||||||
mGameFrame.getStatusBar().setShotCount(shotCount);
|
mGameApplet.getStatusBar().setShotCount(shotCount);
|
||||||
mGameFrame.getStatusBar().setAsteroidCount(asteroidCount);
|
mGameApplet.getStatusBar().setAsteroidCount(asteroidCount);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* reset counters
|
* reset counters
|
||||||
@@ -299,18 +295,18 @@ public class AsteroidGame extends Thread {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the enabled state of Moving Space Objects
|
* Sets the enabled state of Moving Space Objects
|
||||||
* @param b
|
* @param b
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public void setMovingSpaceObjectsEnabled(boolean b) {
|
public void setMovingSpaceObjectsEnabled(final boolean b) {
|
||||||
for(Object item : mWorld)
|
for(Object item : mWorld)
|
||||||
if(item instanceof MovingSpaceObject)
|
if(item instanceof MovingSpaceObject)
|
||||||
((MovingSpaceObject) item).setActive(b);
|
((MovingSpaceObject) item).setActive(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the number of objects in the world
|
* @return the number of objects in the world
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
@@ -325,7 +321,7 @@ public class AsteroidGame extends Thread {
|
|||||||
*/
|
*/
|
||||||
public synchronized void startGame(){
|
public synchronized void startGame(){
|
||||||
mLastTime = System.currentTimeMillis();
|
mLastTime = System.currentTimeMillis();
|
||||||
mGameFrame.setDisplayText(null);
|
mGameApplet.setDisplayText(null);
|
||||||
setMovingSpaceObjectsEnabled(true);
|
setMovingSpaceObjectsEnabled(true);
|
||||||
isStarted = true;
|
isStarted = true;
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,6 @@ package com.RickBarrette.asteroids;
|
|||||||
*/
|
*/
|
||||||
public interface Collider {
|
public interface Collider {
|
||||||
|
|
||||||
public boolean checkForCollision(Object o);
|
public boolean checkForCollision(final Object o);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
java * Display.java
|
* Display.java
|
||||||
* @date Mar 31, 2012
|
* @date Mar 31, 2012
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*
|
*
|
||||||
@@ -35,10 +35,9 @@ import javax.swing.JPanel;
|
|||||||
public class Display extends JPanel {
|
public class Display extends JPanel {
|
||||||
|
|
||||||
private static final long serialVersionUID = -9105117186423881937L;
|
private static final long serialVersionUID = -9105117186423881937L;
|
||||||
private AsteroidGame mGame;
|
private final AsteroidGameThread mGame;
|
||||||
private Container mContainer;
|
private final Font mFont;
|
||||||
private String mText;
|
private String mText;
|
||||||
private Font mFont;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Dispay
|
* Creates a new Dispay
|
||||||
@@ -46,11 +45,10 @@ public class Display extends JPanel {
|
|||||||
* @param g
|
* @param g
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public Display(Container c, AsteroidGame g) {
|
public Display(final Container c, final AsteroidGameThread g) {
|
||||||
mGame = g;
|
mGame = g;
|
||||||
mContainer = c;
|
|
||||||
this.setBackground(new Color(0, 0, 0));
|
this.setBackground(new Color(0, 0, 0));
|
||||||
mContainer.add(this, BorderLayout.CENTER);
|
c.add(this, BorderLayout.CENTER);
|
||||||
int screenRes = Toolkit.getDefaultToolkit().getScreenResolution();
|
int screenRes = Toolkit.getDefaultToolkit().getScreenResolution();
|
||||||
int fontSize = (int)Math.round(14.0 * screenRes / 72.0);
|
int fontSize = (int)Math.round(14.0 * screenRes / 72.0);
|
||||||
mFont = new Font("Arial", Font.PLAIN, fontSize);
|
mFont = new Font("Arial", Font.PLAIN, fontSize);
|
||||||
@@ -61,9 +59,8 @@ public class Display extends JPanel {
|
|||||||
* @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
|
* @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void paintComponent(Graphics g) {
|
public void paintComponent(final Graphics g) {
|
||||||
super.paintComponent(g);
|
super.paintComponent(g);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Move & Draw the world's objects
|
* Move & Draw the world's objects
|
||||||
@@ -93,7 +90,12 @@ public class Display extends JPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayText(String string) {
|
/**
|
||||||
|
* Sets the text to be displayed in the center of the game's display
|
||||||
|
* @param string
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public void setDisplayText(final String string) {
|
||||||
mText = string;
|
mText = string;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,6 +27,6 @@ import java.awt.Graphics;
|
|||||||
*/
|
*/
|
||||||
public interface Drawable {
|
public interface Drawable {
|
||||||
|
|
||||||
public void draw(Graphics g);
|
public void draw(final Graphics g);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import java.awt.event.ActionListener;
|
|||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.KeyListener;
|
import java.awt.event.KeyListener;
|
||||||
|
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JApplet;
|
||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
import javax.swing.JMenuBar;
|
import javax.swing.JMenuBar;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
@@ -36,101 +36,43 @@ import javax.swing.JMenuItem;
|
|||||||
* It will be used to display all the game's information to the user and handle key events from the user
|
* It will be used to display all the game's information to the user and handle key events from the user
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
public class GameApplet extends JApplet implements ActionListener, KeyListener {
|
||||||
|
|
||||||
private static final long serialVersionUID = -2051298505681885632L;
|
private static final long serialVersionUID = -2051298505681885632L;
|
||||||
|
|
||||||
private Status mStatusBar;
|
private Status mStatusBar;
|
||||||
private Display mDisplay;
|
private Display mDisplay;
|
||||||
private AsteroidGame mGame;
|
private AsteroidGameThread mGameThread;
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new GameFrame
|
|
||||||
* @param g
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public GameFrame(AsteroidGame g) {
|
|
||||||
super("ASTEROIDS");
|
|
||||||
mGame = g;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* set up the game's menus
|
|
||||||
*/
|
|
||||||
JMenuBar menuBar = new JMenuBar();
|
|
||||||
setJMenuBar(menuBar);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* file menu
|
|
||||||
*/
|
|
||||||
JMenu fileMenu = new JMenu("File");
|
|
||||||
JMenuItem menuNewGame = new JMenuItem("New Game");
|
|
||||||
JMenuItem menuStartGame = new JMenuItem("Start");
|
|
||||||
JMenuItem menuPauseGame = new JMenuItem("Pause");
|
|
||||||
JMenuItem menuQuit = new JMenuItem("Quit");
|
|
||||||
|
|
||||||
fileMenu.add(menuNewGame);
|
|
||||||
fileMenu.addSeparator();
|
|
||||||
fileMenu.add(menuStartGame);
|
|
||||||
fileMenu.add(menuPauseGame);
|
|
||||||
fileMenu.addSeparator();
|
|
||||||
fileMenu.add(menuQuit);
|
|
||||||
menuNewGame.addActionListener(this);
|
|
||||||
menuQuit.addActionListener(this);
|
|
||||||
menuStartGame.addActionListener(this);
|
|
||||||
menuPauseGame.addActionListener(this);
|
|
||||||
|
|
||||||
menuBar.add(fileMenu);
|
|
||||||
|
|
||||||
FlowLayout layout = new FlowLayout();
|
|
||||||
layout.setAlignment(FlowLayout.LEFT);
|
|
||||||
|
|
||||||
Container container = getContentPane();
|
|
||||||
mStatusBar = new Status(container, mGame);
|
|
||||||
mDisplay = new Display(container, mGame);
|
|
||||||
|
|
||||||
addKeyListener(this);
|
|
||||||
|
|
||||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
||||||
|
|
||||||
// sets up window's location and sets size****
|
|
||||||
setSize(1000, 800);
|
|
||||||
setVisible(true);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a menu item is selected from the benu bar
|
* Called when a menu item is selected from the benu bar
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
|
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
|
||||||
*/
|
*/
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(final ActionEvent e) {
|
||||||
if (e.getActionCommand().equals("New Game")) {
|
if (e.getActionCommand().equals("New Game")) {
|
||||||
mGame.newGame();
|
mGameThread.newGame();
|
||||||
mDisplay.repaint();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.getActionCommand().equals("Start")) {
|
if (e.getActionCommand().equals("Start")) {
|
||||||
mGame.startGame();
|
mGameThread.startGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.getActionCommand().equals("Pause")) {
|
if (e.getActionCommand().equals("Pause")) {
|
||||||
mGame.pauseGame();
|
mGameThread.pauseGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.getActionCommand().equals("Quit"))
|
|
||||||
System.exit(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Drives the user's ship
|
* Drives the user's ship
|
||||||
* @param e
|
* @param e
|
||||||
* @param isKeyPressed
|
* @param isKeyPressed
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
private void driveShip(KeyEvent e, boolean isKeyPressed) {
|
private void driveShip(final KeyEvent e, final boolean isKeyPressed) {
|
||||||
Ship ship = null;
|
Ship ship = null;
|
||||||
//get the user's ship
|
//get the user's ship
|
||||||
for (Object item : mGame.getWorld()) {
|
for (Object item : mGameThread.getWorld()) {
|
||||||
if (item instanceof Ship) {
|
if (item instanceof Ship) {
|
||||||
ship = (Ship) item;
|
ship = (Ship) item;
|
||||||
}
|
}
|
||||||
@@ -180,7 +122,7 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
|||||||
*/
|
*/
|
||||||
case KeyEvent.VK_H:
|
case KeyEvent.VK_H:
|
||||||
if(isKeyPressed){
|
if(isKeyPressed){
|
||||||
mGame.hyperJump(ship);
|
ship.hyperJump();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -189,7 +131,7 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
|||||||
*/
|
*/
|
||||||
case KeyEvent.VK_SPACE:
|
case KeyEvent.VK_SPACE:
|
||||||
if(isKeyPressed)
|
if(isKeyPressed)
|
||||||
mGame.addElement(new Shot(ship.getX(), ship.getY(), ship.getAngle(), ship.getXVelocity(), ship.getYVelocity(), mGame));
|
ship.shoot();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -217,13 +159,69 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
|||||||
return mStatusBar;
|
return mStatusBar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (non-Javadoc)
|
||||||
|
* @see java.applet.Applet#init()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
mGameThread = new AsteroidGameThread(this);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* set up the game's menus
|
||||||
|
*/
|
||||||
|
JMenuBar menuBar = new JMenuBar();
|
||||||
|
setJMenuBar(menuBar);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* file menu
|
||||||
|
*/
|
||||||
|
JMenu fileMenu = new JMenu("File");
|
||||||
|
JMenuItem menuNewGame = new JMenuItem("New Game");
|
||||||
|
JMenuItem menuStartGame = new JMenuItem("Start");
|
||||||
|
JMenuItem menuPauseGame = new JMenuItem("Pause");
|
||||||
|
|
||||||
|
fileMenu.add(menuNewGame);
|
||||||
|
fileMenu.addSeparator();
|
||||||
|
fileMenu.add(menuStartGame);
|
||||||
|
fileMenu.add(menuPauseGame);
|
||||||
|
fileMenu.addSeparator();
|
||||||
|
menuNewGame.addActionListener(this);
|
||||||
|
menuStartGame.addActionListener(this);
|
||||||
|
menuPauseGame.addActionListener(this);
|
||||||
|
|
||||||
|
menuBar.add(fileMenu);
|
||||||
|
|
||||||
|
FlowLayout layout = new FlowLayout();
|
||||||
|
layout.setAlignment(FlowLayout.LEFT);
|
||||||
|
|
||||||
|
Container container = getContentPane();
|
||||||
|
mStatusBar = new Status(container, mGameThread);
|
||||||
|
mDisplay = new Display(container, mGameThread);
|
||||||
|
|
||||||
|
this.addKeyListener(this);
|
||||||
|
this.setFocusable(true);
|
||||||
|
this.setFocusCycleRoot(true);
|
||||||
|
this.requestFocusInWindow();
|
||||||
|
|
||||||
|
setSize(1000, 800);
|
||||||
|
setVisible(true);
|
||||||
|
|
||||||
|
repaint();
|
||||||
|
|
||||||
|
mGameThread.newGame();
|
||||||
|
|
||||||
|
this.setFocusable(true);
|
||||||
|
this.requestFocus();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a key is pressed
|
* Called when a key is pressed
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
|
* @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void keyPressed(KeyEvent e) {
|
public void keyPressed(final KeyEvent e) {
|
||||||
|
|
||||||
switch(e.getKeyCode()){
|
switch(e.getKeyCode()){
|
||||||
/*
|
/*
|
||||||
@@ -231,10 +229,10 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
|||||||
* Start of pause the game
|
* Start of pause the game
|
||||||
*/
|
*/
|
||||||
case KeyEvent.VK_ENTER:
|
case KeyEvent.VK_ENTER:
|
||||||
if(mGame.isStarted)
|
if(mGameThread.isStarted)
|
||||||
mGame.pauseGame();
|
mGameThread.pauseGame();
|
||||||
else
|
else
|
||||||
mGame.startGame();
|
mGameThread.startGame();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,12 +245,26 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
|||||||
* @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
|
* @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void keyReleased(KeyEvent e) {
|
public void keyReleased(final KeyEvent e) {
|
||||||
driveShip(e, false);
|
driveShip(e, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void keyTyped(KeyEvent e) {
|
public void keyTyped(final KeyEvent e) {
|
||||||
|
switch(e.getKeyCode()){
|
||||||
|
/*
|
||||||
|
* [Enter]
|
||||||
|
* Start of pause the game
|
||||||
|
*/
|
||||||
|
case KeyEvent.VK_ENTER:
|
||||||
|
if(mGameThread.isStarted)
|
||||||
|
mGameThread.pauseGame();
|
||||||
|
else
|
||||||
|
mGameThread.startGame();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
driveShip(e, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -278,7 +290,7 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
|||||||
* @param string to be displayed
|
* @param string to be displayed
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public void setDisplayText(String string) {
|
public void setDisplayText(final String string) {
|
||||||
mDisplay.setDisplayText(string);
|
mDisplay.setDisplayText(string);
|
||||||
this.repaint();
|
this.repaint();
|
||||||
}
|
}
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
/**
|
|
||||||
* Main.java
|
|
||||||
* @date Mar 31, 2012
|
|
||||||
* @author ricky barrette
|
|
||||||
*
|
|
||||||
* Copyright 2012 Richard Barrette
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License
|
|
||||||
*/
|
|
||||||
package com.RickBarrette.asteroids;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the main class of my asteroids game.
|
|
||||||
* This application is based from "A Guide to Programming Asteroids As a Java Applet" by Brandon Carroll.
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public class Main {
|
|
||||||
|
|
||||||
public static final boolean DEBUG = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new Main
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public Main() {
|
|
||||||
AsteroidGame game = new AsteroidGame();
|
|
||||||
game.newGame();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param args
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public static void main(String[] args) {
|
|
||||||
new Main();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -25,11 +25,11 @@ package com.RickBarrette.asteroids;
|
|||||||
*/
|
*/
|
||||||
public interface Moveable {
|
public interface Moveable {
|
||||||
|
|
||||||
public void move(int scrnWidth, int scrnHeight);
|
public void move(final int scrnWidth, final int scrnHeight);
|
||||||
|
|
||||||
public void setAccelerating(boolean accelerating);
|
public void setAccelerating(final boolean accelerating);
|
||||||
|
|
||||||
public void setTurningLeft(boolean turningLeft);
|
public void setTurningLeft(final boolean turningLeft);
|
||||||
|
|
||||||
public void setTurningRight(boolean turningRight);
|
public void setTurningRight(final boolean turningRight);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ package com.RickBarrette.asteroids;
|
|||||||
* This class will track the information required for moving objects.
|
* This class will track the information required for moving objects.
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public class MovingSpaceObject extends SpaceObject implements Moveable{
|
public abstract class MovingSpaceObject extends SpaceObject implements Moveable{
|
||||||
|
|
||||||
protected double mAngle;
|
protected double mAngle;
|
||||||
protected double mVelocityDecay = 1;
|
protected double mVelocityDecay = 1;
|
||||||
@@ -45,6 +45,30 @@ public class MovingSpaceObject extends SpaceObject implements Moveable{
|
|||||||
isAccelerating = false;
|
isAccelerating = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the moving space object's angle
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public double getAngle() {
|
||||||
|
return mAngle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the moving space object's x volocity
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public double getXVelocity() {
|
||||||
|
return this.mXVelocity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the moving space object's y velocity
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public double getYVelocity() {
|
||||||
|
return this.mYVelocity;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if the space object is accelerating
|
* @return true if the space object is accelerating
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
@@ -68,7 +92,7 @@ public class MovingSpaceObject extends SpaceObject implements Moveable{
|
|||||||
public boolean isTurningLeft(){
|
public boolean isTurningLeft(){
|
||||||
return isTurningLeft;
|
return isTurningLeft;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if the space object is turning right
|
* @return true if the space object is turning right
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
@@ -83,7 +107,7 @@ public class MovingSpaceObject extends SpaceObject implements Moveable{
|
|||||||
* @see com.RickBarrette.asteroids.Moveable#move(int, int)
|
* @see com.RickBarrette.asteroids.Moveable#move(int, int)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void move(int scrnWidth, int scrnHeight) {
|
public void move(final int scrnWidth, final int scrnHeight) {
|
||||||
if(isActive){
|
if(isActive){
|
||||||
/*
|
/*
|
||||||
* this is backwards from typical polar coordinates
|
* this is backwards from typical polar coordinates
|
||||||
@@ -106,9 +130,6 @@ public class MovingSpaceObject extends SpaceObject implements Moveable{
|
|||||||
|
|
||||||
// adds accel to velocity in direction pointed
|
// adds accel to velocity in direction pointed
|
||||||
if (isAccelerating) {
|
if (isAccelerating) {
|
||||||
if(Main.DEBUG)
|
|
||||||
System.out.println("accelerating by "+mAcceleration);
|
|
||||||
|
|
||||||
// calculates components of accel and adds them to velocity
|
// calculates components of accel and adds them to velocity
|
||||||
mXVelocity += mAcceleration * Math.cos(mAngle);
|
mXVelocity += mAcceleration * Math.cos(mAngle);
|
||||||
mYVelocity += mAcceleration * Math.sin(mAngle);
|
mYVelocity += mAcceleration * Math.sin(mAngle);
|
||||||
@@ -135,16 +156,16 @@ public class MovingSpaceObject extends SpaceObject implements Moveable{
|
|||||||
* @see com.RickBarrette.asteroids.Moveable#setAccelerating(boolean)
|
* @see com.RickBarrette.asteroids.Moveable#setAccelerating(boolean)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setAccelerating(boolean accelerating) {
|
public void setAccelerating(final boolean accelerating) {
|
||||||
this.isAccelerating = accelerating; // start or stop accelerating the ship
|
this.isAccelerating = accelerating; // start or stop accelerating the ship
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets wether or not this space object is active
|
* Sets wether or not this space object is active
|
||||||
* @param active
|
* @param active
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public void setActive(boolean active) {
|
public void setActive(final boolean active) {
|
||||||
this.isActive = active; // used when the game is paused or unpaused
|
this.isActive = active; // used when the game is paused or unpaused
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +175,7 @@ public class MovingSpaceObject extends SpaceObject implements Moveable{
|
|||||||
* @see com.RickBarrette.asteroids.Moveable#setTurningLeft(boolean)
|
* @see com.RickBarrette.asteroids.Moveable#setTurningLeft(boolean)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setTurningLeft(boolean turningLeft) {
|
public void setTurningLeft(final boolean turningLeft) {
|
||||||
this.isTurningLeft = turningLeft; // start or stop turning the ship
|
this.isTurningLeft = turningLeft; // start or stop turning the ship
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,7 +185,7 @@ public class MovingSpaceObject extends SpaceObject implements Moveable{
|
|||||||
* @see com.RickBarrette.asteroids.Moveable#setTurningRight(boolean)
|
* @see com.RickBarrette.asteroids.Moveable#setTurningRight(boolean)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setTurningRight(boolean turningRight) {
|
public void setTurningRight(final boolean turningRight) {
|
||||||
this.isTurningRight = turningRight;
|
this.isTurningRight = turningRight;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,7 +194,7 @@ public class MovingSpaceObject extends SpaceObject implements Moveable{
|
|||||||
* when it goes out of the screen's bounds
|
* when it goes out of the screen's bounds
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public void wrapSpace(int scrnHeight, int scrnWidth) {
|
public void wrapSpace(final int scrnHeight, final int scrnWidth) {
|
||||||
if (mX < 0)
|
if (mX < 0)
|
||||||
mX += scrnHeight;
|
mX += scrnHeight;
|
||||||
else if (mX > scrnHeight)
|
else if (mX > scrnHeight)
|
||||||
|
|||||||
@@ -21,26 +21,24 @@ package com.RickBarrette.asteroids;
|
|||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class will be the user's ship. I will be used to destroy the asteroids, with it's laser! Pew Pew Pew!!!
|
* This class will be the user's ship. I will be used to destroy the asteroids, with it's laser! Pew Pew Pew!!!
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public class Ship extends MovingSpaceObject implements Drawable {
|
public class Ship extends MovingSpaceObject {
|
||||||
|
|
||||||
private final int[] mOrigXpoints = { 14, -10, -6, -10 };
|
private final int[] mOrigXpoints = { 14, -10, -6, -10 };
|
||||||
private final int[] mOrigYpoints = { 0, -8, 0, 8 };
|
private final int[] mOrigYpoints = { 0, -8, 0, 8 };
|
||||||
private final int[] mOrigFlameXpoints = { -6, -23, -6 };
|
private final int[] mOrigFlameXpoints = { -6, -23, -6 };
|
||||||
private final int[] mOrigFlameYpoints = { -3, 0, 3 };
|
private final int[] mOrigFlameYpoints = { -3, 0, 3 };
|
||||||
|
private final int mShotDelay;
|
||||||
/*
|
private int[] mXpoints = new int[4], mYpoints = new int[4], mFlameXpoints = new int[3], mFlameYpoints = new int[3];
|
||||||
* store the current locations of the points used to draw the ship and its
|
private int mShotDelayLeft;
|
||||||
* flame
|
private final AsteroidGameThread mGame;
|
||||||
*/
|
|
||||||
int[] mXpoints = new int[4], mYpoints = new int[4], mFlameXpoints = new int[3], mFlameYpoints = new int[3];
|
|
||||||
int shotDelay, shotDelayLeft; // used to determine the rate of firing
|
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* radius of circle used to approximate the ship
|
* radius of circle used to approximate the ship
|
||||||
*/
|
*/
|
||||||
private final int mRadius = 6;
|
private final int mRadius = 6;
|
||||||
@@ -55,9 +53,9 @@ public class Ship extends MovingSpaceObject implements Drawable {
|
|||||||
* @param rotationalSpeed of the ship
|
* @param rotationalSpeed of the ship
|
||||||
* @param shotDelay of the ship
|
* @param shotDelay of the ship
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
|
* @param game
|
||||||
*/
|
*/
|
||||||
public Ship(double x, double y, double angle, double acceleration, double velocityDecay, double rotationalSpeed, int shotDelay) {
|
public Ship(final double x, final double y, final double angle, final double acceleration, final double velocityDecay, final double rotationalSpeed, final int shotDelay, final AsteroidGameThread game) {
|
||||||
// this.x refers to the Ship's x, x refers to the x parameter
|
|
||||||
this.mX = x;
|
this.mX = x;
|
||||||
this.mY = y;
|
this.mY = y;
|
||||||
this.mAngle = angle;
|
this.mAngle = angle;
|
||||||
@@ -65,15 +63,16 @@ public class Ship extends MovingSpaceObject implements Drawable {
|
|||||||
this.mVelocityDecay = velocityDecay;
|
this.mVelocityDecay = velocityDecay;
|
||||||
this.mRotationalSpeed = rotationalSpeed;
|
this.mRotationalSpeed = rotationalSpeed;
|
||||||
this.mColor = Color.CYAN;
|
this.mColor = Color.CYAN;
|
||||||
|
mGame = game;
|
||||||
|
|
||||||
// start off paused
|
// start off paused
|
||||||
this.isActive = false;
|
this.isActive = false;
|
||||||
|
|
||||||
// # of frames between shots
|
// # of frames between shots
|
||||||
this.shotDelay = shotDelay;
|
this.mShotDelay = shotDelay;
|
||||||
|
|
||||||
// ready to shoot
|
// ready to shoot
|
||||||
this.shotDelayLeft = 0;
|
this.mShotDelayLeft = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -81,9 +80,11 @@ public class Ship extends MovingSpaceObject implements Drawable {
|
|||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public boolean canShoot() {
|
public boolean canShoot() {
|
||||||
if (shotDelayLeft > 0) // checks to see if the ship is ready to
|
/*
|
||||||
|
* check if the shot delay has been satifiyed
|
||||||
|
*/
|
||||||
|
if (mShotDelayLeft > 0)
|
||||||
return false;
|
return false;
|
||||||
// shoot again yet or if it needs to wait longer
|
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -94,46 +95,49 @@ public class Ship extends MovingSpaceObject implements Drawable {
|
|||||||
* @see com.RickBarrette.asteroids.Drawable#draw(java.awt.Graphics)
|
* @see com.RickBarrette.asteroids.Drawable#draw(java.awt.Graphics)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void draw(Graphics g) {
|
public void draw(final Graphics g) {
|
||||||
|
|
||||||
if(Main.DEBUG)
|
/*
|
||||||
System.out.println("draw()"+ mX + ", "+ mY);
|
* rotate the points, translate them to the ship's location (by
|
||||||
|
* adding x and y), then round them by adding .5 and casting them
|
||||||
|
* as integers (which truncates any decimal place)
|
||||||
|
*/
|
||||||
|
|
||||||
// rotate the points, translate them to the ship's location (by
|
/*
|
||||||
// adding x and y), then round them by adding .5 and casting them
|
* draw the ship's flame, if accelerating
|
||||||
// as integers (which truncates any decimal place)
|
*/
|
||||||
if (isAccelerating && isActive) { // draw flame if accelerating
|
if (isAccelerating && isActive) {
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
mFlameXpoints[i] = (int) (mOrigFlameXpoints[i] * Math.cos(mAngle) - mOrigFlameYpoints[i] * Math.sin(mAngle) + mX + .5);
|
mFlameXpoints[i] = (int) (mOrigFlameXpoints[i] * Math.cos(mAngle) - mOrigFlameYpoints[i] * Math.sin(mAngle) + mX + .5);
|
||||||
mFlameYpoints[i] = (int) (mOrigFlameXpoints[i] * Math.sin(mAngle) + mOrigFlameYpoints[i] * Math.cos(mAngle) + mY + .5);
|
mFlameYpoints[i] = (int) (mOrigFlameXpoints[i] * Math.sin(mAngle) + mOrigFlameYpoints[i] * Math.cos(mAngle) + mY + .5);
|
||||||
}
|
}
|
||||||
|
|
||||||
g.setColor(Color.red); // set color of flame
|
/*
|
||||||
|
* draw the flame
|
||||||
|
*/
|
||||||
|
g.setColor(Color.red);
|
||||||
g.fillPolygon(mFlameXpoints, mFlameYpoints, 3);
|
g.fillPolygon(mFlameXpoints, mFlameYpoints, 3);
|
||||||
}
|
}
|
||||||
// calculate the polygon for the ship, then draw it
|
|
||||||
|
/*
|
||||||
|
* calculate the polygon for the ship, then draw it
|
||||||
|
*/
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
this.mXpoints[i] = (int) (this.mOrigXpoints[i] * Math.cos(mAngle) - this.mOrigYpoints[i] * Math.sin(mAngle) + mX + .5);
|
this.mXpoints[i] = (int) (this.mOrigXpoints[i] * Math.cos(mAngle) - this.mOrigYpoints[i] * Math.sin(mAngle) + mX + .5);
|
||||||
this.mYpoints[i] = (int) (this.mOrigXpoints[i] * Math.sin(mAngle) + this.mOrigYpoints[i] * Math.cos(mAngle) + mY + .5);
|
this.mYpoints[i] = (int) (this.mOrigXpoints[i] * Math.sin(mAngle) + this.mOrigYpoints[i] * Math.cos(mAngle) + mY + .5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* draw the ship dark gray if the game is paused
|
||||||
|
*/
|
||||||
if (isActive)
|
if (isActive)
|
||||||
g.setColor(mColor);
|
g.setColor(mColor);
|
||||||
else
|
else
|
||||||
// draw the ship dark gray if the game is paused
|
|
||||||
g.setColor(Color.darkGray);
|
g.setColor(Color.darkGray);
|
||||||
|
|
||||||
g.fillPolygon(mXpoints, mYpoints, 4); // 4 is the number of points
|
g.fillPolygon(mXpoints, mYpoints, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the ship's current angle
|
|
||||||
* @author ricky barrette
|
|
||||||
*/
|
|
||||||
public double getAngle() {
|
|
||||||
return mAngle;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return radius of circle that approximates the ship
|
* @return radius of circle that approximates the ship
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
@@ -142,12 +146,23 @@ public class Ship extends MovingSpaceObject implements Drawable {
|
|||||||
return mRadius;
|
return mRadius;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getXVelocity() {
|
/**
|
||||||
return this.mXVelocity;
|
* Hyperjumps the sip
|
||||||
}
|
* @param ship
|
||||||
|
* @author ricky barrette
|
||||||
public double getYVelocity() {
|
*/
|
||||||
return this.mYVelocity;
|
public void hyperJump() {
|
||||||
|
// boolean isSafe = true;
|
||||||
|
Random gen = new Random();
|
||||||
|
// do{
|
||||||
|
System.out.println("hyper jumping");
|
||||||
|
setLocation(gen.nextInt(mGame.getGameFrame().getDisplayWidth()), gen.nextInt(mGame.getGameFrame().getDispalyHeight()));
|
||||||
|
// for(int i = 0; i < mWorld.size(); i++)
|
||||||
|
// if(mWorld.get(i) instanceof Collider)
|
||||||
|
// if(((Collider) mWorld.get(i)).checkForCollision(ship))
|
||||||
|
// isSafe = false;
|
||||||
|
// } while (!isSafe);
|
||||||
|
mGame.getGameFrame().repaintDispaly();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -156,14 +171,25 @@ public class Ship extends MovingSpaceObject implements Drawable {
|
|||||||
* @see com.RickBarrette.asteroids.MovingSpaceObject#move(int, int)
|
* @see com.RickBarrette.asteroids.MovingSpaceObject#move(int, int)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void move(int scrnWidth, int scrnHeight) {
|
public void move(final int scrnWidth, final int scrnHeight) {
|
||||||
/*
|
/*
|
||||||
* move() is called every frame that the game
|
* move() is called every frame that the game
|
||||||
* is run, so this ticks down the shot delay
|
* is run, so this ticks down the shot delay
|
||||||
*/
|
*/
|
||||||
if (shotDelayLeft > 0)
|
if (mShotDelayLeft > 0)
|
||||||
shotDelayLeft--;
|
mShotDelayLeft--;
|
||||||
|
|
||||||
super.move(scrnWidth, scrnHeight);
|
super.move(scrnWidth, scrnHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fires a shot from the ship
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
|
public void shoot() {
|
||||||
|
if(canShoot()) {
|
||||||
|
mGame.addElement(new Shot(mX, mY, mAngle, mXVelocity, mYVelocity, mGame));
|
||||||
|
mShotDelayLeft += mShotDelay;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -26,19 +26,19 @@ import java.awt.Graphics;
|
|||||||
* This class will bt the shots fired bt the ship. Their job is to destroy the asteroids
|
* This class will bt the shots fired bt the ship. Their job is to destroy the asteroids
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public class Shot extends MovingSpaceObject implements Drawable {
|
public class Shot extends MovingSpaceObject {
|
||||||
|
|
||||||
public static final int TOTAL_DRAWS = 50;
|
public static final int TOTAL_DRAWS = 50;
|
||||||
public static final int SPEED = 10;
|
public static final int SPEED = 10;
|
||||||
|
private final AsteroidGameThread mGame;;
|
||||||
private int mCount = 0;
|
private int mCount = 0;
|
||||||
private AsteroidGame mGame;;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new shot
|
* Creates a new shot
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
* @param mGame
|
* @param mGame
|
||||||
*/
|
*/
|
||||||
public Shot(double x, double y, double angle, double shipXVel, double shipYVel, AsteroidGame game) {
|
public Shot(final double x, final double y, final double angle, final double shipXVel, final double shipYVel, final AsteroidGameThread game) {
|
||||||
mX = x;
|
mX = x;
|
||||||
mY = y;
|
mY = y;
|
||||||
mAngle = angle;
|
mAngle = angle;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import java.awt.Color;
|
|||||||
* More accuractly the object's location and color.
|
* More accuractly the object's location and color.
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public class SpaceObject {
|
public abstract class SpaceObject implements Drawable{
|
||||||
|
|
||||||
protected Color mColor;
|
protected Color mColor;
|
||||||
protected double mX;
|
protected double mX;
|
||||||
@@ -61,7 +61,7 @@ public class SpaceObject {
|
|||||||
* @param c
|
* @param c
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public void setColor(Color c) {
|
public void setColor(final Color c) {
|
||||||
this.mColor = c;
|
this.mColor = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ public class SpaceObject {
|
|||||||
* @param y1
|
* @param y1
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public void setLocation(int x, int y) {
|
public void setLocation(final int x, final int y) {
|
||||||
mX = x;
|
mX = x;
|
||||||
mY = y;
|
mY = y;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import javax.swing.JPanel;
|
|||||||
public class Status extends JPanel {
|
public class Status extends JPanel {
|
||||||
|
|
||||||
private static final long serialVersionUID = -169321993637429941L;
|
private static final long serialVersionUID = -169321993637429941L;
|
||||||
private JLabel status;
|
private final JLabel status;
|
||||||
private StringBuffer mBuffer;
|
private StringBuffer mBuffer;
|
||||||
private int mShotCount = 0;
|
private int mShotCount = 0;
|
||||||
private int mAsteroidCount = 0;
|
private int mAsteroidCount = 0;
|
||||||
@@ -48,7 +48,7 @@ public class Status extends JPanel {
|
|||||||
* @param g
|
* @param g
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public Status(Container container, AsteroidGame g) {
|
public Status(final Container container, final AsteroidGameThread g) {
|
||||||
JPanel northSubPanel = new JPanel();
|
JPanel northSubPanel = new JPanel();
|
||||||
status = new JLabel("Missiles 0 Asteroids 0 Ships 0 Score 0 Time: 0");
|
status = new JLabel("Missiles 0 Asteroids 0 Ships 0 Score 0 Time: 0");
|
||||||
northSubPanel.add(status);
|
northSubPanel.add(status);
|
||||||
@@ -79,7 +79,7 @@ public class Status extends JPanel {
|
|||||||
* @param score
|
* @param score
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public synchronized void decrementScore(int score) {
|
public synchronized void decrementScore(final int score) {
|
||||||
if(this.mScore - mScore > 0)
|
if(this.mScore - mScore > 0)
|
||||||
this.mScore -= mScore;
|
this.mScore -= mScore;
|
||||||
}
|
}
|
||||||
@@ -107,7 +107,7 @@ public class Status extends JPanel {
|
|||||||
* @param mTime
|
* @param mTime
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public synchronized void decrementTime(long mTime) {
|
public synchronized void decrementTime(final long mTime) {
|
||||||
if(this.mTime - mTime > 0)
|
if(this.mTime - mTime > 0)
|
||||||
this.mTime -= mTime;
|
this.mTime -= mTime;
|
||||||
}
|
}
|
||||||
@@ -175,7 +175,7 @@ public class Status extends JPanel {
|
|||||||
* @param score
|
* @param score
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public synchronized void incrementScore(int score) {
|
public synchronized void incrementScore(final int score) {
|
||||||
this.mScore += score;
|
this.mScore += score;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,7 +200,7 @@ public class Status extends JPanel {
|
|||||||
* @param mTime
|
* @param mTime
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public synchronized void incrementTime(long mTime) {
|
public synchronized void incrementTime(final long mTime) {
|
||||||
this.mTime += mTime;
|
this.mTime += mTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,7 +210,7 @@ public class Status extends JPanel {
|
|||||||
* @return formated string
|
* @return formated string
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
private String padTime(int time){
|
private String padTime(final int time){
|
||||||
if (time <= 9)
|
if (time <= 9)
|
||||||
return "0"+ time;
|
return "0"+ time;
|
||||||
return ""+ time;
|
return ""+ time;
|
||||||
@@ -219,42 +219,42 @@ public class Status extends JPanel {
|
|||||||
/**
|
/**
|
||||||
* @param mAsteroidCount the mAsteroidCount to set
|
* @param mAsteroidCount the mAsteroidCount to set
|
||||||
*/
|
*/
|
||||||
public synchronized void setAsteroidCount(int mAsteroidCount) {
|
public synchronized void setAsteroidCount(final int mAsteroidCount) {
|
||||||
this.mAsteroidCount = mAsteroidCount;
|
this.mAsteroidCount = mAsteroidCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param level the level to set
|
* @param level the level to set
|
||||||
*/
|
*/
|
||||||
public void setLevel(int level) {
|
public void setLevel(final int level) {
|
||||||
this.mLevel = level;
|
this.mLevel = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param mScore the mScore to set
|
* @param mScore the mScore to set
|
||||||
*/
|
*/
|
||||||
public synchronized void setScore(long mScore) {
|
public synchronized void setScore(final long mScore) {
|
||||||
this.mScore = mScore;
|
this.mScore = mScore;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param mShipCount the mShipCount to set
|
* @param mShipCount the mShipCount to set
|
||||||
*/
|
*/
|
||||||
public synchronized void setShipCount(int mShipCount) {
|
public synchronized void setShipCount(final int mShipCount) {
|
||||||
this.mShipCount = mShipCount;
|
this.mShipCount = mShipCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param mShotCount the mShotCount to set
|
* @param mShotCount the mShotCount to set
|
||||||
*/
|
*/
|
||||||
public synchronized void setShotCount(int mShotCount) {
|
public synchronized void setShotCount(final int mShotCount) {
|
||||||
this.mShotCount = mShotCount;
|
this.mShotCount = mShotCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param mTime the mTime to set
|
* @param mTime the mTime to set
|
||||||
*/
|
*/
|
||||||
public synchronized void setTime(long mTime) {
|
public synchronized void setTime(final long mTime) {
|
||||||
this.mTime = mTime;
|
this.mTime = mTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,12 +264,11 @@ public class Status extends JPanel {
|
|||||||
* @return human readable hour : minutes format
|
* @return human readable hour : minutes format
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
private String stringTime(long mills){
|
private String stringTime(final long mills){
|
||||||
int hours = (int) (mills / 3600000);
|
final int hours = (int) (mills / 3600000);
|
||||||
mills = mills - (hours * 3600000);
|
final long millsMinusHours = mills - (hours * 3600000);
|
||||||
int minutes = (int) ( mills / 60000);
|
final int minutes = (int) ( millsMinusHours / 60000);
|
||||||
int seconds = (int) (mills % 60000);
|
final int seconds = ((int) (millsMinusHours % 60000)) / 1000;
|
||||||
seconds = seconds / 1000;
|
|
||||||
return hours +" : "+ padTime(minutes) +" : "+ padTime(seconds);
|
return hours +" : "+ padTime(minutes) +" : "+ padTime(seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
38
asteroids.html
Normal file
38
asteroids.html
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<!--
|
||||||
|
Copyright 2012 Richard Barrette
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License
|
||||||
|
-->
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html lang="en-US">
|
||||||
|
<HEAD>
|
||||||
|
<TITLE> Asteroids </TITLE>
|
||||||
|
<h1> Asteroids </h1>
|
||||||
|
An Asteroids Clone by Rick Barrette
|
||||||
|
<br/>
|
||||||
|
</HEAD>
|
||||||
|
<BODY>
|
||||||
|
<applet width="100%" height="70%" code="com.RickBarrette.asteroids.GameApplet">
|
||||||
|
<param name="jnlp_href" value="Asteroids.jnlp">
|
||||||
|
</applet>
|
||||||
|
|
||||||
|
<h3>Controls</h3>
|
||||||
|
<strong>Steering: </strong> [W] [A] [S] [D] or [Arrow] Keys
|
||||||
|
<br/>
|
||||||
|
<strong>Fire:</strong> [Space]
|
||||||
|
<br/>
|
||||||
|
<strong>Start/Pausee:</strong> [Enter]
|
||||||
|
<br/>
|
||||||
|
<strong>Hyper Jump:</strong> [H]
|
||||||
|
</BODY>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user