坦克游戏遇到的线程问题

该博客介绍了基于JDK 1.5开发的坦克游戏实现过程。坦克类实现RUNNABLE接口,继承JlABEL类,地图类GenerateMap也实现RUNNABLE接口。每个坦克为线程对象,与砖块循环比较判断转向。不过,坦克运行时会出现时快时慢的现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     我们的坦克游戏由JCREATER    JDK1。5 下面开发。

     下面是实现过程:

             坦克实现RUNNABLE接口,继承JlABEL类,坦克类RUN方法为:

             isMyTanke(tankType);        //返回一个BOOLEAN值判断是否为我方坦克
             while(isRun)
             {
            if (!isKey)
            {
                runEmTank();         //坦克移动        
                setTankLocation(centerPoint);
            }
            try
            {
                th.sleep(speed);
            }
            catch(Exception e)
            {}
        }

      GenerateMap为地图类,实现RUNNABLE接口,地图由无数砖块组成,砖块类为RedBlock,要让坦克在地图上跑起来,并且遇墙转向。 每个坦克为一个线程对象,与地图上的砖块循环比较,以判断转向。下面为GenerateMap的RUN方法:

  public void run()
 {
  while(true)
  {
   
   for(int i=0;i<vTank.size();i++)
   {
    for(int j=0;j<vRed.size();j++)
    {
    
     Tank tank=(Tank)vTank.elementAt(i);            //vTank为存储坦克的向量
     RedBlock redBlock=(RedBlock)vRed.elementAt(j);    //RedBlock为砖块类
     int way=tank.getMoveWay();          //getMoveWay() 取得坦克的运行方向
     
     boolean canMove=meetControl.ForwardRedBlock(tank,redBlock,way);    //判断坦克碰撞的方法

     if(!canMove)
     { 
      int newWay=0;    
      while(!meetControl.ForwardRedBlock(tank,redBlock,newWay))
      {
       newWay=(int)(Math.random()*4);//(int)(Math.random()*3);
       
      }
            
      tank.SetMoveWay(newWay);
      System.out.print("b");
     }
           
    }
   }
   //控制主线程扫描每条鱼线程状态的频率
   try
   {
    th.sleep(1);
   }
   catch(Exception e){}
  }
 }

问题:在坦克运行的时候,坦克会出现时快时慢的现象;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值