백엔드 개발 PHP 튜토리얼 탱크 전투 데모

탱크 전투 데모

Jul 25, 2016 am 09:08 AM

기본 기능이 구현되었습니다.... 로컬 탱크의 경로 탐색이 상대적으로 약합니다. 각 탱크는 동시에 최대 5발을 발사할 수 있습니다.... 적은 세 가지 유형의 병력을 가지고 있으며 메뉴 표시줄이 응답하지 않습니다. . 이것은 매우 간단합니다. 필요한 경우 직접 추가하세요. 학습 참조용으로만 모든 코드를 업로드하세요. 탱크 전투 데모
  1. package.tank.common;
  2. 추상 공용 클래스 Bullet은 Runnable, Common을 구현합니다. {
  3. private int x, y;
  4. private int speed;
  5. 개인 int 방향;
  6. 개인 부울 살아있음;
  7. 보호된 int 전력;
  8. public Bullet(int x, int y, int 속도, int 방향) {
  9. this.x = x;
  10. this.y = y;
  11. this.speed = 속도;
  12. this.direction = 방향;
  13. Alive = true;
  14. }
  15. public void die() {
  16. 살아있는 = false;
  17. }
  18. public int getPower() {
  19. return power;
  20. }
  21. public int getX() {
  22. return x ;
  23. }
  24. public int getY() {
  25. return y;
  26. }
  27. public boolean isAlive() {
  28. return Alive;
  29. }
  30. public void run() {
  31. while (true) {
  32. try {
  33. Thread.sleep(15);
  34. } catch (InterruptedException e) {
  35. // TODO 자동 생성된 캐치 블록
  36. e.printStackTrace();
  37. }
  38. 스위치(방향) {
  39. 케이스 UP:
  40. y -= 속도;
  41. 중단;
  42. 케이스 DOWN :
  43. y = 속도;
  44. 중단;
  45. 사례 RIGHT:
  46. x = 속도;
  47. 중단;
  48. 사례 LEFT:
  49. x -= 속도;
  50. 중단;
  51. }
  52. if (x WIDTH || y > HEIGHT || y Alive = false;
  53. return;
  54. }
  55. }
  56. }
  57. }
코드 복사
  1. 패키지 Tank.common;
  2. 공용 인터페이스 공통 {
  3. public static final int UP = 0;
  4. public static final int DOWN = 1;
  5. public static final int RIGHT = 2;
  6. public static final int LEFT = 3;
  7. public static final int WIDTH = 600;
  8. public static final int HEIGHT = 400;
  9. public static final int WATER = 0;
  10. public static final int WALLS = 1;
  11. public static final int STEELS = 2;
  12. public static final int GRASS = 3;
  13. }
