SpaceInvaders: rocket survival fixed
This commit is contained in:
parent
14f8512eca
commit
d7464d1803
@ -161,7 +161,7 @@ public:
|
||||
|
||||
void shoot() {
|
||||
for (Rocket *rocket = rocketsBegin; rocket < rocketsEnd; rocket++) {
|
||||
if (!rocket->alive) {
|
||||
if (!rocket->alive && rocket->flash == 0) {
|
||||
rocket->alive = true;
|
||||
rocket->x = heroX;
|
||||
rocket->y = display->height - 2;
|
||||
@ -171,20 +171,28 @@ public:
|
||||
|
||||
void collide() {
|
||||
for (Rocket *rocket = rocketsBegin; rocket < rocketsEnd; rocket++) {
|
||||
if (!rocket->alive) {
|
||||
continue;
|
||||
}
|
||||
for (Invader *invader = swarmBegin; invader < swarmEnd; invader++) {
|
||||
if (invader->alive && rocket->alive && collide(rocket, invader)) {
|
||||
if (!invader->alive) {
|
||||
continue;
|
||||
}
|
||||
if (collide(rocket, invader)) {
|
||||
rocket->alive = false;
|
||||
rocket->flash = 1000;
|
||||
invader->alive = false;
|
||||
invadersAlive--;
|
||||
// Serial.printf("Killed invader at (%2u/%2u): %2u/%2u alive.\n", invader->x, invader->y, invadersAlive, invadersCountX * invadersCountY);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool collide(const Rocket *rocket, const Invader *invader) const {
|
||||
return swarmY + invader->y * 2 == rocket->y && swarmX + invader->x * 3 <= rocket->x && rocket->x <= swarmX + invader->x * 3 + 1;
|
||||
return swarmY + invader->y * 2 == rocket->y
|
||||
&& swarmX + invader->x * 3 <= rocket->x
|
||||
&& swarmX + invader->x * 3 + 1 >= rocket->x;
|
||||
}
|
||||
|
||||
void draw() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user