我们的坦克游戏由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){}
}
}
问题:在坦克运行的时候,坦克会出现时快时慢的现象;