코드 복사
  1. package.tank.common;
  2. import java.awt.Color;
  3. import java.awt.Point;
  4. 공개 추상 클래스 EnemyTank extends Tank {
  5. private class AutoFire Implements Runnable {
  6. @Override
  7. public void run() {
  8. // TODO 자동 생성 메서드 스텁
  9. while (isAlive()) {
  10. try {
  11. Thread.sleep(500);
  12. } catch (InterruptedException e) {
  13. // TODO 자동 생성된 catch 블록
  14. e.printStackTrace();
  15. }
  16. if (Math.random() > ShotKey) {
  17. Shot();
  18. }
  19. }
  20. }
  21. }
  22. 비공개 클래스 AutoMove 구현 Runnable {
  23. @Override
  24. public void run() {
  25. // TODO 자동 생성 메서드 스텁
  26. int move[] = new int[4];
  27. while (isAlive()) {
  28. try {
  29. Thread.sleep(110);
  30. } catch (InterruptedException e) {
  31. // TODO 자동 생성된 catch 블록
  32. e.printStackTrace( );
  33. }
  34. for (int i = 0; i < 4; i) {
  35. 이동[i] = JudgeHero(i);
  36. }
  37. int 방향 = 0;
  38. int max = Integer.MIN_VALUE;
  39. for (int i = 0; 나는 < 4; i) {
  40. if (이동[i] >= max) {
  41. max = 이동[i];
  42. 방향 = i;
  43. }
  44. }
  45. 이동(방향) ;
  46. }
  47. }
  48. }
  49. 개인 더블 샷키;
  50. 개인 포인트 영웅 위치;
  51. 개인 탱크 영웅;
  52. public EnemyTank(int x, int y, Tank Hero, int life, int ID) {
  53. super(x, y, Color.yan);
  54. this.lifes = life;
  55. this.hero = Hero;
  56. super.setImageID(ID);
  57. }
  58. private int JudgeHero(int 방향) {
  59. HeroPosition = new Point(hero.getX() 9, Hero.getY( ) 9);
  60. int 결과 = 0;
  61. int x = this.getX();
  62. int y = this.getY();
  63. int speed = this.getSpeed();
  64. double distance1 = Math.abs((this.getX() - HeroPosition.x)
  65. * (this.getX() - HeroPosition.x)
  66. (this.getY() - HeroPosition.y)
  67. * (this.getY() - HeroPosition.y));
  68. 스위치(방향) {
  69. 케이스 UP:
  70. y -= 속도;
  71. 브레이크;
  72. 케이스 DOWN:
  73. y = 속도;
  74. 중단;
  75. 사례 RIGHT:
  76. x = 속도;
  77. 중단;
  78. 사례 LEFT:
  79. x -= 속도;
  80. 중단;
  81. }
  82. if (getDirection() == 방향) {
  83. 결과 = 5000;
  84. }
  85. if (!canMove(x, y)) {
  86. 결과 -= Integer.MAX_VALUE;
  87. }
  88. double distance2 = Math.abs((x - HeroPosition.x) * (x - HeroPosition.x)
  89. (y - HeroPosition.y) * (y - HeroPosition.y)) ;
  90. if (Math.random() > 0.8) {
  91. 결과 = Math.random() * 20000;
  92. }
  93. 결과 = (거리1 - 거리2) * 10;
  94. 결과 반환;
  95. }
  96. 공개 void setPosition(int x, int y) {
  97. super.x = x;
  98. super.y = y;
  99. }
  100. public void setShotSpeed(double ShotSpeed) {
  101. this .shotKey = ShotSpeed;
  102. }
  103. public void startFire() {
  104. new Thread(new AutoFire()).start();
  105. }
  106. public void startMove () {
  107. new Thread(new AutoMove()).start();
  108. }
  109. }
