JAVA之坦克子弹连发以及敌人坦克死亡

总结一下几点


1:在hero中修改子弹,并且把原有初始化子弹语句初始化,利用线程安全的集合类  Vector来进行,并在switch中进行加入

Vector <show>ss=new Vector<show>();

show s=null;


2:在paint中画出子弹

for(int i=0;i<hero.ss.size();i++)
{
//取出子弹
show s=hero.ss.get(i);


if(s!=null&&s.Vlist==true)
{

//先判断子弹是否为空
g.draw3DRect(s.x,s.y, 1,1, false);
}

//如果子弹没有则删除前面打出的子弹
if(s.Vlist==false)
{
//从ss中删除掉该子弹
hero.ss.remove(s);
}
}


3:上面画出许多子弹,但是我么为对其进行判断,当按下J

//判断是否按下J键发射子弹,按下J键则调用发射子弹函数
if(hero.ss.size()<=4) //这条语句控制子弹数,打完5颗子弹就不能打出,做出处理
{
//在第2写上了删除子弹功能,才可以以进行从新发射子弹
this.hero.showEmp();


}


4:敌人坦克消失,在paint画出坦克,坦克被击中必须要2参数,一个是子弹,一个是敌人坦克

//打中敌人坦克后,敌人坦克消失
public void hitTank(show s,BadTank bt)
{
//判断坦克方向
switch(bt.dome)  //判断敌人坦克方向
{
case 0:
case 1:
if(s.x>bt.x&&s.x<bt.x+20&&s.y>bt.y&&s.y<bt.y+20)
{
 //子弹击中坦克后消失
 s.Vlist=false;
 //敌人坦克消失
 bt.Tanke=false;
}

case 2:
if(s.x>bt.x && s.x<bt.x+30 && s.y>bt.y && s.y<bt.y+30)
{
//子弹击中坦克后消失
 s.Vlist=false;
 //敌人坦克消失
 bt.Tanke=false;
}

}
}


6:在哪里调用坦克方法,在paint中的run方法中,因为run里面有个刷新方法没进行一次就被判断一次,因此在该方法中定义

//调用敌人坦克方法消失函数
for(int i=0;i<hero.ss.size();i++)  //子弹
{
//取出子弹
show s=hero.ss.get(i);
//判断子弹是否有效
if(s.Vlist)
{
//取出每个坦克,与他判断
for(int j=0;j<vt.size();j++)
{
//取出坦克
BadTank bt=vt.get(j);
 
if(bt.Tanke)  //判断坦克是否还存在
{
this.hitTank(s, bt);
}
}
}


7:在画出坦克中进行判断

//画出敌人的坦克
for(int i=0;i<vt.size();i++)
{
//Vector vt=(Vector)vt.get(i);

BadTank bt=vt.get(i);
if(bt.Tanke)
{
this.drawTank(bt.getX(),bt.getY(),g,bt.getDome(),0); 
//如果第四个参数是this.hero.dome则会出现意想不到的结果
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值