当前页面: 开发资料首页 → J2ME 专题 → 好奇怪的问题~!请高手帮帮我!谢谢啊!
好奇怪的问题~!请高手帮帮我!谢谢啊!
摘要: 好奇怪的问题~!请高手帮帮我!谢谢啊!
现在遇到一个很奇怪的问题。
我在做一个坦克大战的游戏,如果有两个敌机坦克(A,B,这两个坦克是同样的图片!!),我有时可以打死,这时是成功的。有时就失败,出现的问题是打A坦克时,计算出来的伤害却在B上,所以,A总是打不死,而B却死了,伤害仍在计算。
我的思路是这样的,有一个坦克数组:
public int[][] enemys; //敌机数组,有多少敌机及状态,
//0敌机类型 1敌机X坐标 2敌机Y坐标 3速度vx 4速度vy
//5能量 6生命 7死亡(-1)未使用(0)正在使用(1)
还有一个显示敌机的图像:
public Sprite[] enemySprite;//敌机类型,如有飞机,坦克等
我和这个数组,根据前面的那个数组记录的坦克位置来显示:
enemySprite[enemys[i][0]].setPosition(enemys[i][1],enemys[i][2]);
=========================================================
下面说一下有关代码:
在Paint中的一段代码:
//遍历敌方坦克
for( i=0;i
{
//下面的函数是我方坦克发出的子弹,一颗颗子弹与敌方坦克做碰撞判断,返回敌方坦克中弹数,并计算伤害。注意最后一个参数,由于经常出现我说的问题,即打A坦克就把伤害算在B上,我想知道此时到底是和谁相撞的!
int j=bulletForSprite.refreshBullets(
enemyPlane.enemySprite[enemyPlane.enemys[i][0]],true,true,i);
....
....
}
===================================================
下面是调试结果:
i 0 //这个说明那个遍历敌方坦克,I总是为0,难怪打I=1的坦克时也把伤害计算在0上了!
子弹x 69//相撞时子弹的X,Y坐标,和敌方两个坦克此时位置看,应该是1号坦克被打中,但是伤害却不是!
子弹y 141
enemyPlane.enemys[0][x] 35
enemyPlane.enemys[0][y] 63
enemyPlane.enemys[0][life] 50
enemyPlane.enemys[1][x] 79
enemyPlane.enemys[1][y] 153
enemyPlane.enemys[1][life] 250
enemyPlane.enemys[0][6] -50//子弹伤害是100的,0号坦克没被打中,我肯定!从XY坐标也可证明。却被伤害了!!
哪位好心人肯帮帮我啊,如有不明白的请加我QQ:215377150
谢谢啊,这个问题我调了一个月了也没办法解决
牛呢,不懂
吐血。。。。逻辑问题还是要自己搞定的
再说你都知道问题出在什么地方了,一个地方一个地方慢慢查好了
高手对我提的问题都是觉得太简单了
5555555555555555
没有人肯帮我么?
逻辑问题只能使用IDE进行跟踪调试了
根据你的描述没法帮你找到问题,需要检查程序的逻辑,跟踪调试是做好的方法
不是说很简单,而是没有办法帮,你只能靠自己了
第一数组表示方法不好,最好这样,将坦克封装成一个类
class Tank{
private int type;
private int x;
private int y;
public boolean isLive(){
//判断
}
}
Tank[] enemys = null;