java怎么连发子弹_【Java_项目篇<1>】--JAVA实现坦克大战游戏--子弹连发+爆炸效果(四)...

本文介绍了如何在Java中实现坦克大战游戏的子弹连发和碰撞检测功能。通过创建Vector存储子弹,限制子弹数量,控制子弹发射。同时,详细阐述了如何判断子弹击中敌人坦克的逻辑,包括根据坦克方向判断碰撞的方法。最后提供了相关代码片段作为实现参考。
摘要由CSDN通过智能技术生成

前期相关文章

【Java_项目篇<1>】–JAVA实现坦克大战游戏–画出坦克(一)

【Java_项目篇<1>】–JAVA实现坦克大战游戏–坦克移动+添加敌方坦克(二)

【Java_项目篇<1>】–JAVA实现坦克大战游戏–坦克发射子弹(三)

一、任务需求

实现子弹连发(屏幕中子弹数量可控)+击中目标+爆炸效果。

二、思路

-子弹连发,并且子弹数量可控

1.在Hero类中新建Vector,每颗子弹存到Vector中。

Vector ss = new Vector();

2.在KeyPressed中加入按键J控制发射子弹,并且加入if语句,限制子弹数量。

if (e.getKeyCode() == KeyEvent.VK_J) {

// 开火

if (hero.ss.size() <= 4) {

hero.shotEnemy();

}

}

3.在paintComponet中画出子弹,如果子弹存在画出,子弹死亡,将子弹从vector中删除remove.

for (int i = 0; i < hero.ss.size(); i++) {

Shot myShot = hero.ss.get(i);

// 画出子弹

if (myShot.isLive == true) {

// System.out.format("%d %d ", hero.s.x,hero.s.y);

g.setColor(Color.red);

g.draw3DRect(myShot.x, myShot.y, 1, 1, false);

}

if (myShot.isLive == false) {

hero.ss.remove(myShot);// 记住是myShot 不是i

}

}

-判断击中目标

1.写一个函数专门判断: 子弹是否击中敌人坦克

hitTank(参数:子弹s,地方坦克et)当子弹进入到敌方坦克的区域内,将子弹和坦克都设置为islive=false表示死亡,在画图时进行存活判断,死亡后将不再画出该坦克和子弹。

public void hitTank(Shot s, EnemyTank et) {

// 判断该坦克的方向

switch (et.Direct) {

// 方向上或者下,是相同的

case 0:

case 1:

if (s.x > et.x && s.x < et.x + 20 && s.y > et.y && s.y < et.y + 30) {

// 击中,子弹死亡

s.isLive = false;

// 坦克死亡

et.isLive = false;

}

break;

// 方向左右,相同

case 2:

case 3:

if (s.x > et.x && s.x < et.x + 30 && s.y > et.y && s.y <= et.y + 20) {

s.isLive = false;

et.isLive = false;

}

break;

default:

break;

}

}

2.

三、代码如下

MyTankGame.java

members.java

四、程序演示

0818b9ca8b590ca3270a3433284dd417.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值