复system代码
  1. package.common;
  2. import java.awt.Color;
  3. import java.util.ArrayList;
  4. import Tank.entity .NormalBullet;
  5. public 추상 클래스 탱크 구현 Common {
  6. protected int x;
  7. protected int y;
  8. private Color color;
  9. private int 속도;
  10. private int 방향;
  11. private ArrayList<Bullet> bullets;
  12. private ArrayList<Tank> 탱크;
  13. 개인 총알 총알;
  14. 개인 int maxBulletNum;
  15. 개인 부울 살아 있음;
  16. 보호된 int 생명;
  17. ArrayList< 벽> wall;
  18. private int TankImageID;
  19. {
  20. 속도 = 2;
  21. 방향 = UP;
  22. 살아있는 = true;
  23. }
  24. public Tank() {
  25. this.x = 0;
  26. this.y = 0;
  27. color = Color.black;
  28. }
  29. public Tank(int x, int y , Color color) {
  30. this.x = x;
  31. this.y = y;
  32. this.color = color;
  33. maxBulletNum = 5;
  34. bullets = new ArrayList<Bullet>( );
  35. wall = new ArrayList();
  36. }
  37. protected boolean canMove(int x, int y) {
  38. if (x < 0 || x > WIDTH - 20 || y < 0 || y > HEIGHT - 20) {
  39. return false;
  40. }
  41. if (tanks == null) {
  42. true 반환 🎜> }
  43. if (tanks.size() == 1) {
  44. return true;
  45. }
  46. for (int i = 0; i < wall.size (); i) {
  47. Wall tempWall = walls.get(i);
  48. if (tempWall.isAlive()) {
  49. if (x >= tempWall.getX() && y >= tempWall.getY()) {
  50. if (x <= tempWall.getX() 20 && y <= tempWall.getY() 20) {
  51. return tempWall.canBeWalk();
  52. }
  53. } else if (x >= tempWall.getX() && y <= tempWall.getY()) {
  54. if (x <= tempWall.getX() 20
  55. && (y 20) >= tempWall.getY()) {
  56. return tempWall.canBeWalk();
  57. }
  58. } else if (x <= tempWall.getX() && y >= tempWall.getY() ) {
  59. if ((x 20) >= tempWall.getX()
  60. && y <= tempWall.getY() 20) {
  61. return tempWall.canBeWalk();
  62. }
  63. } else if (x <= tempWall.getX() && y <= tempWall.getY()) {
  64. if ((x 20) >= tempWall.getX()
  65. && (y 20) >= tempWall.getY()) {
  66. return tempWall.canBeWalk();
  67. }
  68. }
  69. }
  70. }
  71. for (int i = 0 ; 나는 < 탱크.크기(); i) {
  72. 탱크 tempTank = Tanks.get(i);
  73. if (tempTank == this)
  74. break;
  75. if (tempTank.isAlive()) {
  76. if (x > ;= tempTank.getX() && y >= tempTank.getY()) {
  77. if (x <= tempTank.getX() 20 && y <= tempTank.getY() 20) {
  78. return false;
  79. }
  80. } else if (x >= tempTank.getX() && y <= tempTank.getY()) {
  81. if (x <= tempTank.getX() 20
  82. && (y 20) >= tempTank.getY()) {
  83. return false;
  84. }
  85. } else if (x <= tempTank.getX() && y >= tempTank .getY()) {
  86. if ((x 20) >= tempTank.getX()
  87. && y <= tempTank.getY() 20) {
  88. return false;
  89. }
  90. } else if (x <= tempTank.getX() && y <= tempTank.getY()) {
  91. if ((x 20) >= tempTank.getX()
  92. && (y 20) >= tempTank.getY()) {
  93. false 반환;
  94. }
  95. }
  96. }
  97. }
  98. true 반환;
  99. }
  100. public void Damage(int power) {
  101. lifes -= power;
  102. if (lifes <= 0) {
  103. Alive = false;
  104. }
  105. }
  106. public 배열목록 getBullet() {
  107. 글머리 기호 반환;
  108. }
  109. public Color getColor() {
  110. 반환 색상;
  111. }
  112. public int getDirection() {
  113. 복귀 방향;
  114. }
  115. public int getImageID() {
  116. return TankImageID;
  117. }
  118. public int getSpeed() {
  119. 복귀 속도;
  120. }
  121. 공개 ArrayList<Wall> getWalls() {
  122. return this.walls;
  123. }
  124. public int getX() {
  125. return x;
  126. }
  127. public int getY() {
  128. return y;
  129. }
  130. public boolean isAlive() {
  131. return Alive;
  132. }
  133. public void move(int 방향) {
  134. setDirection (방향);
  135. int x = this.x;
  136. int y = this.y;
  137. 스위치(방향) {
  138. case UP:
  139. y -= 속도;
  140. break ;
  141. 케이스 DOWN:
  142. y = 속도;
  143. 중단;
  144. 케이스 RIGHT:
  145. x = 속도;
  146. 중단;
  147. 케이스 LEFT:
  148. x -= 속도 ;
  149. break;
  150. }
  151. if (canMove(x, y)) {
  152. this.x = x;
  153. this.y = y;
  154. }
  155. }
  156. public void setAllTanks(ArrayList<Tank> 탱크) {
  157. this.tanks = 탱크;
  158. }
  159. public void setDirection(int 방향) {
  160. this.direction = 방향;
  161. }
  162. final protected void setImageID(int ID) {
  163. this.tankImageID = ID;
  164. }
  165. public void setSpeed(int speed) {
  166. this.speed = speed ;
  167. }
  168. public void setWalls(ArrayList<Wall> wallList) {
  169. this.walls = wallList;
  170. }
  171. public void Shot() {
  172. 스위치(방향) {
  173. 케이스 UP:
  174. bullet = new NormalBullet(x 10, y, UP);
  175. break;
  176. 케이스 DOWN:
  177. bullet = new NormalBullet(x 10, y 20, DOWN);
  178. break;
  179. case RIGHT:
  180. bullet = new NormalBullet(x 20, y 10, RIGHT);
  181. break;
  182. case LEFT:
  183. bullet = new NormalBullet(x, y 10, LEFT);
  184. break;
  185. }
  186. for (int i = 0; i < bullets.size(); i) {
  187. Bullet temp = bullets.get (i);
  188. if (!temp.isAlive()) {
  189. bullets.remove(temp);
  190. }
  191. }
  192. if (bullets.size() >= maxBulletNum) {
  193. } else {
  194. new Thread(bullet).start();
  195. bullets.add(bullet);
  196. }
  197. }
  198. }
