站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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;


↑返回目录
前一篇: 在J2ME中 声音播放问题?
后一篇: 请教关于Nokia QD的setClip问题!