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:
parent
a78f312478
commit
842a55e4f6
1 changed files with 52 additions and 8 deletions
60
main.cpp
60
main.cpp
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue