diff --git a/docs/坦克大战笔记.docx b/docs/坦克大战笔记.docx index d8fa2c4..c958764 100644 Binary files a/docs/坦克大战笔记.docx and b/docs/坦克大战笔记.docx differ diff --git a/src/com/demo/tank/course3/Bullet.java b/src/com/demo/tank/course3/Bullet.java index 70f708f..6f1f7d4 100644 --- a/src/com/demo/tank/course3/Bullet.java +++ b/src/com/demo/tank/course3/Bullet.java @@ -6,8 +6,8 @@ public class Bullet { private int x, y; private Direction direction; private static final int SPEED = 5; - private static final int WIDTH = 20; - private static final int HEIGHT = 20; + public static final int WIDTH = ResourceManager.bulletD.getWidth(); + public static final int HEIGHT = ResourceManager.bulletD.getHeight(); private boolean live = true; private TankFrameV3 tf; @@ -22,10 +22,20 @@ public class Bullet { if(!live){ tf.bullets.remove(this); } - Color color = g.getColor(); - g.setColor(Color.RED); - g.fillOval(x, y, WIDTH, HEIGHT); - g.setColor(color); + switch (direction){ + case UP: + g.drawImage(ResourceManager.bulletU, x, y, null); + break; + case DOWN: + g.drawImage(ResourceManager.bulletD, x, y, null); + break; + case LEFT: + g.drawImage(ResourceManager.bulletL, x, y, null); + break; + case RIGHT: + g.drawImage(ResourceManager.bulletR, x, y, null); + break; + } move(); } diff --git a/src/com/demo/tank/course3/ResourceManager.java b/src/com/demo/tank/course3/ResourceManager.java index db7228d..e981221 100644 --- a/src/com/demo/tank/course3/ResourceManager.java +++ b/src/com/demo/tank/course3/ResourceManager.java @@ -6,6 +6,7 @@ import java.io.IOException; public class ResourceManager { public static BufferedImage tankL, tankR, tankU, tankD; + public static BufferedImage bulletL, bulletR, bulletU, bulletD; static { try { @@ -13,6 +14,11 @@ public class ResourceManager { tankR = ImageIO.read(ResourceManager.class.getClassLoader().getResourceAsStream("com/demo/tank/images/tankR.gif")); tankU = ImageIO.read(ResourceManager.class.getClassLoader().getResourceAsStream("com/demo/tank/images/tankU.gif")); tankD = ImageIO.read(ResourceManager.class.getClassLoader().getResourceAsStream("com/demo/tank/images/tankD.gif")); + + bulletL = ImageIO.read(ResourceManager.class.getClassLoader().getResourceAsStream("com/demo/tank/images/bulletL.gif")); + bulletR = ImageIO.read(ResourceManager.class.getClassLoader().getResourceAsStream("com/demo/tank/images/bulletR.gif")); + bulletU = ImageIO.read(ResourceManager.class.getClassLoader().getResourceAsStream("com/demo/tank/images/bulletU.gif")); + bulletD = ImageIO.read(ResourceManager.class.getClassLoader().getResourceAsStream("com/demo/tank/images/bulletD.gif")); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/com/demo/tank/course3/Tank.java b/src/com/demo/tank/course3/Tank.java index 6db57e1..7ba28b3 100644 --- a/src/com/demo/tank/course3/Tank.java +++ b/src/com/demo/tank/course3/Tank.java @@ -8,6 +8,8 @@ public class Tank { private static final int SPEED = 10; private boolean moving; private TankFrameV3 tankFrame; + public static final int WIDTH = ResourceManager.tankD.getWidth(); + public static final int HEIGHT = ResourceManager.tankD.getHeight(); public Tank(int x, int y, Direction dir, TankFrameV3 tankFrame) { @@ -86,6 +88,8 @@ public class Tank { } public void fire() { - tankFrame.bullets.add(new Bullet(x, y, this.dir, tankFrame)); + int bx = x + Tank.WIDTH/2 - Bullet.WIDTH/2; + int by = y + Tank.HEIGHT/2 - Bullet.HEIGHT/2; + tankFrame.bullets.add(new Bullet(bx, by, this.dir, tankFrame)); } }