Steelwall.java
上传用户:jhzhutan
上传日期:2021-03-28
资源大小:374k
文件大小:3k
源码类别:

射击游戏

开发平台:

Java

  1. import java.awt.*;
  2. public class Steelwall implements Actor{
  3. private int xPos;
  4. private int yPos;
  5. private Rectangle[] border = new Rectangle[4];
  6. public boolean[] shape = new boolean[4];
  7. public boolean walldestoried;
  8. public boolean bulletdestoried;
  9. public ServerModel gameModel;
  10. public Image steelWall;
  11. public Rectangle generalBorder;
  12. public Steelwall(int a, int b, ServerModel gameModel){
  13. this.gameModel = gameModel;
  14. steelWall = gameModel.textures[53];
  15. xPos = a;
  16. yPos = b;
  17. generalBorder = new Rectangle(xPos - 12, yPos - 12, 25, 25);
  18. border[0] = new Rectangle(xPos - 11, yPos - 11, 11, 11);
  19. border[1] = new Rectangle(xPos + 1, yPos - 11, 11, 11);
  20. border[2] = new Rectangle(xPos - 11, yPos + 1, 11, 11);
  21. border[3] = new Rectangle(xPos + 1, yPos + 1, 11, 11);
  22. }
  23. public Steelwall(int a, int b, int orientation, ServerModel gameModel){
  24. xPos = a;
  25. yPos = b;
  26. this.gameModel = gameModel;
  27. steelWall = gameModel.textures[53];
  28. generalBorder = new Rectangle(xPos - 12, yPos - 12, 25, 25);
  29. if(orientation == 0){
  30. border[0] = new Rectangle(xPos - 11, yPos - 11, 11, 11);
  31. border[1] = new Rectangle(xPos + 1, yPos - 11, 11, 11);
  32. shape[2] = true;
  33. shape[3] = true;
  34. }
  35. if(orientation == 1){
  36. border[2] = new Rectangle(xPos - 11, yPos + 1, 11, 11);
  37. border[3] = new Rectangle(xPos + 1, yPos + 1, 11, 11);
  38. shape[0] = true;
  39. shape[1] = true;
  40. }
  41. if(orientation == 2){
  42. border[0] = new Rectangle(xPos - 11, yPos - 11, 11, 11);
  43. border[2] = new Rectangle(xPos - 11, yPos + 1, 11, 11);
  44. shape[1] = true;
  45. shape[3] = true;
  46. }
  47. if(orientation == 3){
  48. border[1] = new Rectangle(xPos + 1, yPos - 11, 11, 11);
  49. border[3] = new Rectangle(xPos + 1, yPos + 1, 11, 11);
  50. shape[0] = true;
  51. shape[2] = true;
  52. }
  53. }
  54. public void damageWall(Rectangle bullet, int bulletpower, int bulletdirection){
  55. bulletdestoried = false;
  56. if(bulletpower == 2){
  57. for(int i = 0; i < 4; i++){
  58. if(border[i] != null){
  59. if(bullet.intersects(border[i])){
  60. bulletdestoried = true;
  61. border[i] = null;
  62. shape[i] = true;
  63. }
  64. }
  65. }
  66. }
  67. if(bulletpower == 1){
  68. for(int i = 0; i < 4; i++){
  69. if(border[i] != null){
  70. if(bullet.intersects(border[i]))
  71. bulletdestoried = true;
  72. }
  73. }
  74. }
  75. //write changes to the outputline
  76. gameModel.outputLine+="s" + xPos + ","+ yPos+",";
  77. for(int i = 0; i < shape.length; i++){
  78. if(shape[i])
  79. gameModel.outputLine+="1";
  80. else
  81. gameModel.outputLine+="0";
  82. }
  83. gameModel.outputLine+=";";
  84. }
  85. public boolean walldestoried(){
  86. if(walldestoried)
  87. return true;
  88. boolean walldestory = false;
  89. if(border[0] == null && border[1] == null && border[2] == null && border[3] == null)
  90. walldestory = true;
  91. return walldestory;
  92. }
  93. public Rectangle getBorder(){
  94. return generalBorder;
  95. }
  96. public Rectangle[] getDetailedBorder(){
  97. return border;
  98. }
  99. public void draw(Graphics g) {
  100. if(walldestoried)
  101. return;
  102. g.drawImage(steelWall, xPos - 12, yPos - 12, null);
  103. g.setColor(new Color(128, 64, 0));
  104. if(shape[0])
  105. g.fillRect(xPos - 12, yPos - 12, 13, 13);
  106. if(shape[1])
  107. g.fillRect(xPos, yPos - 12, 13, 13);
  108. if(shape[2])
  109. g.fillRect(xPos - 12, yPos, 13, 13);
  110. if(shape[3])
  111. g.fillRect(xPos, yPos, 13, 13);
  112. }
  113. public String getType(){
  114. return "steelWall";
  115. }
  116. //unused method
  117. public void move(){}
  118. }