TankArea.java (6453B)
1 import java.awt.Color; 2 import java.awt.Graphics; 3 import java.awt.Image; 4 import java.awt.MediaTracker; 5 import java.io.File; 6 import java.io.IOException; 7 8 import javax.imageio.ImageIO; 9 import javax.swing.JPanel; 10 11 public class TankArea extends JPanel { 12 private static final long serialVersionUID = -2906196036928924340L; 13 14 Tank myApplet = null; 15 16 Image badtankdown2; 17 Image badtankdownshoot; 18 Image badtankdownshoot2; 19 Image badtankdown; 20 Image badtankleft2; 21 Image badtankleftshoot2; 22 Image badtankleftshoot; 23 Image badtankleft; 24 Image badtankright2; 25 Image badtankrightshoot2; 26 Image badtankrightshoot; 27 Image badtankright; 28 Image badtankup2; 29 Image badtankupshoot2; 30 Image badtankupshoot; 31 Image badtankup; 32 Image tankdown2; 33 Image tankdownshoot2; 34 Image tankdownshoot; 35 Image tankdown; 36 Image tankleft2; 37 Image tankleftshoot2; 38 Image tankleftshoot; 39 Image tankleft; 40 Image tankright2; 41 Image tankrightshoot2; 42 Image tankrightshoot; 43 Image tankright; 44 Image tankup2; 45 Image tankupshoot2; 46 Image tankupshoot; 47 Image tankup; 48 Image enemyImage; 49 Image personImage; 50 Image pitImage; 51 52 private Image explosion1, explosion2, explosion3; 53 MediaTracker mt = null; 54 55 public TankArea(Tank parent) { 56 myApplet = parent; 57 enemyImage = load(myApplet, "bad-tank-up.gif"); 58 personImage = load(myApplet, "tank-up.gif"); 59 pitImage = load(myApplet, "pit.gif"); 60 explosion1 = load(myApplet, "explosion1.gif"); 61 explosion2 = load(myApplet, "explosion2.gif"); 62 explosion3 = load(myApplet, "explosion3.gif"); 63 badtankdown2 = load(myApplet, "bad-tank-down-2.gif"); 64 badtankdownshoot = load(myApplet, "bad-tank-down-shoot.gif"); 65 badtankdownshoot2 = load(myApplet, "bad-tank-down-shoot-2.gif"); 66 badtankdown = load(myApplet, "bad-tank-down.gif"); 67 badtankleft2 = load(myApplet, "bad-tank-left-2.gif"); 68 badtankleftshoot2 = load(myApplet, "bad-tank-left-shoot-2.gif"); 69 badtankleftshoot = load(myApplet, "bad-tank-left-shoot.gif"); 70 badtankleft = load(myApplet, "bad-tank-left.gif"); 71 badtankright2 = load(myApplet, "bad-tank-right-2.gif"); 72 badtankrightshoot2 = load(myApplet, "bad-tank-right-shoot-2.gif"); 73 badtankrightshoot = load(myApplet, "bad-tank-right-shoot.gif"); 74 badtankright = load(myApplet, "bad-tank-right.gif"); 75 badtankup2 = load(myApplet, "bad-tank-up-2.gif"); 76 badtankupshoot2 = load(myApplet, "bad-tank-up-shoot-2.gif"); 77 badtankupshoot = load(myApplet, "bad-tank-up-shoot.gif"); 78 badtankup = load(myApplet, "bad-tank-up.gif"); 79 tankdown2 = load(myApplet, "tank-down-2.gif"); 80 tankdownshoot2 = load(myApplet, "tank-down-shoot-2.gif"); 81 tankdownshoot = load(myApplet, "tank-down-shoot.gif"); 82 tankdown = load(myApplet, "tank-down.gif"); 83 tankleft2 = load(myApplet, "tank-left-2.gif"); 84 tankleftshoot2 = load(myApplet, "tank-left-shoot-2.gif"); 85 tankleftshoot = load(myApplet, "tank-left-shoot.gif"); 86 tankleft = load(myApplet, "tank-left.gif"); 87 tankright2 = load(myApplet, "tank-right-2.gif"); 88 tankrightshoot2 = load(myApplet, "tank-right-shoot-2.gif"); 89 tankrightshoot = load(myApplet, "tank-right-shoot.gif"); 90 tankright = load(myApplet, "tank-right.gif"); 91 tankup2 = load(myApplet, "tank-up-2.gif"); 92 tankupshoot2 = load(myApplet, "tank-up-shoot-2.gif"); 93 tankupshoot = load(myApplet, "tank-up-shoot.gif"); 94 tankup = load(myApplet, "tank-up.gif"); 95 } 96 97 Image load(Tank parent, String picture) { 98 try { 99 Image im = ImageIO.read(new File("../Assets/" + picture)); 100 checkImage(im, picture); 101 return (im); 102 } catch (IOException e) { 103 // TODO Auto-generated catch block 104 e.printStackTrace(); 105 System.out.println("Image Not found: " + picture); 106 } 107 return null; 108 } 109 110 void checkImage(Image image, String name) { 111 if (mt != null) { 112 mt.addImage(image, 0); 113 try { 114 mt.waitForID(0, 5000); 115 } catch (InterruptedException ie) { 116 // nothing to do 117 } 118 if (mt.isErrorID(0)) 119 System.out.println("Image Not found: " + name.toString()); 120 } 121 } 122 123 @Override 124 public void paintComponent(Graphics g) { 125 super.paintComponent(g); 126 if (myApplet == null) 127 return; 128 final int w = getBounds().width; 129 final int h = getBounds().height; 130 g.setColor(Color.gray); 131 g.fillRect(0, 0, w, h); 132 g.setColor(Color.black); 133 134 if (Tank.playerPosition != null) { 135 // show the player 136 // g.drawString("#", myApplet.playerPosition.x, myApplet.playerPosition.y); 137 int elem = myApplet.shooting ? Tank.SHOOTING : Tank.NOTSHOOTING; 138 g.drawImage(myApplet.goodImages[myApplet.goodImageNo][elem], Tank.playerPosition.x, 139 Tank.playerPosition.y, Color.gray, null); 140 141 // show the pits 142 for (int i = 0; i < Tank.pitPositions.length; i++) { 143 g.drawImage(pitImage, Tank.pitPositions[i].x, Tank.pitPositions[i].y, Color.gray, null); 144 } 145 146 // show the enemies 147 for (int i = 0; i < Tank.enemyPositions.length; i++) { 148 if (Tank.enemyPositions[i].x > -1) { 149 int eelem = myApplet.enemyShooting[i] ? Tank.SHOOTING : Tank.NOTSHOOTING; 150 g.drawImage(myApplet.badImages[myApplet.enemyImageNo[i]][eelem], Tank.enemyPositions[i].x, 151 Tank.enemyPositions[i].y, null); 152 } 153 } 154 if (myApplet.explosionx != -1) { 155 g.drawImage(explosion1, myApplet.explosionx, myApplet.explosiony, Color.gray, null); 156 try { 157 Thread.sleep(80); 158 g.drawImage(explosion2, myApplet.explosionx, myApplet.explosiony, Color.gray, null); 159 Thread.sleep(80); 160 g.drawImage(explosion3, myApplet.explosionx, myApplet.explosiony, Color.gray, null); 161 } catch (Exception e) { 162 } 163 myApplet.explosionx = -1; 164 myApplet.explosiony = -1; 165 } 166 } 167 } 168 }