public void impact(){ for(int i=0;i<enemys.length;i++){ if(enemys[i].lifeState==Enemy.alive&&enemys[i].impact(hero)){ hero.life--; enemys[i].die(); } } }这段代码什么意思
时间: 2023-06-23 19:43:31 浏览: 75
这段代码是检测敌机和英雄是否相撞的方法,具体含义如下:
- 遍历 enemys 数组中的每一个敌机对象
- 如果敌机的生命状态为 alive(表示还没有被击毁),并且与英雄相撞了(impact 方法返回 true),则英雄的生命值减1,该敌机对象的生命状态变为 die(表示已被击毁)
这段代码的作用是对游戏中敌机和英雄的碰撞进行检测,并根据碰撞结果调整敌机和英雄的状态。
相关问题
public void impact(){ for(int i=0;i<enemys.length;i++){ if(enemys[i].lifeState==Enemy.alive&&enemys[i].impact(hero)){ hero.life--; enemys[i].die(); } } }
这是一个名为 impact 的方法。在这个方法中,首先使用 for 循环遍历敌人数组 enemys。对于数组中的每一个 enemys[i] 对象,首先判断其是否还处于生存状态,并调用其 impact 方法判断其是否与英雄对象 hero 发生了碰撞。如果发生了碰撞,则让英雄对象的生命值减少 1,同时让敌人对象的生命状态改为死亡状态,并调用其 die 方法,为后续删除敌人对象做准备。
public void outOfBounds(){ for(int i=0;i<enemys.length;i++){ if(enemys[i].outOfBounds(0, 0, frameWidth, frameheight)){ hero.life--; enemys[i]=enemys[enemys.length-1]; enemys=Arrays.copyOf(enemys, enemys.length-1); i--; } } for(int i=0;i<flyingObjects.length;i++){ if(flyingObjects[i].outOfBounds(0, 0, frameWidth, frameheight)){ flyingObjects[i]=flyingObjects[flyingObjects.length-1]; flyingObjects=Arrays.copyOf(flyingObjects, flyingObjects.length-1); i--; } } }
这是一个名为 outOfBounds 的方法。在这个方法中,首先使用 for 循环遍历敌人数组 enemys。对于数组中的每一个 enemys[i] 对象,都判断其是否已经超出了窗口的边界(即是否已经飞出窗口),如果是,则将英雄对象 hero 的生命值减少 1,然后将 enemys[i] 对象与数组中的最后一个对象交换位置,再将数组长度减少 1,并将 i 减少 1,以便继续检查当前位置的下一个敌人对象。然后,使用 for 循环遍历飞行物数组 flyingObjects。对于数组中的每一个 flyingObjects[i] 对象,同样判断其是否已经超出了窗口的边界,如果是,则将 flyingObjects[i] 对象与数组中的最后一个对象交换位置,再将数组长度减少 1,并将 i 减少 1,以便继续检查当前位置的下一个飞行物对象。