Added Start/Pause feature to [Enter]
Cleaned up redundant key event handling code Signed-off-by: Ricky Barrette <rickbarrette@gmail.com>
This commit is contained in:
@@ -31,7 +31,7 @@ public class AsteroidGame extends Thread {
|
||||
private static final int DELAY_IN_MSEC = 50;
|
||||
private Vector<Object> mWorld;
|
||||
private GameFrame mGameFrame;
|
||||
public static boolean isStarted = false;
|
||||
public boolean isStarted = false;
|
||||
|
||||
/**
|
||||
* Creates an new Asteroids game
|
||||
|
||||
@@ -152,70 +152,21 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
||||
*/
|
||||
@Override
|
||||
public void keyPressed(KeyEvent e) {
|
||||
Object item;
|
||||
for (int i = 0; i < mGame.getWorld().size(); i++) {
|
||||
item = mGame.getWorld().get(i);
|
||||
if (item instanceof Ship) {
|
||||
Ship ship = (Ship) item;
|
||||
|
||||
switch(e.getKeyCode()){
|
||||
|
||||
/*
|
||||
* [Left arrow] or [A]
|
||||
* Rotate the ship left
|
||||
* [Enter]
|
||||
* Start of pause the game
|
||||
*/
|
||||
case KeyEvent.VK_A:
|
||||
case KeyEvent.VK_LEFT:
|
||||
ship.setTurningLeft(true);
|
||||
break;
|
||||
|
||||
/*
|
||||
* [Space] Pew Pew Pew!!!
|
||||
*/
|
||||
case KeyEvent.VK_SPACE:
|
||||
mGame.addElement(new Shot(ship.getX(), ship.getY(), ship.getAngle(), ship.getXVelocity(), ship.getYVelocity(), mGame));
|
||||
break;
|
||||
|
||||
/*
|
||||
* [Right arrow] or [D]
|
||||
* Rotate the ship right
|
||||
*/
|
||||
case KeyEvent.VK_D:
|
||||
case KeyEvent.VK_RIGHT:
|
||||
ship.setTurningRight(true);
|
||||
break;
|
||||
|
||||
/*
|
||||
* [Up arrow] or [W]
|
||||
* Increase the ship's speed
|
||||
*/
|
||||
case KeyEvent.VK_W:
|
||||
case KeyEvent.VK_UP:
|
||||
ship.setAccelerating(true);
|
||||
break;
|
||||
|
||||
/*
|
||||
* [Down arrow] or [S]
|
||||
* Slow the ship
|
||||
*/
|
||||
case KeyEvent.VK_S:
|
||||
case KeyEvent.VK_DOWN:
|
||||
ship.setAccelerating(false);
|
||||
break;
|
||||
|
||||
/*
|
||||
* [H] Hyoer jump
|
||||
*/
|
||||
case KeyEvent.VK_H:
|
||||
Random myRNG = new Random();
|
||||
ship.setLocation(myRNG.nextInt(mDisplay.getHeight()), myRNG.nextInt(mDisplay.getWidth()));
|
||||
case KeyEvent.VK_ENTER:
|
||||
if(mGame.isStarted)
|
||||
mGame.pauseGame();
|
||||
else
|
||||
mGame.startGame();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
mDisplay.repaint();
|
||||
|
||||
}
|
||||
|
||||
driveShip(e, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -225,10 +176,25 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
||||
*/
|
||||
@Override
|
||||
public void keyReleased(KeyEvent e) {
|
||||
driveShip(e, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Drives the user's ship
|
||||
* @param e
|
||||
* @param isKeyPressed
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void driveShip(KeyEvent e, boolean isKeyPressed) {
|
||||
Ship ship = null;
|
||||
//get the user's ship
|
||||
for (Object item : mGame.getWorld()) {
|
||||
if (item instanceof Ship) {
|
||||
Ship ship = (Ship) item;
|
||||
ship = (Ship) item;
|
||||
}
|
||||
}
|
||||
|
||||
if(ship != null)
|
||||
switch(e.getKeyCode()){
|
||||
|
||||
/*
|
||||
@@ -237,7 +203,7 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
||||
*/
|
||||
case KeyEvent.VK_A:
|
||||
case KeyEvent.VK_LEFT:
|
||||
ship.setTurningLeft(false);
|
||||
ship.setTurningLeft(isKeyPressed);
|
||||
break;
|
||||
|
||||
/*
|
||||
@@ -245,7 +211,7 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
||||
*/
|
||||
case KeyEvent.VK_D:
|
||||
case KeyEvent.VK_RIGHT:
|
||||
ship.setTurningRight(false);
|
||||
ship.setTurningRight(isKeyPressed);
|
||||
break;
|
||||
|
||||
/*
|
||||
@@ -254,7 +220,7 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
||||
*/
|
||||
case KeyEvent.VK_W:
|
||||
case KeyEvent.VK_UP:
|
||||
ship.setAccelerating(false);
|
||||
ship.setAccelerating(isKeyPressed);
|
||||
break;
|
||||
|
||||
/*
|
||||
@@ -263,17 +229,32 @@ public class GameFrame extends JFrame implements KeyListener, ActionListener{
|
||||
*/
|
||||
case KeyEvent.VK_S:
|
||||
case KeyEvent.VK_DOWN:
|
||||
ship.setAccelerating(false);
|
||||
ship.setAccelerating(isKeyPressed);
|
||||
break;
|
||||
|
||||
|
||||
/*
|
||||
* [H] Hyoer jump
|
||||
*/
|
||||
case KeyEvent.VK_H:
|
||||
if(isKeyPressed){
|
||||
Random myRNG = new Random();
|
||||
ship.setLocation(myRNG.nextInt(mDisplay.getHeight()), myRNG.nextInt(mDisplay.getWidth()));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
/*
|
||||
* [Space] Pew Pew Pew!!!
|
||||
*/
|
||||
case KeyEvent.VK_SPACE:
|
||||
if(isKeyPressed)
|
||||
mGame.addElement(new Shot(ship.getX(), ship.getY(), ship.getAngle(), ship.getXVelocity(), ship.getYVelocity(), mGame));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyTyped(KeyEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user