old-java-games

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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:
ATank/Assets/explosion1.gif | 0
ATank/Assets/explosion2.gif | 0
ATank/Assets/explosion3.gif | 0
MTank/src/TankArea.java | 145+++++++++++++++++++++++++++++++++++++++++++------------------------------------
MTank/src/TankGame.java | 457++++++++++++++++++++++++++++++++++++++-----------------------------------------
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) { } } -