Contornar um problema. instanceof

estou a fazer um app de space invaders (sim continuo naquilo) porém dessa vez estou fazendo um power up no qual ele solta 3 tiros, quando 1 tiro acerta 1 alien ele ativa um metodo que aumenta uma int, quando essa int chega a 50 (numero de aliens) você vence o jogo, problema é que quando 2 tiros pegam no mesmo alien, ele aumenta a int 2 vezes. fazendo com que o jogo fique desregulado.

vou mandar os codigos:

chamada de metodos quando o tiro colide com o alien.

[code]public void collidedWith(Entity other) {

if (other instanceof ShotEntity) {
	game.removeEntity(this);
            game.removeEntity(other);
            game.notifyAlienKilled();
            game.moedas +=1;
}

}[/code]

integer a ser contada

[code]
public void notifyAlienKilled (){
alienCount–;

            if (alienCount == 0) {
		notifyWin();

	}

            for (int i=0;i<entities.size();i++) {
		Entity entity = (Entity) entities.get(i);
                   

		if (entity instanceof AlienEntity) {
                             
			entity.setHorizontalMovement(entity.getHorizontalMovement() * 1.02);
		}
	}

}[/code]

acho que só precisam disso… tem algum modo de contornar esse problema?

Ae Kinaite,

Não entendi direito o problema e também não encontrei a condição dos 50 no teu código.

Abraço

é que eu falei errado =P , o aliencount diminui, ele tem valor de 50, ele diminui 1 a cada alien morto, mas quando 2 tiros pegam no mesmo alien ele diminui 2 ao invez de 1.
obrigado.

Blz.

Pensando rápido aqui, você poderia adicionar um atributo isKilled() no alien.
Aí no collidedWith() vc põe a chamada do notifyAlienKilled() dentro de um if que só entra se o isKilled() for false e dá um setKilled(true) após o notifyAlienKilled().

Algo tipo assim:

if(!this.isKilled()){  //mesma coisa que this.isKilled() == false
     game.notifyAlienKilled();
     this.setKilled(true);
}

Não testei aqui, mas testa aí e diz depois se funcionou.

Abraço

boa ideia, vou tentar aqui depois edito, obrigado.

EDIT: que coisa incrível, funcionou, eu tinha pensado em algo parecido porém eu pensei " se eu fizer isso, ambos os tiros iriam realizar a ação ao mesmo tempo, dando em nada" mas pelo visto eu estava errado, muito obrigado!