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

游戏

开发平台:

Java

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. public class Tank {
  4. public static final int XSPEED = 5;
  5. public static final int YSPEED = 5;
  6. private int x, y;
  7. private boolean bL=false, bU=false, bR=false, bD = false;
  8. enum Direction {L, LU, U, RU, R, RD, D, LD, STOP};
  9. private Direction dir = Direction.STOP;
  10. public Tank(int x, int y) {
  11. this.x = x;
  12. this.y = y;
  13. }
  14. public void draw(Graphics g) {
  15. Color c = g.getColor();
  16. g.setColor(Color.RED);
  17. g.fillOval(x, y, 30, 30);
  18. g.setColor(c);
  19. move();
  20. }
  21. void move() {
  22. switch(dir) {
  23. case L:
  24. x -= XSPEED;
  25. break;
  26. case LU:
  27. x -= XSPEED;
  28. y -= YSPEED;
  29. break;
  30. case U:
  31. y -= YSPEED;
  32. break;
  33. case RU:
  34. x += XSPEED;
  35. y -= YSPEED;
  36. break;
  37. case R:
  38. x += XSPEED;
  39. break;
  40. case RD:
  41. x += XSPEED;
  42. y += YSPEED;
  43. break;
  44. case D:
  45. y += YSPEED;
  46. break;
  47. case LD:
  48. x -= XSPEED;
  49. y += YSPEED;
  50. break;
  51. case STOP:
  52. break;
  53. }
  54. }
  55. public void keyPressed(KeyEvent e) {
  56. int key = e.getKeyCode();
  57. switch(key) {
  58. case KeyEvent.VK_LEFT :
  59. bL = true;
  60. break;
  61. case KeyEvent.VK_UP :
  62. bU = true;
  63. break;
  64. case KeyEvent.VK_RIGHT :
  65. bR = true;
  66. break;
  67. case KeyEvent.VK_DOWN :
  68. bD = true;
  69. break;
  70. }
  71. locateDirection();
  72. }
  73. void locateDirection() {
  74. if(bL && !bU && !bR && !bD) dir = Direction.L;
  75. else if(bL && bU && !bR && !bD) dir = Direction.LU;
  76. else if(!bL && bU && !bR && !bD) dir = Direction.U;
  77. else if(!bL && bU && bR && !bD) dir = Direction.RU;
  78. else if(!bL && !bU && bR && !bD) dir = Direction.R;
  79. else if(!bL && !bU && bR && bD) dir = Direction.RD;
  80. else if(!bL && !bU && !bR && bD) dir = Direction.D;
  81. else if(bL && !bU && !bR && bD) dir = Direction.LD;
  82. else if(!bL && !bU && !bR && !bD) dir = Direction.STOP;
  83. }
  84. }