1
Fork 0
mirror of https://github.com/Steffo99/iiiiil-gioco.git synced 2024-11-24 17:04:18 +00:00

Aggiunti più piani e passaggi al successivo.

This commit is contained in:
Steffo 2015-12-30 16:25:23 +01:00
parent a78f312478
commit 842a55e4f6

View file

@ -14,12 +14,16 @@
#define EMPTY 0xFF #define EMPTY 0xFF
#define PLAYER 0x02 #define PLAYER 0x02
#define ENEMY 'X' #define ENEMY 'X'
#define EXIT '>'
using namespace std; using namespace std;
//Mappa del gioco //Mappa del gioco
unsigned char map[X_MAX][Y_MAX]; unsigned char map[X_MAX][Y_MAX];
//Numero del piano raggiunto dal giocatore
int depth = 1;
//Classe dei nemici //Classe dei nemici
class Enemy class Enemy
{ {
@ -85,7 +89,7 @@ class Enemy
}; };
//Fai muovere il giocatore //Fai muovere il giocatore
void move(int player[2]) int move(int player[2])
{ {
int player_x = player[0]; int player_x = player[0];
int player_y = player[1]; int player_y = player[1];
@ -106,6 +110,10 @@ void move(int player[2])
player_y--; player_y--;
waiting = false; waiting = false;
} }
else if(map[player_x][player_y-1] == EXIT)
{
return 1;
}
break; break;
case 80: //Freccia giù case 80: //Freccia giù
if(map[player_x][player_y+1] == EMPTY) if(map[player_x][player_y+1] == EMPTY)
@ -115,6 +123,10 @@ void move(int player[2])
player_y++; player_y++;
waiting = false; waiting = false;
} }
else if(map[player_x][player_y+1] == EXIT)
{
return 1;
}
break; break;
case 75: //Freccia sinistra case 75: //Freccia sinistra
if(map[player_x-1][player_y] == EMPTY) if(map[player_x-1][player_y] == EMPTY)
@ -124,6 +136,10 @@ void move(int player[2])
player_x--; player_x--;
waiting = false; waiting = false;
} }
else if(map[player_x-1][player_y] == EXIT)
{
return 1;
}
break; break;
case 77: //Freccia destra case 77: //Freccia destra
if(map[player_x+1][player_y] == EMPTY) if(map[player_x+1][player_y] == EMPTY)
@ -133,6 +149,10 @@ void move(int player[2])
player_x++; player_x++;
waiting = false; waiting = false;
} }
else if(map[player_x+1][player_y] == EXIT)
{
return 1;
}
break; break;
} }
} }
@ -144,6 +164,7 @@ void move(int player[2])
} }
player[0] = player_x; player[0] = player_x;
player[1] = player_y; player[1] = player_y;
return 0;
} }
//Aggiorna la console con la situazione corrente del gioco. //Aggiorna la console con la situazione corrente del gioco.
void draw() void draw()
@ -157,6 +178,7 @@ void draw()
cout << map[x][y]; cout << map[x][y];
} }
} }
cout << "Piano " << depth;
} }
//Funzioni per la generazione della mappa //Funzioni per la generazione della mappa
@ -280,6 +302,7 @@ void generate(int player[2], Enemy* list[ENEMIES_IN_LEVEL])
map[corridor_x][corridor_y] = PLAYER; map[corridor_x][corridor_y] = PLAYER;
} }
} }
//Posizionamento nemici
for(int e=0; e<ENEMIES_IN_LEVEL; e++) for(int e=0; e<ENEMIES_IN_LEVEL; e++)
{ {
while(true) while(true)
@ -297,6 +320,18 @@ void generate(int player[2], Enemy* list[ENEMIES_IN_LEVEL])
} }
} }
} }
//Posizionamento uscita
while(true)
{
int x = rand() % (X_MAX - 1) + 1;
int y = rand() % (Y_MAX - 1) + 1;
if(map[x][y] == EMPTY)
{
map[x][y] = EXIT;
break;
}
}
} }
//Processa il resto di un turno, dopo il movimento del giocatore. //Processa il resto di un turno, dopo il movimento del giocatore.
@ -311,17 +346,26 @@ void tick(Enemy* list[ENEMIES_IN_LEVEL])
int main() int main()
{ {
int player[2]; int player[2];
Enemy* list[ENEMIES_IN_LEVEL]; Enemy* list[ENEMIES_IN_LEVEL]; //Lista di tutti i nemici nel livello
srand(0); //TODO: Rendere il seed modificabile...? srand(0); //TODO: Rendere il seed modificabile...?
init(); //Ciclo del gioco
generate(player, list);
draw();
//Ciclo principale del gioco
while(true) while(true)
{ {
move(player); init();
tick(list); generate(player, list);
draw(); draw();
//Ciclo di un livello
while(true)
{
int trigger = move(player);
if(trigger == 1) //Uscita toccata
{
break;
}
tick(list);
draw();
}
depth++;
} }
return 0; return 0;
} }