Plane.java
上传用户:xueping400
上传日期:2022-02-08
资源大小:888k
文件大小:3k
源码类别:

Applet

开发平台:

Java

  1. import java.awt.Graphics;
  2. import java.awt.Image;
  3. import java.awt.event.KeyEvent;
  4. import java.io.File;
  5. import java.io.IOException;
  6. import java.util.HashMap;
  7. import javax.imageio.ImageIO;
  8. public class Plane extends MoveObject implements Fireable{
  9. private int x;
  10. private int y;
  11. private int width = 50;
  12. private int height = 50;
  13. private static Image image;
  14. private static String path = "src/image/plane.gif";
  15. private boolean isRDown;
  16. private boolean isLDown;
  17. private boolean isUDown;
  18. private boolean isDDown;
  19. private DIR dir;
  20. static{
  21. try {
  22. image = ImageIO.read(new File(path));
  23. } catch (IOException e) {
  24. e.printStackTrace();
  25. }
  26. }
  27. public Plane(){
  28. this.width = 50;
  29. this.height = 50;
  30. this.x = (PlaneFrame.WINDOW_WIDTH - this.width) / 2;
  31. this.y = (PlaneFrame.WINDOW_HEIGHT - this.height);
  32. }
  33. public void paint(Graphics g){
  34. g.drawImage(image, x , y , width , height,null);
  35. }
  36. public void keyPressed(int e) {
  37. switch (e) {
  38. case KeyEvent.VK_RIGHT:
  39. isRDown = true;
  40. break;
  41. case KeyEvent.VK_LEFT:
  42. isLDown = true;
  43. break;
  44. case KeyEvent.VK_UP:
  45. isUDown = true;
  46. break;
  47. case KeyEvent.VK_DOWN:
  48. isDDown = true;
  49. break;
  50. }
  51. makeDir();
  52. }
  53. public void keyRelease(int e){
  54. switch (e) {
  55. case KeyEvent.VK_RIGHT:
  56. isRDown = false;
  57. break;
  58. case KeyEvent.VK_LEFT:
  59. isLDown = false;
  60. break;
  61. case KeyEvent.VK_UP:
  62. isUDown = false;
  63. break;
  64. case KeyEvent.VK_DOWN:
  65. isDDown = false;
  66. break;
  67. }
  68. makeDir();
  69. }
  70. private void makeDir(){
  71. if(isLDown && !isRDown && !isUDown && !isDDown){
  72. dir = DIR.LT;
  73. }
  74. if(isLDown && isUDown && !isRDown && !isDDown){
  75. dir = DIR.LU;
  76. }
  77. if(isLDown && !isUDown && !isRDown && isDDown){
  78. dir = DIR.LD;
  79. }
  80. if(!isLDown && isUDown && !isRDown && !isDDown){
  81. dir = DIR.UP;
  82. }
  83. if(!isLDown && isUDown && isRDown && !isDDown){
  84. dir = DIR.RU;
  85. }
  86. if(!isLDown && !isUDown && isRDown && !isDDown){
  87. dir = DIR.RT;
  88. }
  89. if(!isLDown && !isUDown && isRDown && isDDown){
  90. dir = DIR.RD;
  91. }
  92. if(!isLDown && !isUDown && !isRDown && isDDown){
  93. dir = DIR.DN;
  94. }
  95. move(dir);
  96. }
  97. public void move(DIR dir){
  98. DirStep ds = hmDir.get(dir);
  99. int xx = x + 7 * ds.getXstep();
  100. int yy = y + 7 * ds.getYstep();
  101. if(xx >= 0 && xx <= PlaneFrame.WINDOW_WIDTH - this.width && yy >= 25 && yy <= PlaneFrame.WINDOW_HEIGHT - this.height){
  102. x = xx;
  103. y = yy;
  104. }
  105. }
  106. public void fire() {
  107. int sx = this.x + (this.width)/2 - 15;
  108. int sy = this.y - 25;
  109. Shell shell = new Shell(sx,sy,DIR.UP);
  110. PlaneFrame.shell.add(shell);
  111. }
  112. }