This repository was archived by the owner on Apr 20, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinvader.cpp
More file actions
32 lines (31 loc) · 1.57 KB
/
invader.cpp
File metadata and controls
32 lines (31 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "invader.h"
#include "map.h"
bool Invader::moveDown(Map& map) { //metodo che fa muovere un invader specifico verso il basso
if (position.y >= 19) {
if (position.y == 19) //se arriva in fondo alla mappa hai perso
map.setChar(position, ' ');
map.removeInvader(this);
delete this;
return true; // ritorna true se l'alieno arriva in fondo alla mappa
}
map.setChar(position, ' '); //svuota la cella perché l'alieno si sta muovendo
Coordinate destination_ = position + Coordinate(1, 0); //nuova posizione dell'alieno
char destination = map.getChar(destination_); //prende il carattere che c'è nella coordinata dove vuole arrivare l'alieno
position.y += 1; //aumenta di 1 la coordinata y
if (destination == ' ') { //se dove deve arrivare l'alieno è vuoto allora sposta l'alieno
map.setChar(position, symbol);
} else if (destination == '$') { //se dove deve arrivare c'è il giocatore allora hai perso e il giocatore muore (ritorna true)
map.setChar(position, '@');
return true;
} else if (destination == '^') { //se la destinazione è dove c'è un proiettile allora l'alieno viene distrutto e anche il proiettile
map.setChar(position, ' ');
map.removeInvader(this);
delete map.removeBullet(position);
delete this;
} else if (destination == '#') { //se la destinazione è la barriera allora distrugge un blocco della barriera e l'alieno muore
map.setChar(position, ' ');
map.removeInvader(this);
delete this;
}
return false;
}