commit 0ad01c199f183dd0fa9c9a0f2f158030c114ad06
parent 11b0d0a5737b5ff87604505cf8d49450e892221d
Author: mpizzzle <michael.770211@gmail.com>
Date: Sat, 2 Mar 2019 13:22:19 +0000
updating tank game to use swing components
Diffstat:
5 files changed, 301 insertions(+), 301 deletions(-)
diff --git a/Tank/Assets/explosion1.gif b/Tank/Assets/explosion1.gif
Binary files differ.
diff --git a/Tank/Assets/explosion2.gif b/Tank/Assets/explosion2.gif
Binary files differ.
diff --git a/Tank/Assets/explosion3.gif b/Tank/Assets/explosion3.gif
Binary files differ.
diff --git a/Tank/src/TankArea.java b/Tank/src/TankArea.java
@@ -2,7 +2,10 @@ import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
+import java.io.File;
+import java.io.IOException;
+import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class TankArea extends JPanel {
@@ -10,57 +13,57 @@ public class TankArea extends JPanel {
TankGame myApplet = null;
-Image badtankdown2;
-Image badtankdownshoot;
-Image badtankdownshoot2;
-Image badtankdown;
-Image badtankleft2;
-Image badtankleftshoot2;
-Image badtankleftshoot;
-Image badtankleft ;
-Image badtankright2;
-Image badtankrightshoot2;
-Image badtankrightshoot;
-Image badtankright;
-Image badtankup2;
-Image badtankupshoot2;
-Image badtankupshoot;
-Image badtankup;
-Image tankdown2;
-Image tankdownshoot2;
-Image tankdownshoot;
-Image tankdown;
-Image tankleft2;
-Image tankleftshoot2;
-Image tankleftshoot;
-Image tankleft;
-Image tankright2;
-Image tankrightshoot2;
-Image tankrightshoot;
-Image tankright;
-Image tankup2;
-Image tankupshoot2;
-Image tankupshoot;
-Image tankup;
-Image enemyImage;
-Image personImage;
-Image pitImage;
-
+ Image badtankdown2;
+ Image badtankdownshoot;
+ Image badtankdownshoot2;
+ Image badtankdown;
+ Image badtankleft2;
+ Image badtankleftshoot2;
+ Image badtankleftshoot;
+ Image badtankleft;
+ Image badtankright2;
+ Image badtankrightshoot2;
+ Image badtankrightshoot;
+ Image badtankright;
+ Image badtankup2;
+ Image badtankupshoot2;
+ Image badtankupshoot;
+ Image badtankup;
+ Image tankdown2;
+ Image tankdownshoot2;
+ Image tankdownshoot;
+ Image tankdown;
+ Image tankleft2;
+ Image tankleftshoot2;
+ Image tankleftshoot;
+ Image tankleft;
+ Image tankright2;
+ Image tankrightshoot2;
+ Image tankrightshoot;
+ Image tankright;
+ Image tankup2;
+ Image tankupshoot2;
+ Image tankupshoot;
+ Image tankup;
+ Image enemyImage;
+ Image personImage;
+ Image pitImage;
+
private Image explosion1, explosion2, explosion3;
- MediaTracker mt=null;
-
+ MediaTracker mt = null;
+
public TankArea(TankGame parent) {
myApplet = parent;
enemyImage = load(myApplet, "bad-tank-up.gif");
personImage = load(myApplet, "tank-up.gif");
- pitImage = load(myApplet, "pit.gif");
+ pitImage = load(myApplet, "pit.gif");
explosion1 = load(myApplet, "explosion1.gif");
explosion2 = load(myApplet, "explosion2.gif");
explosion3 = load(myApplet, "explosion3.gif");
badtankdown2 = load(myApplet, "bad-tank-down-2.gif");
badtankdownshoot = load(myApplet, "bad-tank-down-shoot.gif");
badtankdownshoot2 = load(myApplet, "bad-tank-down-shoot-2.gif");
- badtankdown = load(myApplet, " bad-tank-down.gif");
+ badtankdown = load(myApplet, "bad-tank-down.gif");
badtankleft2 = load(myApplet, "bad-tank-left-2.gif");
badtankleftshoot2 = load(myApplet, "bad-tank-left-shoot-2.gif");
badtankleftshoot = load(myApplet, "bad-tank-left-shoot.gif");
@@ -77,12 +80,12 @@ Image pitImage;
tankdownshoot2 = load(myApplet, "tank-down-shoot-2.gif");
tankdownshoot = load(myApplet, "tank-down-shoot.gif");
tankdown = load(myApplet, "tank-down.gif");
- tankleft2= load(myApplet, "tank-left-2.gif");
+ tankleft2 = load(myApplet, "tank-left-2.gif");
tankleftshoot2 = load(myApplet, "tank-left-shoot-2.gif");
tankleftshoot = load(myApplet, "tank-left-shoot.gif");
tankleft = load(myApplet, "tank-left.gif");
tankright2 = load(myApplet, "tank-right-2.gif");
- tankrightshoot2 = load(myApplet, "tankright-shoot-2.gif");
+ tankrightshoot2 = load(myApplet, "tank-right-shoot-2.gif");
tankrightshoot = load(myApplet, "tank-right-shoot.gif");
tankright = load(myApplet, "tank-right.gif");
tankup2 = load(myApplet, "tank-up-2.gif");
@@ -90,30 +93,38 @@ Image pitImage;
tankupshoot = load(myApplet, "tank-up-shoot.gif");
tankup = load(myApplet, "tank-up.gif");
}
-
+
Image load(TankGame parent, String picture) {
- Image im = parent.getImage(myApplet.getCodeBase(), "Tank\\" + picture);
- checkImage(im, picture);
- return(im);
+ try {
+ Image im = ImageIO.read(new File("../Assets/" + picture));
+ checkImage(im, picture);
+ return (im);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ System.out.println("Image Not found: " + picture);
+ }
+ return null;
}
-
+
void checkImage(Image image, String name) {
if (mt != null) {
- mt.addImage(image,0);
+ mt.addImage(image, 0);
try {
- mt.waitForID(0,5000);
- }
- catch (InterruptedException ie) {
+ mt.waitForID(0, 5000);
+ } catch (InterruptedException ie) {
// nothing to do
}
- if (mt.isErrorID(0)) System.out.println("Image Not found: "+name.toString());
+ if (mt.isErrorID(0))
+ System.out.println("Image Not found: " + name.toString());
}
}
-
+
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
- if (myApplet == null) return;
+ if (myApplet == null)
+ return;
final int w = getBounds().width;
final int h = getBounds().height;
g.setColor(Color.gray);
@@ -122,33 +133,35 @@ Image pitImage;
if (TankGame.playerPosition != null) {
// show the player
- //g.drawString("#", myApplet.playerPosition.x, myApplet.playerPosition.y);
+ // g.drawString("#", myApplet.playerPosition.x, myApplet.playerPosition.y);
int elem = myApplet.shooting ? myApplet.SHOOTING : myApplet.NOTSHOOTING;
- g.drawImage(myApplet.goodImages[myApplet.goodImageNo][elem], TankGame.playerPosition.x, TankGame.playerPosition.y,Color.gray, null);
+ g.drawImage(myApplet.goodImages[myApplet.goodImageNo][elem], TankGame.playerPosition.x,
+ TankGame.playerPosition.y, Color.gray, null);
// show the pits
- for (int i=0; i < TankGame.pitPositions.length; i++) {
- g.drawImage(pitImage, TankGame.pitPositions[i].x, TankGame.pitPositions[i].y,Color.gray, null);
+ for (int i = 0; i < TankGame.pitPositions.length; i++) {
+ g.drawImage(pitImage, TankGame.pitPositions[i].x, TankGame.pitPositions[i].y, Color.gray, null);
}
-
+
// show the enemies
- for (int i=0; i < TankGame.enemyPositions.length; i++) {
+ for (int i = 0; i < TankGame.enemyPositions.length; i++) {
if (TankGame.enemyPositions[i].x > -1) {
int eelem = myApplet.enemyShooting[i] ? myApplet.SHOOTING : myApplet.NOTSHOOTING;
- g.drawImage(myApplet.badImages[myApplet.enemyImageNo[i]][eelem], TankGame.enemyPositions[i].x, TankGame.enemyPositions[i].y,null);
+ g.drawImage(myApplet.badImages[myApplet.enemyImageNo[i]][eelem], TankGame.enemyPositions[i].x,
+ TankGame.enemyPositions[i].y, null);
}
}
if (myApplet.explosionx != -1) {
- g.drawImage(explosion1, myApplet.explosionx, myApplet.explosiony,Color.gray, null);
+ g.drawImage(explosion1, myApplet.explosionx, myApplet.explosiony, Color.gray, null);
try {
Thread.sleep(80);
- g.drawImage(explosion2, myApplet.explosionx, myApplet.explosiony,Color.gray, null);
+ g.drawImage(explosion2, myApplet.explosionx, myApplet.explosiony, Color.gray, null);
Thread.sleep(80);
- g.drawImage(explosion3, myApplet.explosionx, myApplet.explosiony,Color.gray, null);
+ g.drawImage(explosion3, myApplet.explosionx, myApplet.explosiony, Color.gray, null);
+ } catch (Exception e) {
}
- catch (Exception e) {}
myApplet.explosionx = -1;
- myApplet.explosiony=-1;
+ myApplet.explosiony = -1;
}
}
}
diff --git a/Tank/src/TankGame.java b/Tank/src/TankGame.java
@@ -1,16 +1,18 @@
-/* Copyright (c) Mary Percival 2002 */
-/* Tank game Created October 2002 */
+import java.awt.Color;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
-package Tank;
+import javax.swing.JFrame;
-import java.awt.*;
-import java.awt.event.*;
-import java.applet.*;
+/* Copyright (c) Mary Percival 2002 */
+/* Tank game Created October 2002 */
-public class TankGame extends Applet implements KeyListener, Runnable {
+public class TankGame extends JFrame implements KeyListener, Runnable {
+ private static final long serialVersionUID = 2750159877444817519L;
// all member variables 'static' because shared with the enemy action thread
private static TankArea area;
- private static boolean finished = false;
private static boolean ingame = false;
private boolean juststarted = false;
private static int level = 1;
@@ -18,286 +20,273 @@ public class TankGame extends Applet implements KeyListener, Runnable {
protected static Point[] enemyPositions;
protected static Point playerPosition;
protected static Point[] pitPositions;
- private Thread enemies;
-
+ private static Thread enemies;
+
protected static int pitNumber = 15;
protected static int enemyNumber = 1;
protected static int RIGHTEDGE = 1200;
protected static final int LEFTEDGE = 0;
protected static final int TOPEDGE = 0;
protected static int BOTTOMEDGE = 1000;
- protected static int XAMOUNT=5;
- protected static int YAMOUNT=5;
+ protected static int XAMOUNT = 5;
+ protected static int YAMOUNT = 5;
private static final int X = 1;
private static final int Y = 2;
- private static final int NOT=3;
+ private static final int NOT = 3;
private static final int DELAY = 125;
- protected int explosionx =-1, explosiony=-1;
-
+ protected int explosionx = -1, explosiony = -1;
+
// tank game stuff
- boolean up=true, down=false, left=false, right=false, shooting=false;
- int NOTSHOOTING=0, SHOOTING=1, FIRSTUP=0, FIRSTDOWN=2, FIRSTLEFT=4, FIRSTRIGHT=6;
- int goodImageNo=FIRSTUP; // TODO - randomise
+ boolean up = true, down = false, left = false, right = false, shooting = false;
+ static int NOTSHOOTING = 0;
+ static int SHOOTING = 1;
+ static int FIRSTUP = 0;
+ static int FIRSTDOWN = 2;
+ static int FIRSTLEFT = 4;
+ static int FIRSTRIGHT = 6;
+ int goodImageNo = FIRSTUP; // TODO - randomise
int[] enemyImageNo;
boolean[] enemyShooting;
Image[][] goodImages = new Image[8][2]; // up up2 down down2 left left2 right right2 x SHOOTING and NON_SHOOTING
Image[][] badImages = new Image[8][2]; // up up2 down down2 left left2 right right2 x SHOOTING and NON_SHOOTING
-
- public void init() {
- setLayout(null);
- setBackground(Color.gray);
+ public static void main(String[] args) {
+ TankGame tankGame = new TankGame();
+ tankGame.setLayout(null);
+ tankGame.setBackground(Color.gray);
+ tankGame.setSize(RIGHTEDGE, BOTTOMEDGE);
- area = new TankArea(this);
- add(area);
- FontMetrics fm = getFontMetrics(getFont());
- RIGHTEDGE = getBounds().width - 1;
- BOTTOMEDGE = getBounds().height - 1;
+ area = new TankArea(tankGame);
+ tankGame.add(area);
+ //RIGHTEDGE = tankGame.getBounds().width - 1;
+ //BOTTOMEDGE = tankGame.getBounds().height - 1;
XAMOUNT = 12;
YAMOUNT = 12;
- setVisible(true);
- area.setBounds(0,0,RIGHTEDGE,BOTTOMEDGE);
+ tankGame.setVisible(true);
+ area.setBounds(0, 0, RIGHTEDGE, BOTTOMEDGE);
area.setVisible(true);
- addKeyListener(this);
- area.addKeyListener(this);
+ tankGame.addKeyListener(tankGame);
+ area.addKeyListener(tankGame);
area.requestFocus();
+
+ tankGame.goodImages[FIRSTUP][NOTSHOOTING] = area.tankup;
+ tankGame.goodImages[FIRSTUP + 1][NOTSHOOTING] = area.tankup2;
+ tankGame.goodImages[FIRSTUP][SHOOTING] = area.tankupshoot;
+ tankGame.goodImages[FIRSTUP + 1][SHOOTING] = area.tankupshoot2;
+
+ tankGame.goodImages[FIRSTDOWN][NOTSHOOTING] = area.tankdown;
+ tankGame.goodImages[FIRSTDOWN + 1][NOTSHOOTING] = area.tankdown2;
+ tankGame.goodImages[FIRSTDOWN][SHOOTING] = area.tankdownshoot;
+ tankGame.goodImages[FIRSTDOWN + 1][SHOOTING] = area.tankdownshoot2;
+
+ tankGame.goodImages[FIRSTLEFT][NOTSHOOTING] = area.tankleft;
+ tankGame.goodImages[FIRSTLEFT + 1][NOTSHOOTING] = area.tankleft2;
+ tankGame.goodImages[FIRSTLEFT][SHOOTING] = area.tankleftshoot;
+ tankGame.goodImages[FIRSTLEFT + 1][SHOOTING] = area.tankleftshoot2;
- goodImages[FIRSTUP][NOTSHOOTING] = area.tankup;
- goodImages[FIRSTUP+1][NOTSHOOTING] = area.tankup2;
- goodImages[FIRSTUP][SHOOTING] = area.tankupshoot;
- goodImages[FIRSTUP+1][SHOOTING] = area.tankupshoot2;
-
- goodImages[FIRSTDOWN][NOTSHOOTING] = area.tankdown;
- goodImages[FIRSTDOWN+1][NOTSHOOTING] = area.tankdown2;
- goodImages[FIRSTDOWN][SHOOTING] = area.tankdownshoot;
- goodImages[FIRSTDOWN+1][SHOOTING] = area.tankdownshoot2;
-
- goodImages[FIRSTLEFT][NOTSHOOTING] = area.tankleft;
- goodImages[FIRSTLEFT+1][NOTSHOOTING] = area.tankleft2;
- goodImages[FIRSTLEFT][SHOOTING] = area.tankleftshoot;
- goodImages[FIRSTLEFT+1][SHOOTING] = area.tankleftshoot2;
-
- goodImages[FIRSTRIGHT][NOTSHOOTING] = area.tankright;
- goodImages[FIRSTRIGHT+1][NOTSHOOTING] = area.tankright2;
- goodImages[FIRSTRIGHT][SHOOTING] = area.tankrightshoot;
- goodImages[FIRSTRIGHT+1][SHOOTING] = area.tankrightshoot2;
-
- badImages[FIRSTUP][NOTSHOOTING] = area.badtankup;
- badImages[FIRSTUP+1][NOTSHOOTING] = area.badtankup2;
- badImages[FIRSTUP][SHOOTING] = area.badtankupshoot;
- badImages[FIRSTUP+1][SHOOTING] = area.badtankupshoot2;
-
- badImages[FIRSTDOWN][NOTSHOOTING] = area.badtankdown;
- badImages[FIRSTDOWN+1][NOTSHOOTING] = area.badtankdown2;
- badImages[FIRSTDOWN][SHOOTING] = area.badtankdownshoot;
- badImages[FIRSTDOWN+1][SHOOTING] = area.badtankdownshoot2;
-
- badImages[FIRSTLEFT][NOTSHOOTING] = area.badtankleft;
- badImages[FIRSTLEFT+1][NOTSHOOTING] = area.badtankleft2;
- badImages[FIRSTLEFT][SHOOTING] = area.badtankleftshoot;
- badImages[FIRSTLEFT+1][SHOOTING] = area.badtankleftshoot2;
-
- badImages[FIRSTRIGHT][NOTSHOOTING] = area.badtankright;
- badImages[FIRSTRIGHT+1][NOTSHOOTING] = area.badtankright2;
- badImages[FIRSTRIGHT][SHOOTING] = area.badtankrightshoot;
- badImages[FIRSTRIGHT+1][SHOOTING] = area.badtankrightshoot2;
+ tankGame.goodImages[FIRSTRIGHT][NOTSHOOTING] = area.tankright;
+ tankGame.goodImages[FIRSTRIGHT + 1][NOTSHOOTING] = area.tankright2;
+ tankGame.goodImages[FIRSTRIGHT][SHOOTING] = area.tankrightshoot;
+ tankGame.goodImages[FIRSTRIGHT + 1][SHOOTING] = area.tankrightshoot2;
+
+ tankGame.badImages[FIRSTUP][NOTSHOOTING] = area.badtankup;
+ tankGame.badImages[FIRSTUP + 1][NOTSHOOTING] = area.badtankup2;
+ tankGame.badImages[FIRSTUP][SHOOTING] = area.badtankupshoot;
+ tankGame.badImages[FIRSTUP + 1][SHOOTING] = area.badtankupshoot2;
+
+ tankGame.badImages[FIRSTDOWN][NOTSHOOTING] = area.badtankdown;
+ tankGame.badImages[FIRSTDOWN + 1][NOTSHOOTING] = area.badtankdown2;
+ tankGame.badImages[FIRSTDOWN][SHOOTING] = area.badtankdownshoot;
+ tankGame.badImages[FIRSTDOWN + 1][SHOOTING] = area.badtankdownshoot2;
+
+ tankGame.badImages[FIRSTLEFT][NOTSHOOTING] = area.badtankleft;
+ tankGame.badImages[FIRSTLEFT + 1][NOTSHOOTING] = area.badtankleft2;
+ tankGame.badImages[FIRSTLEFT][SHOOTING] = area.badtankleftshoot;
+ tankGame.badImages[FIRSTLEFT + 1][SHOOTING] = area.badtankleftshoot2;
+
+ tankGame.badImages[FIRSTRIGHT][NOTSHOOTING] = area.badtankright;
+ tankGame.badImages[FIRSTRIGHT + 1][NOTSHOOTING] = area.badtankright2;
+ tankGame.badImages[FIRSTRIGHT][SHOOTING] = area.badtankrightshoot;
+ tankGame.badImages[FIRSTRIGHT + 1][SHOOTING] = area.badtankrightshoot2;
- enemies = new Thread(this);
+ enemies = new Thread(tankGame);
enemies.start();
}
-
- public void start() {
- // called by Applet Viewer or Browser
- doLevel(1);
- }
-
+
public void doLevel(int level) {
// this runs one 'level'
- // create arrays of pits and enemies here.
+ // create arrays of pits and enemies here.
// Maybe each level will have different numbers?
juststarted = true;
Point temppoint;
pitPositions = new Point[pitNumber];
enemyPositions = new Point[enemyNumber];
- for (int i=0; i < enemyNumber; i++) enemyPositions[i] = new Point(0,0);
- for (int i=0; i < pitNumber; i++) pitPositions[i] = new Point(0,0);
-
+ for (int i = 0; i < enemyNumber; i++)
+ enemyPositions[i] = new Point(0, 0);
+ for (int i = 0; i < pitNumber; i++)
+ pitPositions[i] = new Point(0, 0);
+
enemyImageNo = new int[enemyNumber];
enemyShooting = new boolean[enemyNumber];
- for (int i=0; i < enemyNumber; i++) {
+ for (int i = 0; i < enemyNumber; i++) {
enemyShooting[i] = false;
enemyImageNo[i] = FIRSTUP; // TODO - randomise
}
- showStatus("Started level " + level + ": " + enemyNumber + " enemies and " + pitNumber + " pits");
-
+ System.out.println("Started level " + level + ": " + enemyNumber + " enemies and " + pitNumber + " pits");
+
// randomly position 1 player, x enemies and y pits
playerPosition = randomPosition();
-
+
for (int i = 0; i < enemyNumber; i++) {
temppoint = randomPosition();
- while (isPlayerPosition(temppoint) ||
- isTankPosition(temppoint)) {
+ while (isPlayerPosition(temppoint) || isTankPosition(temppoint)) {
// don't position any enemy on the player or on top of another enemy
temppoint = randomPosition();
}
enemyPositions[i] = temppoint;
}
-
+
for (int i = 0; i < pitNumber; i++) {
temppoint = randomPosition();
- while (isPlayerPosition(temppoint) ||
- isPitPosition(temppoint) ||
- isTankPosition(temppoint)) {
+ while (isPlayerPosition(temppoint) || isPitPosition(temppoint) || isTankPosition(temppoint)) {
// don't position any enemy at the player, an enemy or another pit
temppoint = randomPosition();
}
pitPositions[i] = temppoint;
}
-
- enemiesRemaining=enemyNumber;
+
+ enemiesRemaining = enemyNumber;
// paint the panel here
area.repaint();
ingame = true;
}
-
+
synchronized void incrementImageNo() {
goodImageNo++;
- if ((goodImageNo % 2) == 0) goodImageNo -= 2;
+ if ((goodImageNo % 2) == 0)
+ goodImageNo -= 2;
}
-
+
synchronized void incrementImageNo(int enemyNo) {
enemyImageNo[enemyNo]++;
- if ((enemyImageNo[enemyNo] % 2) == 0) enemyImageNo[enemyNo] -= 2;
+ if ((enemyImageNo[enemyNo] % 2) == 0)
+ enemyImageNo[enemyNo] -= 2;
}
-
+
void goLeft(int enemyno) {
- if (enemyImageNo[enemyno] == FIRSTLEFT || enemyImageNo[enemyno] == FIRSTLEFT+1) {
+ if (enemyImageNo[enemyno] == FIRSTLEFT || enemyImageNo[enemyno] == FIRSTLEFT + 1) {
incrementImageNo(enemyno);
- }
- else
+ } else
enemyImageNo[enemyno] = FIRSTLEFT;
}
-
+
void goLeft() {
- if (goodImageNo == FIRSTLEFT || goodImageNo == FIRSTLEFT+1) {
+ if (goodImageNo == FIRSTLEFT || goodImageNo == FIRSTLEFT + 1) {
incrementImageNo();
- }
- else
+ } else
goodImageNo = FIRSTLEFT;
}
-
+
void goRight(int enemyno) {
- if (enemyImageNo[enemyno] == FIRSTRIGHT || enemyImageNo[enemyno] == FIRSTRIGHT+1) {
+ if (enemyImageNo[enemyno] == FIRSTRIGHT || enemyImageNo[enemyno] == FIRSTRIGHT + 1) {
incrementImageNo(enemyno);
- }
- else
+ } else
enemyImageNo[enemyno] = FIRSTRIGHT;
}
-
+
void goRight() {
- if (goodImageNo == FIRSTRIGHT || goodImageNo == FIRSTRIGHT+1) {
+ if (goodImageNo == FIRSTRIGHT || goodImageNo == FIRSTRIGHT + 1) {
incrementImageNo();
- }
- else
+ } else
goodImageNo = FIRSTRIGHT;
}
-
+
void goUp(int enemyno) {
- if (enemyImageNo[enemyno] == FIRSTUP || enemyImageNo[enemyno] == FIRSTUP+1) {
+ if (enemyImageNo[enemyno] == FIRSTUP || enemyImageNo[enemyno] == FIRSTUP + 1) {
incrementImageNo(enemyno);
- }
- else
+ } else
enemyImageNo[enemyno] = FIRSTUP;
}
-
+
void goUp() {
- if (goodImageNo == FIRSTUP || goodImageNo == FIRSTUP+1) {
+ if (goodImageNo == FIRSTUP || goodImageNo == FIRSTUP + 1) {
incrementImageNo();
- }
- else
+ } else
goodImageNo = FIRSTUP;
}
-
+
void goDown(int enemyno) {
- if (enemyImageNo[enemyno] == FIRSTDOWN || enemyImageNo[enemyno] == FIRSTDOWN+1) {
+ if (enemyImageNo[enemyno] == FIRSTDOWN || enemyImageNo[enemyno] == FIRSTDOWN + 1) {
incrementImageNo(enemyno);
- }
- else
+ } else
enemyImageNo[enemyno] = FIRSTDOWN;
}
-
+
void goDown() {
- if (goodImageNo == FIRSTDOWN || goodImageNo == FIRSTDOWN+1) {
+ if (goodImageNo == FIRSTDOWN || goodImageNo == FIRSTDOWN + 1) {
incrementImageNo();
- }
- else
+ } else
goodImageNo = FIRSTDOWN;
}
-
+
private Point randomPosition() {
- return new Point( (int) (Math.random() * RIGHTEDGE) / XAMOUNT * XAMOUNT,
- (int) (Math.random() * BOTTOMEDGE) / YAMOUNT * YAMOUNT);
+ return new Point((int) (Math.random() * RIGHTEDGE) / XAMOUNT * XAMOUNT,
+ (int) (Math.random() * BOTTOMEDGE) / YAMOUNT * YAMOUNT);
}
-
+
private boolean isPlayerPosition(Point p) {
- return(p.x == playerPosition.x && p.y == playerPosition.y);
+ return (p.x == playerPosition.x && p.y == playerPosition.y);
}
-
+
private boolean isTankPosition(Point p) {
- for (int i = 0 ; i < enemyNumber; i++) {
- if(p.x == enemyPositions[i].x && p.y == enemyPositions[i].y) return(true);
+ for (int i = 0; i < enemyNumber; i++) {
+ if (p.x == enemyPositions[i].x && p.y == enemyPositions[i].y)
+ return (true);
}
- return(false);
+ return (false);
}
-
+
private int isInline(Point p) {
// is the new position in the same row as the player?
if (Math.abs(p.x - playerPosition.x) < XAMOUNT) {
// see whether there is another enemy between this position and the player
if (playerPosition.y > p.y) {
- for (int i = 0 ; i < enemyNumber; i++) {
- if(p.x == enemyPositions[i].x && p.y < enemyPositions[i].y) return(X);
+ for (int i = 0; i < enemyNumber; i++) {
+ if (p.x == enemyPositions[i].x && p.y < enemyPositions[i].y)
+ return (X);
}
- }
- else { // playerPosition y < p.y
- for (int i = 0 ; i < enemyNumber; i++) {
- if(p.x == enemyPositions[i].x && p.y > enemyPositions[i].y) return(X);
+ } else { // playerPosition y < p.y
+ for (int i = 0; i < enemyNumber; i++) {
+ if (p.x == enemyPositions[i].x && p.y > enemyPositions[i].y)
+ return (X);
}
}
- }
- else if (Math.abs(p.y - playerPosition.y) < YAMOUNT) {
+ } else if (Math.abs(p.y - playerPosition.y) < YAMOUNT) {
// see whether there is another enemy between this position and the player
if (playerPosition.x > p.x) {
- for (int i = 0 ; i < enemyNumber; i++) {
- if(p.y == enemyPositions[i].y && p.x < enemyPositions[i].x) return(Y);
+ for (int i = 0; i < enemyNumber; i++) {
+ if (p.y == enemyPositions[i].y && p.x < enemyPositions[i].x)
+ return (Y);
}
- }
- else { // playerPosition x < p.x
- for (int i = 0 ; i < enemyNumber; i++) {
- if(p.y == enemyPositions[i].y && p.x > enemyPositions[i].x) return(Y);
+ } else { // playerPosition x < p.x
+ for (int i = 0; i < enemyNumber; i++) {
+ if (p.y == enemyPositions[i].y && p.x > enemyPositions[i].x)
+ return (Y);
}
}
}
- return(NOT);
+ return (NOT);
}
-
+
private boolean isPitPosition(Point p) {
- for (int i = 0 ; i < pitNumber; i++) {
- if(p.x == pitPositions[i].x && p.y == pitPositions[i].y) return(true);
+ for (int i = 0; i < pitNumber; i++) {
+ if (p.x == pitPositions[i].x && p.y == pitPositions[i].y)
+ return (true);
}
- return(false);
- }
-
- public void finished() {
- finished = true;
- System.exit(0);
+ return (false);
}
-
- public String getAppletInfo() {
- return ("Tank Game");
- }
-
+
private Point moveCloser(int enemyNo, Point original, Point target) {
Point result = new Point(original);
int inlineType = isInline(original);
@@ -306,147 +295,145 @@ public class TankGame extends Applet implements KeyListener, Runnable {
// move in X direction
if (inlineType != X) {
if (original.x < target.x) {
- result.x = original.x + (XAMOUNT/2);
+ result.x = original.x + (XAMOUNT / 2);
goRight(enemyNo);
- }
- else if (original.x > target.x) {
- result.x = original.x - (XAMOUNT/2);
+ } else if (original.x > target.x) {
+ result.x = original.x - (XAMOUNT / 2);
goLeft(enemyNo);
}
}
- }
- else {
+ } else {
// move in Y direction
if (inlineType != Y) {
if (original.y < target.y) {
- result.y = original.y + (YAMOUNT/2);
+ result.y = original.y + (YAMOUNT / 2);
goDown(enemyNo);
- }
- else if (original.y > target.y) {
- result.y = original.y - (YAMOUNT/2);
+ } else if (original.y > target.y) {
+ result.y = original.y - (YAMOUNT / 2);
goUp(enemyNo);
}
}
}
/*
- if (isTankPosition(result)) {
- if (isTankPosition(new Point(result.x, original.y))) {
- if (isTankPosition(new Point(original.x, result.y))) result = original;
- else result = new Point(original.x, result.y);
- }
- else result = new Point(result.x, original.y);
- }
- */
+ * if (isTankPosition(result)) { if (isTankPosition(new Point(result.x,
+ * original.y))) { if (isTankPosition(new Point(original.x, result.y))) result =
+ * original; else result = new Point(original.x, result.y); } else result = new
+ * Point(result.x, original.y); }
+ */
inlineType = isInline(result);
if (inlineType == X) {
// fire along the X axis
- }
- else if (inlineType == Y) {
+ } else if (inlineType == Y) {
// fire along the Y axis
}
- return(result);
- }
-
- private int randomMove() {
- // return + or - value (randomly)
- if (Math.random() >= 0.5) return(24);
- else return(-24);
+ return (result);
}
-
-
+
+ /*
+ * private int randomMove() { // return + or - value (randomly) if
+ * (Math.random() >= 0.5) return(24); else return(-24); }
+ */
+
// this class will use just the key pressed event
+ @Override
public void keyPressed(KeyEvent e) {
if (ingame) {
- if (!
- ((e.getKeyCode() == KeyEvent.VK_DOWN && playerPosition.y >= (BOTTOMEDGE - YAMOUNT)) ||
- (e.getKeyCode() == KeyEvent.VK_UP && playerPosition.y <= (TOPEDGE + YAMOUNT)) ||
- (e.getKeyCode() == KeyEvent.VK_LEFT && playerPosition.x <= (LEFTEDGE + XAMOUNT)) ||
- (e.getKeyCode() == KeyEvent.VK_RIGHT && playerPosition.x >= (RIGHTEDGE - XAMOUNT)))) {
+ if (!((e.getKeyCode() == KeyEvent.VK_DOWN && playerPosition.y >= (BOTTOMEDGE - YAMOUNT))
+ || (e.getKeyCode() == KeyEvent.VK_UP && playerPosition.y <= (TOPEDGE + YAMOUNT))
+ || (e.getKeyCode() == KeyEvent.VK_LEFT && playerPosition.x <= (LEFTEDGE + XAMOUNT))
+ || (e.getKeyCode() == KeyEvent.VK_RIGHT && playerPosition.x >= (RIGHTEDGE - XAMOUNT)))) {
// valid move: move the player and then move the enemies
- if (e.getKeyCode() == KeyEvent.VK_DOWN) {
+ if (e.getKeyCode() == KeyEvent.VK_DOWN) {
playerPosition.y += YAMOUNT;
goDown();
- }
- else if (e.getKeyCode() == KeyEvent.VK_UP) {
+ } else if (e.getKeyCode() == KeyEvent.VK_UP) {
playerPosition.y -= YAMOUNT;
goUp();
- }
- else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
+ } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
playerPosition.x -= XAMOUNT;
goLeft();
- }
- else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
+ } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
playerPosition.x += XAMOUNT;
goRight();
}
if (isTankPosition(playerPosition)) {
- showStatus("The Player ran into an enemy!! Press the Enter key to restart the level");
+ System.out.println("The Player ran into an enemy!! Press the Enter key to restart the level");
ingame = false;
}
if (isPitPosition(playerPosition)) {
- showStatus("The Player ran into a pit!! Press the Enter key to restart the level");
+ System.out.println("The Player ran into a pit!! Press the Enter key to restart the level");
ingame = false;
}
area.repaint();
} // if valid key press
- }
- else if (e.getKeyCode() == KeyEvent.VK_ENTER) {
+ } else if (e.getKeyCode() == KeyEvent.VK_ENTER) {
doLevel(level++);
}
}
-
+
+ @Override
public void run() {
while (true) {
if (juststarted) {
- try {Thread.sleep(750);}
- catch (Exception e) {}
+ try {
+ Thread.sleep(750);
+ } catch (Exception e) {
+ }
juststarted = false;
}
- try {Thread.sleep(DELAY);}
- catch (InterruptedException e){}
+ try {
+ Thread.sleep(DELAY);
+ } catch (InterruptedException e) {
+ }
if (ingame) {
// for each enemy, move the enemy closer to the player
- for (int i=0; i < enemyPositions.length; i++) {
+ for (int i = 0; i < enemyPositions.length; i++) {
if (!deadTank(enemyPositions[i])) {
enemyPositions[i] = moveCloser(i, enemyPositions[i], playerPosition);
}
- // if there is a pit at that position, fall into it and decrement count of enemies
+ // if there is a pit at that position, fall into it and decrement count of
+ // enemies
// and set that enemy's position to -1, -1
if (isPitPosition(enemyPositions[i])) {
- showStatus("an enemy fell into a pit");
- explosionx=enemyPositions[i].x;
- explosiony=enemyPositions[i].y;
-
+ System.out.println("an enemy fell into a pit");
+ explosionx = enemyPositions[i].x;
+ explosiony = enemyPositions[i].y;
+
enemyPositions[i] = new Point(-1, -1);
enemiesRemaining--;
- showStatus(enemyNumber-enemiesRemaining + " down, " + enemiesRemaining + " to go...");
+ System.out.println(enemyNumber - enemiesRemaining + " down, " + enemiesRemaining + " to go...");
}
// if player is caught by an enemy or all enemies are gone, end the game
if (isPlayerPosition(enemyPositions[i])) {
- showStatus("\"Mmm! Brains...\". The Player is dead. Press the Enter key to restart the level");
- level--; // because it will be incremented in a minute and we want to stay on the same 'level'
+ System.out.println(
+ "\"Mmm! Brains...\". The Player is dead. Press the Enter key to restart the level");
+ level--; // because it will be incremented in a minute and we want to stay on the same
+ // 'level'
ingame = false;
}
}
if (enemiesRemaining == 0) {
- showStatus("All the enemies are gone -- you won!! Press the Enter key to start the next level");
+ System.out.println(
+ "All the enemies are gone -- you won!! Press the Enter key to start the next level");
enemyNumber++;
- if (pitNumber > 2) pitNumber--;
+ if (pitNumber > 2)
+ pitNumber--;
ingame = false;
- }
- else area.repaint();
+ } else
+ area.repaint();
}
}
}
private boolean deadTank(Point p) {
- return(p.x == -1 && p.y ==-1);
+ return (p.x == -1 && p.y == -1);
}
-
+
+ @Override
public void keyReleased(KeyEvent e) {
}
-
+
+ @Override
public void keyTyped(KeyEvent e) {
}
}
-