复代码
  1. package Tank.common;
  2. public abstract class Wall {
  3. private int x, y;
  4. private int wallImageID;
  5. private boolean canWalk;
  6. private boolean canFly;
  7. private boolean living;
  8. private boolean canHit;
  9. public Wall(int x, int y, int ID, 부울 워크, 부울 플라이, 부울 히트) {
  10. this.x = x;
  11. this.y = y;
  12. this.wallImageID = ID;
  13. this.canWalk = 걷기 ;
  14. this.canFly = fly;
  15. this.alive = true;
  16. this.canHit = Hit;
  17. }
  18. public boolean canBeFly() {
  19. return canFly;
  20. }
  21. public boolean canBeHit() {
  22. return this.canHit;
  23. }
  24. public boolean canBeWalk() {
  25. return canWalk;
  26. }
  27. public void die() {
  28. Alive = false;
  29. }
  30. public int getImageID() {
  31. return wallImageID;
  32. }
  33. public int getX() {
  34. return x;
  35. }
  36. public int getY() {
  37. return y;
  38. }
  39. public boolean isAlive() {
  40. 살아서 돌아옴;
  41. }
  42. }
复代码
  1. package.entity;
  2. public class Bomb {
  3. private int x;
  4. private int y;
  5. private int life = 9;
  6. private boolean live;
  7. public Bomb(int x, int y) {
  8. this.x = x;
  9. this.y = y;
  10. Alive = true;
  11. }
  12. public void decrese() {
  13. if (life > 0) {
  14. life--;
  15. } else {
  16. Alive = false ;
  17. }
  18. }
  19. public int getLife() {
  20. return life;
  21. }
  22. public int getX() {
  23. return x;
  24. }
  25. public int getY() {
  26. return y;
  27. }
  28. public boolean isAlive() {
  29. return Alive;
  30. }
  31. }
复主代码
  1. package.entity;
  2. import Tank.common.EnemyTank;
  3. import Tank.common.Tank;
  4. 공개 클래스 EnemyTank1 확장 EnemyTank {
  5. public EnemyTank1(int x, int y, Tank Hero) {
  6. super(x, y, Hero, 3, 1);
  7. setSpeed(2);
  8. setShotSpeed( 0.8);
  9. }
  10. }
复代码
  1. package.entity;
  2. import Tank.common.EnemyTank;
  3. import Tank.common.Tank;
  4. 공개 클래스 EnemyTank2 확장 EnemyTank {
  5. public EnemyTank2(int x, int y, Tank Hero) {
  6. super(x, y, Hero, 5, 2);
  7. setSpeed(3);
  8. setShotSpeed(0.5);
  9. }
  10. }
复제대码
  1. package.entity;
  2. import Tank.common.EnemyTank;
  3. import Tank.common.Tank;
  4. 공개 클래스 EnemyTank3 확장 EnemyTank {
  5. public EnemyTank3(int x, int y, Tank Hero) {
  6. super(x, y, Hero, 10, 3);
  7. setSpeed(5);
  8. setShotSpeed(0.2);
  9. }
  10. }
复제대码
  1. package Tank.entity;
  2. import Tank.common.Wall;
  3. public 클래스 Grass 확장 Wall {
  4. public Grass(int x , int y) {
  5. super(x, y, 3, true, true, false);
  6. }
  7. }
复system代码
  1. package.entity;
  2. import java.awt.Color;
  3. import Tank.common.Tank;
  4. 공개 class MyTank 확장 탱크 {
  5. public MyTank(int x, int y) {
  6. super(x, y, Color.yellow);
  7. lifes = 5;
  8. super.setImageID(0);
  9. }
  10. public int getLife() {
  11. return lifes;
  12. }
  13. }
复主代码
  1. package Tank.entity;
  2. import Tank.common.Bullet;
  3. public class NormalBullet은 Bullet을 확장합니다. {
  4. public NormalBullet (int x, int y, int 방향) {
  5. super(x, y, 2, 방향);
  6. power = 1;
  7. }
  8. }
