Missile.java
上传用户:kikomiki
上传日期:2021-10-31
资源大小:373k
文件大小:2k
源码类别:

游戏

开发平台:

Java

  1. import java.awt.*;
  2. public class Missile {
  3. public static final int XSPEED = 10;
  4. public static final int YSPEED = 10;
  5. public static final int WIDTH = 10;
  6. public static final int HEIGHT = 10;
  7. int x, y;
  8. Tank.Direction dir;
  9. private boolean live = true;
  10. private TankClient tc;
  11. public Missile(int x, int y, Tank.Direction dir) {
  12. this.x = x;
  13. this.y = y;
  14. this.dir = dir;
  15. }
  16. public Missile(int x, int y, Tank.Direction dir, TankClient tc) {
  17. this(x, y, dir);
  18. this.tc = tc;
  19. }
  20. public void draw(Graphics g) {
  21. if(!live) {
  22. tc.missiles.remove(this);
  23. return;
  24. }
  25. Color c = g.getColor();
  26. g.setColor(Color.BLACK);
  27. g.fillOval(x, y, WIDTH, HEIGHT);
  28. g.setColor(c);
  29. move();
  30. }
  31. private void move() {
  32. switch(dir) {
  33. case L:
  34. x -= XSPEED;
  35. break;
  36. case LU:
  37. x -= XSPEED;
  38. y -= YSPEED;
  39. break;
  40. case U:
  41. y -= YSPEED;
  42. break;
  43. case RU:
  44. x += XSPEED;
  45. y -= YSPEED;
  46. break;
  47. case R:
  48. x += XSPEED;
  49. break;
  50. case RD:
  51. x += XSPEED;
  52. y += YSPEED;
  53. break;
  54. case D:
  55. y += YSPEED;
  56. break;
  57. case LD:
  58. x -= XSPEED;
  59. y += YSPEED;
  60. break;
  61. case STOP:
  62. break;
  63. }
  64. if(x < 0 || y < 0 || x > TankClient.GAME_WIDTH || y > TankClient.GAME_HEIGHT) {
  65. live = false;
  66. }
  67. }
  68. public boolean isLive() {
  69. return live;
  70. }
  71. public Rectangle getRect() {
  72. return new Rectangle(x, y, WIDTH, HEIGHT);
  73. }
  74. public boolean hitTank(Tank t) {
  75. if(this.getRect().intersects(t.getRect()) && t.isLive()) {
  76. t.setLive(false);
  77. this.live = false;
  78. Explode e = new Explode(x, y, tc);
  79. tc.explodes.add(e);
  80. return true;
  81. }
  82. return false;
  83. }
  84. }