@Override
public boolean isGameOver() {
return player.getHealth() <= 0;
}
@Override
public void destroy() {
}
@Override
public void reset() {
player.reset();
enemies.clear();
addEnemies();
bulletHandler.reset();
}
public void addEnemies() {
for(int y = 0; y < 5; y++){
for(int x = 0; x < 10; x++){
FishType e = new BasicFishType(150 + (x * 40), 25 + (y * 40), 1 , 3, bulletHandler);
enemies.add(e);
}
}
}
@Override
public boolean isComplete() {
return enemies.isEmpty();
}
}
截至目前,这是我的关卡代码。它有一个允许它玩的状态。还有一个游戏结束屏幕。然而,入侵者慢慢加速他们在屏幕上的时间越长。问题是,入侵者可以到达屏幕的底部然后就是这样。我不死,入侵者不再在屏幕上。我只是想知道,我怎么做到这一点,当玩家精灵触及入侵者精灵时,它会导致自动游戏结束。
@Override
public boolean deathScene() {
if(!enemySprite.isPlay())
return false;
if(enemySprite.isSpriteAnimDestroyed()) {
if (!explosionSound.isPlaying()) {
explosionSound.play();
}
return true;
}
return false;
}
@Override
public boolean collide(int i, ThePlayer player, BlockyBlocks blocks, ArrayList<FishType> enemys) {
if(enemySprite.isPlay()) {
if(enemys.get(i).deathScene()) {
enemys.remove(i);
}
return false;
}
for(int w = 0; w < player.playerWeapons.weapons.size(); w++) {
if(enemys != null && player.playerWeapons.weapons.get(w).collisionRect(((BasicFishType) enemys.get(i)).getRect())) {
enemySprite.resetLimit();
enemySprite.setAnimationSpeed(120);
enemySprite.setPlay(true, true);
GameScreen.SCORE += 8;
return true;
}
}
return false;
}
@Override
public boolean isOutOfBounds() {
if(rect.x > 0 && rect.x < Sea_InvadersDisplay.WIDTH - rect.width)
return false;
return true;
编辑:从代码中删除了声音,因为真正的主要问题是生命和感人的精灵。是否有办法: 1.一旦精灵离开屏幕底部,就会导致Gameover 2.如果playerSprite触及Invadersprite,则将lives设置为0,从而导致gameover 3.通过两个精灵的碰撞引起游戏加载