mirror of
https://github.com/Steffo99/iiiiil-gioco.git
synced 2024-11-22 07:54:21 +00:00
Semplificata la funzione del movimento.
This commit is contained in:
parent
70a35cc17c
commit
6ab095acd6
1 changed files with 70 additions and 145 deletions
215
main.cpp
215
main.cpp
|
@ -71,162 +71,66 @@ class Player : public Entity
|
|||
int move()
|
||||
{
|
||||
bool waiting = true;
|
||||
unsigned char* starting = &map[x][y]; //Casella attuale
|
||||
unsigned char* target; //Bersaglio del movimento
|
||||
//Rileva i tasti freccia
|
||||
while(waiting)
|
||||
{
|
||||
unsigned char input = getch();
|
||||
short int dir = 0; //Direzione del movimento, per modificare x e y.
|
||||
if(input == 224)
|
||||
{
|
||||
switch(getch())
|
||||
{
|
||||
case 72: //Freccia su
|
||||
if(map[x][y-1] == EMPTY)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x][y-1] = PLAYER;
|
||||
y--;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x][y-1] == ITEM_SMALL_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x][y-1] = PLAYER;
|
||||
y--;
|
||||
pozioni_vita_piccole++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x][y-1] == ITEM_MEDIUM_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x][y-1] = PLAYER;
|
||||
y--;
|
||||
pozioni_vita_medie++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x-1][y-1] == ITEM_BIG_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x][y-1] = PLAYER;
|
||||
y--;
|
||||
pozioni_vita_grandi++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x][y-1] == EXIT)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
case 72: //Freccia su, 1
|
||||
target = &map[x][y-1];
|
||||
dir = 1;
|
||||
break;
|
||||
case 80: //Freccia giù
|
||||
if(map[x][y+1] == EMPTY)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x][y+1] = PLAYER;
|
||||
y++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x][y+1] == ITEM_SMALL_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x][y+1] = PLAYER;
|
||||
y++;
|
||||
pozioni_vita_piccole++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x][y+1] == ITEM_MEDIUM_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x][y+1] = PLAYER;
|
||||
y++;
|
||||
pozioni_vita_medie++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x-1][y] == ITEM_BIG_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x][y+1] = PLAYER;
|
||||
y++;
|
||||
pozioni_vita_grandi++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x][y+1] == EXIT)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
case 80: //Freccia giù, 2
|
||||
target = &map[x][y+1];
|
||||
dir = 2;
|
||||
break;
|
||||
case 75: //Freccia sinistra
|
||||
if(map[x-1][y] == EMPTY)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x-1][y] = PLAYER;
|
||||
x--;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x-1][y] == ITEM_SMALL_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x-1][y] = PLAYER;
|
||||
x--;
|
||||
pozioni_vita_piccole++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x-1][y] == ITEM_MEDIUM_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x-1][y] = PLAYER;
|
||||
x--;
|
||||
pozioni_vita_medie++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x-1][y] == ITEM_BIG_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x-1][y] = PLAYER;
|
||||
x--;
|
||||
pozioni_vita_grandi++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x-1][y] == EXIT)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
case 75: //Freccia sinistra, 3
|
||||
target = &map[x-1][y];
|
||||
dir = 3;
|
||||
break;
|
||||
case 77: //Freccia destra
|
||||
if(map[x+1][y] == EMPTY)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x+1][y] = PLAYER;
|
||||
x++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x+1][y] == ITEM_SMALL_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x+1][y] = PLAYER;
|
||||
x++;
|
||||
pozioni_vita_piccole++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x+1][y] == ITEM_MEDIUM_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x+1][y] = PLAYER;
|
||||
x++;
|
||||
pozioni_vita_medie++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x+1][y] == ITEM_BIG_POTION)
|
||||
{
|
||||
map[x][y] = EMPTY;
|
||||
map[x+1][y] = PLAYER;
|
||||
x++;
|
||||
pozioni_vita_grandi++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(map[x+1][y] == EXIT)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
case 77: //Freccia destra, 4
|
||||
target = &map[x+1][y];
|
||||
dir = 4;
|
||||
break;
|
||||
//Aggiungere gestione del caso che non sia una delle quattro frecce
|
||||
}
|
||||
//Muoviti e agisci!
|
||||
if(*target == EMPTY)
|
||||
{
|
||||
*starting = EMPTY;
|
||||
*target = PLAYER;
|
||||
waiting = false;
|
||||
}
|
||||
else if(*target == ITEM_SMALL_POTION)
|
||||
{
|
||||
*starting = EMPTY;
|
||||
*target = PLAYER;
|
||||
pozioni_vita_piccole++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(*target == ITEM_MEDIUM_POTION)
|
||||
{
|
||||
*starting = EMPTY;
|
||||
*target = PLAYER;
|
||||
pozioni_vita_medie++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(*target == ITEM_BIG_POTION)
|
||||
{
|
||||
*starting = EMPTY;
|
||||
*target = PLAYER;
|
||||
pozioni_vita_grandi++;
|
||||
waiting = false;
|
||||
}
|
||||
else if(*target == EXIT)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if(input == 's') //S
|
||||
|
@ -241,6 +145,27 @@ class Player : public Entity
|
|||
//Torna alla mappa
|
||||
draw();
|
||||
}
|
||||
//Se ti sei mosso, controlla in che direzione e aggiorna correttamente la x e la y.
|
||||
//Non mi veniva in mente un modo per farlo meglio.
|
||||
if(!waiting)
|
||||
{
|
||||
if(dir == 1)
|
||||
{
|
||||
y--;
|
||||
}
|
||||
else if(dir == 2)
|
||||
{
|
||||
y++;
|
||||
}
|
||||
else if(dir == 3)
|
||||
{
|
||||
x--;
|
||||
}
|
||||
else if(dir == 4)
|
||||
{
|
||||
x++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -321,7 +246,7 @@ void draw()
|
|||
cout << map[x][y];
|
||||
}
|
||||
}
|
||||
cout << "Piano: " << depth << ' ' << "Vita: " << player.hp << "/" << HP_MAX << '\n';
|
||||
cout << "Piano: " << depth << ' ' << "Vita: " << player.hp << "/" << HP_MAX << ' ' << player.x << '|' << player.y << '\n';
|
||||
}
|
||||
|
||||
//Visualizza l'inventario
|
||||
|
|
Loading…
Reference in a new issue