1
Fork 0
mirror of https://github.com/Steffo99/iiiiil-gioco.git synced 2024-11-22 07:54:21 +00:00

Reso la mappa una variabile globale.

This commit is contained in:
Steffo 2015-12-29 19:51:19 +01:00
parent 0dd6f0a403
commit a8f35026ff

View file

@ -17,6 +17,9 @@
using namespace std; using namespace std;
//Mappa del gioco
unsigned char map[X_MAX][Y_MAX];
//Classe dei nemici //Classe dei nemici
class Enemy class Enemy
{ {
@ -25,11 +28,12 @@ class Enemy
int y; int y;
void move() void move()
{ {
//Qui dopo devo metterci il movimento... //Se non hai il giocatore accanto, muoviti in una direzione casuale.
} }
}; };
void move(unsigned char map[X_MAX][Y_MAX], int player[2]) //Fai muovere il giocatore
void move(int player[2])
{ {
int player_x = player[0]; int player_x = player[0];
int player_y = player[1]; int player_y = player[1];
@ -84,7 +88,7 @@ void move(unsigned char map[X_MAX][Y_MAX], int player[2])
player[1] = player_y; player[1] = player_y;
} }
//Aggiorna la console con la situazione corrente del gioco. //Aggiorna la console con la situazione corrente del gioco.
void draw(unsigned char map[X_MAX][Y_MAX]) void draw()
{ {
//Svuota lo schermo della console. Sono sicuro che ci sia un modo molto migliore per farlo, ma non mi viene in mente... //Svuota lo schermo della console. Sono sicuro che ci sia un modo molto migliore per farlo, ma non mi viene in mente...
system("cls"); system("cls");
@ -99,7 +103,7 @@ void draw(unsigned char map[X_MAX][Y_MAX])
//Funzioni per la generazione della mappa //Funzioni per la generazione della mappa
//Inizializza la mappa con spazi vuoti //Inizializza la mappa con spazi vuoti
void init(unsigned char map[X_MAX][Y_MAX]) void init()
{ {
for(int y=0; y<Y_MAX; y++) for(int y=0; y<Y_MAX; y++)
{ {
@ -111,7 +115,7 @@ void init(unsigned char map[X_MAX][Y_MAX])
} }
//Crea una stanza quadrata //Crea una stanza quadrata
void room(unsigned char map[X_MAX][Y_MAX], int start_x, int start_y, int end_x, int end_y) void room(int start_x, int start_y, int end_x, int end_y)
{ {
for(int y=start_y; y<=end_y; y++) for(int y=start_y; y<=end_y; y++)
{ {
@ -123,7 +127,7 @@ void room(unsigned char map[X_MAX][Y_MAX], int start_x, int start_y, int end_x,
} }
//Crea un corridoio che connetta due punti //Crea un corridoio che connetta due punti
void corridor(unsigned char map[X_MAX][Y_MAX], int start_x, int start_y, int end_x, int end_y, bool verticale) void corridor(int start_x, int start_y, int end_x, int end_y, bool verticale)
{ {
if(verticale) if(verticale)
{ {
@ -189,7 +193,7 @@ void corridor(unsigned char map[X_MAX][Y_MAX], int start_x, int start_y, int end
} }
} }
void generate(unsigned char map[X_MAX][Y_MAX], int player[2], Enemy* list[ENEMIES_IN_LEVEL]) void generate(int player[2], Enemy* list[ENEMIES_IN_LEVEL])
{ {
int corridor_x; int corridor_x;
int corridor_y; int corridor_y;
@ -200,13 +204,13 @@ void generate(unsigned char map[X_MAX][Y_MAX], int player[2], Enemy* list[ENEMIE
int size_y = rand() % ROOM_SIZE + 1; int size_y = rand() % ROOM_SIZE + 1;
int start_x = rand() % (X_MAX - size_x - 2) + 1; int start_x = rand() % (X_MAX - size_x - 2) + 1;
int start_y = rand() % (Y_MAX - size_y - 2) + 1; int start_y = rand() % (Y_MAX - size_y - 2) + 1;
room(map, start_x, start_y, start_x + size_x, start_y + size_y); room(start_x, start_y, start_x + size_x, start_y + size_y);
//Se non è la prima stanza, crea un corridoio che connetta quella appena generata con quella precedente //Se non è la prima stanza, crea un corridoio che connetta quella appena generata con quella precedente
if(r > 0) if(r > 0)
{ {
int link_x = rand() % size_x + 1 + start_x; int link_x = rand() % size_x + 1 + start_x;
int link_y = rand() % size_y + 1 + start_y; int link_y = rand() % size_y + 1 + start_y;
corridor(map, link_x, link_y, corridor_x, corridor_y, rand() % 2); corridor(link_x, link_y, corridor_x, corridor_y, rand() % 2);
} }
corridor_x = rand() % size_x + start_x; corridor_x = rand() % size_x + start_x;
corridor_y = rand() % size_y + start_y; corridor_y = rand() % size_y + start_y;
@ -237,20 +241,29 @@ void generate(unsigned char map[X_MAX][Y_MAX], int player[2], Enemy* list[ENEMIE
} }
} }
//Processa il resto di un turno, dopo il movimento del giocatore.
void tick(Enemy* list[ENEMIES_IN_LEVEL])
{
for(int e=0; e<ENEMIES_IN_LEVEL; e++)
{
list[e]->move();
}
}
int main() int main()
{ {
unsigned char map[X_MAX][Y_MAX]; //Mappa del gioco, da usare SOLO per la rappresentazione grafica e per il movimento, non anche per la logica...
int player[2]; int player[2];
Enemy* list[ENEMIES_IN_LEVEL]; Enemy* list[ENEMIES_IN_LEVEL];
srand(0); //TODO: Rendere il seed modificabile...? srand(0); //TODO: Rendere il seed modificabile...?
init(map); init();
generate(map, player, list); generate(player, list);
draw(map); draw();
//Ciclo principale del gioco //Ciclo principale del gioco
while(true) while(true)
{ {
move(map, player); move(player);
draw(map); tick(list);
draw();
} }
return 0; return 0;
} }