제제대码
  1. package.entity;
  2. import java.util.ArrayList;
  3. import Tank.common.EnemyTank;
  4. 공개 class Stage {
  5. private int totalEnemyNum;
  6. private int LeaveEnemyNum;
  7. private int totalHeroLife;
  8. private int LeaveHeroLife;
  9. private int level;
  10. private WallContainer wallContainer;
  11. private ArrayList&lt ;적탱크> enemeyTanks;
  12. private int activeEnemyTankNum;
  13. private EnemyTank activeEnemyTanks[];
  14. private MyTank Hero;
  15. public Stage(int totalEnemyNum, int totalHeroLife, int level,
  16. int activeEnemyTankNum) {
  17. this.totalEnemyNum = totalEnemyNum;
  18. this.totalHeroLife = totalHeroLife;
  19. this.level = level;
  20. this.activeEnemyTankNum = activeEnemyTankNum;
  21. this.leaveEnemyNum = this.totalEnemyNum;
  22. this.leaveHeroLife = this.totalHeroLife;
  23. this.enemeyTanks = new ArrayList<EnemyTank>();
  24. this.activeEnemyTanks = new EnemyTank[this.activeEnemyTankNum];
  25. this.hero = new MyTank(290, 370);
  26. this.wallContainer = new WallContainer();
  27. }
  28. public void addEnemyTank(EnemyTank 탱크) {
  29. enemeyTanks.add(tank);
  30. }
  31. public void autoCreateEnemyTank() {
  32. for (int i = 0; i < totalEnemyNum; i) {
  33. double key = Math.random();
  34. if (key <= 0.33) {
  35. this.enemeyTanks.add(new EnemyTank1(0, 0, 영웅));
  36. } else if (key >= 0.66) {
  37. this.enemeyTanks.add(new EnemyTank2(0, 0 , 영웅));
  38. } else {
  39. this.enemeyTanks.add(new EnemyTank3(0, 0, 영웅));
  40. }
  41. }
  42. }
  43. 공개 int getActiveEnemyTankNum() {
  44. return this.activeEnemyTankNum;
  45. }
  46. public EnemyTank[] getEnemyTank() {
  47. return this.activeEnemyTanks;
  48. }
  49. 공개 MyTank getHeroTank() {
  50. return this.hero;
  51. }
  52. public int getLeaveEnemyNum() {
  53. return this.leaveEnemyNum;
  54. }
  55. public int getLeaveHeroLife () {
  56. return this.leaveHeroLife;
  57. }
  58. public int getLevel() {
  59. return this.level;
  60. }
  61. public WallContainer getWallContainer() {
  62. return this.wallContainer;
  63. }
  64. public boolean isHeroDead() {
  65. if (this.leaveHeroLife <= 0) {
  66. return true;
  67. } else
  68. false 반환;
  69. }
  70. public EnemyTank popEnemyTank() {
  71. if (leaveEnemyNum > 0) {
  72. this.leaveEnemyNum--;
  73. EnemyTank temp = enemeyTanks.get(enemeyTanks.size() - 1);
  74. enemeyTanks.remove(temp);
  75. return temp;
  76. } else
  77. return null;
  78. }
  79. public MyTank popHero() {
  80. LeaveHeroLife--;
  81. MyTank temp = new MyTank(290, 370);
  82. temp. setWalls(wallContainer.getWallList());
  83. return temp;
  84. }
  85. public void setHeroTank(MyTank 탱크) {
  86. this.hero = 탱크;
  87. }
  88. }
复代码
  1. 패키지 탱크.entity;
  2. import Tank.common.Wall;
  3. public 클래스 Steels 확장 Wall {
  4. public Steels(int x , int y) {
  5. super(x, y, 2, false, false, false);
  6. }
  7. }
复system代码
  1. package.entity;
  2. import java.util.ArrayList;
  3. import Tank.common.Common;
  4. import Tank.common .Wall;
  5. 공용 클래스 WallContainer는 Common {
  6. private ArrayList을 구현합니다. data;
  7. public WallContainer() {
  8. data = new ArrayList<Wall>();
  9. for (int i = 0; i < 28; i) {
  10. this.addWall (10 i * 20, 100, WATER);
  11. if (i == 11) {
  12. i = 4;
  13. }
  14. }
  15. for (int i = 0; i < 28; i) {
  16. this.addWall(10 i * 20, 160, WALLS);
  17. if (i == 12) {
  18. i = 4;
  19. }
  20. }
  21. for (int i = 0; i < 28; i) {
  22. this.addWall(10 i * 20, 220, STEELS);
  23. if (i == 11) {
  24. i = 4;
  25. }
  26. }
  27. for (int i = 0; i this.addWall(10 i * 20, 280, GRASS);
  28. if (i == 12) {
  29. i = 4;
  30. }
  31. }
  32. }
  33. public void addWall(int x, int y, int 종류) {
  34. 스위치(종류) {
  35. 케이스 WATER:
  36. data.add(new Water(x, y));
  37. break;
  38. 케이스 WALLS:
  39. data.add (new Walls(x, y));
  40. break;
  41. case STEELS:
  42. data.add(new Steels(x, y));
  43. break;
  44. case GRASS:
  45. data.add(new Grass(x, y));
  46. break;
  47. }
  48. }
  49. public ArrayList<Wall> getWallList() {
  50. ArrayList<Wall> temp = data;
  51. return temp;
  52. }
  53. public boolean isEmpty() {
  54. return data.isEmpty();
  55. }
  56. public void RemoveDead( ) {
  57. for (int i = 0; i < data.size(); i) {
  58. Wall temp = data.get(i);
  59. if (!temp.isAlive())
  60. data.remove(temp);
  61. }
  62. }
  63. }
