day03-线程应用

打印 上一主题 下一主题

主题 856|帖子 856|积分 2568

JavaGUI-坦克大战03

7.线程的应用

7.1坦克子弹发射思路

纸上得来终觉浅,绝知此事要躬行。在学习了线程的基本知识之后,我们现在来实际运用一下。
在坦克大战2.0基础上添加如下功能:当玩家按一下 j 键,就发射一颗子弹。
思路:

  • 当发射一颗子弹后,就等于启动了一个线程
  • Hero类有子弹的对象,当按下 j 键时,我们就启动一个发射行为(线程),让子弹不停地移动,形成一个设计的效果
  • 我们的MyPanel需要不停地重绘,才能出现该效果
  • 当子弹移动到面板边界时,就应该销毁(把启动的子弹的线程销毁)
7.2我方发射子弹

1.创建子弹类Shot
要实现子弹不停地移动的效果,就要实现Runnable接口,创建线程,不停地改变子弹坐标
  1. package li.TankGame.version03;
  2. /**
  3. * @author 李
  4. * @version 3.0
  5. * 射击子弹
  6. */
  7. public class Shot implements Runnable {
  8.     int x; // 记录子弹 x 坐标
  9.     int y; // 记录子弹 y 坐标
  10.     int direct = 0; // 子弹方向
  11.     int speed = 2; // 子弹速度
  12.     boolean isLive = true;//记录子弹(线程)存活状态
  13.     //构造器
  14.     public Shot(int x, int y, int direct) {
  15.         this.x = x;
  16.         this.y = y;
  17.         this.direct = direct;
  18.     }
  19.     @Override
  20.     public void run() {//射击
  21.         while (true) {
  22.             //休眠50 毫秒
  23.             try {
  24.                 Thread.sleep(50);
  25.             } catch (InterruptedException e) {
  26.                 e.printStackTrace();
  27.             }
  28.             //根据方向来改变(x,y)坐标
  29.             switch (direct) {
  30.                 case 0://上
  31.                     y -= speed;
  32.                     break;
  33.                 case 1://右
  34.                     x += speed;
  35.                     break;
  36.                 case 2://下
  37.                     y += speed;
  38.                     break;
  39.                 case 3://左
  40.                     x -= speed;
  41.                     break;
  42.             }
  43.             //测试。输出坐标
  44.             System.out.println("x=" + x + "y=" + y);
  45.             //如果子弹移动到面板边界时,就应该销毁(把启动的子弹的线程销毁)
  46.             if (!(x >= 0 && x <= 700 && y <= 550 && y >= 0)) {//如果不符合条件
  47.                 System.out.println("子弹线程退出...");
  48.                 isLive = false;
  49.                 break;//线程退出
  50.             }
  51.         }
  52.     }
  53. }
复制代码
7.3.3坦克爆炸


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表