复代码
  1. package.tank.entity;
  2. import Tank.common.Wall;
  3. public 클래스 Walls는 Wall을 확장합니다. {
  4. public Walls(int x , int y) {
  5. super(x, y, 1, false, false, true);
  6. }
  7. }
复system代码
  1. 패키지 Tank.entity;
  2. import Tank.common.Wall;
  3. public class Water 확장 Wall {
  4. public Water(int x , int y) {
  5. super(x, y, 0, false, true, false);
  6. }
  7. }
复system代码
  1. 탱크.gui 패키지;
  2. import javax.swing.JFrame;
  3. import javax.swing.JMenu;
  4. import javax.swing.JMenuBar;
  5. import javax.swing.JMenuItem;
  6. 공용 클래스 TankFrame은 JFrame을 확장합니다. {
  7. /**
  8. *
  9. */
  10. private static final long serialVersionUID = 1L;
  11. private TankPanel gamePanel;
  12. public TankFrame() {
  13. super("坦克大战————玄雨제작");
  14. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  15. //添加游戏主面板
  16. gamePanel = new TankPanel();
  17. this.add(gamePanel);
  18. gamePanel.addMouseListener(gamePanel);
  19. this.addKeyListener(gamePanel);
  20. // 添加菜单栏
  21. JMenuBar menuBar = new JMenuBar();
  22. // ///////////////////////////// //
  23. JMenu menu1 = new JMenu("菜单");
  24. menuBar.add(menu1);
  25. JMenuItem itemNewGame = new JMenuItem("新游戏");
  26. menu1.add(itemNewGame) ;
  27. menu1.addSeparator();
  28. JMenuItem itemList = new JMenuItem("排行榜");
  29. menu1.add(itemList);
  30. menu1.addSeparator();
  31. JMenuItem itemExit = new JMenuItem("退출");
  32. menu1.add(itemExit);
  33. //////////////////////////// ///////
  34. JMenu menu2 = new JMenu("设置");
  35. JMenuItem itemSet = new JMenuItem("设置");
  36. menu2.add(itemSet);
  37. menuBar. add(menu2);
  38. // /////////////////////////////////
  39. JMenu 메뉴3 = 신규 JMenu("帮助");
  40. menuBar.add(menu3);
  41. JMenuItem itemInfo = new JMenuItem("关于");
  42. menu3.add(itemInfo);
  43. JMenuItem itemHelp = new JMenuItem( "帮助");
  44. menu3.add(itemHelp);
  45. this.setJMenuBar(menuBar);
  46. this.setRessible(false);
  47. this.pack();
  48. this.setVisible(true);
  49. }
  50. }
复代码
  1. package.tank.start;
  2. import Tank.gui.TankFrame;
  3. public class TankStart {
  4. /**
  5. * @param args
  6. */
  7. public static void main(String[] args) {
  8. // TODO 자동 생성 메서드 스텁
  9. new TankFrame().setLocation(250, 150);
  10. }
  11. }
复代码


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄) 11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄) Mar 03, 2025 am 10:49 AM

11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄)

Instagram API 소개 Instagram API 소개 Mar 02, 2025 am 09:32 AM

Instagram API 소개

Laravel의 플래시 세션 데이터로 작업합니다 Laravel의 플래시 세션 데이터로 작업합니다 Mar 12, 2025 pm 05:08 PM

Laravel의 플래시 세션 데이터로 작업합니다

Laravel Back End : Part 2, React가있는 React 앱 구축 Laravel Back End : Part 2, React가있는 React 앱 구축 Mar 04, 2025 am 09:33 AM

Laravel Back End : Part 2, React가있는 React 앱 구축

Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Mar 12, 2025 pm 05:09 PM

Laravel 테스트에서 단순화 된 HTTP 응답 조롱

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 Mar 14, 2025 am 11:42 AM

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법

Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Mar 13, 2025 pm 12:08 PM

Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트

라 라벨에서 알림 라 라벨에서 알림 Mar 04, 2025 am 09:22 AM

라 라벨에서 알림

See all articles