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
189
main.cpp
189
main.cpp
|
@ -71,163 +71,67 @@ class Player : public Entity
|
||||||
int move()
|
int move()
|
||||||
{
|
{
|
||||||
bool waiting = true;
|
bool waiting = true;
|
||||||
|
unsigned char* starting = &map[x][y]; //Casella attuale
|
||||||
|
unsigned char* target; //Bersaglio del movimento
|
||||||
//Rileva i tasti freccia
|
//Rileva i tasti freccia
|
||||||
while(waiting)
|
while(waiting)
|
||||||
{
|
{
|
||||||
unsigned char input = getch();
|
unsigned char input = getch();
|
||||||
|
short int dir = 0; //Direzione del movimento, per modificare x e y.
|
||||||
if(input == 224)
|
if(input == 224)
|
||||||
{
|
{
|
||||||
switch(getch())
|
switch(getch())
|
||||||
{
|
{
|
||||||
case 72: //Freccia su
|
case 72: //Freccia su, 1
|
||||||
if(map[x][y-1] == EMPTY)
|
target = &map[x][y-1];
|
||||||
|
dir = 1;
|
||||||
|
break;
|
||||||
|
case 80: //Freccia giù, 2
|
||||||
|
target = &map[x][y+1];
|
||||||
|
dir = 2;
|
||||||
|
break;
|
||||||
|
case 75: //Freccia sinistra, 3
|
||||||
|
target = &map[x-1][y];
|
||||||
|
dir = 3;
|
||||||
|
break;
|
||||||
|
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)
|
||||||
{
|
{
|
||||||
map[x][y] = EMPTY;
|
*starting = EMPTY;
|
||||||
map[x][y-1] = PLAYER;
|
*target = PLAYER;
|
||||||
y--;
|
|
||||||
waiting = false;
|
waiting = false;
|
||||||
}
|
}
|
||||||
else if(map[x][y-1] == ITEM_SMALL_POTION)
|
else if(*target == ITEM_SMALL_POTION)
|
||||||
{
|
{
|
||||||
map[x][y] = EMPTY;
|
*starting = EMPTY;
|
||||||
map[x][y-1] = PLAYER;
|
*target = PLAYER;
|
||||||
y--;
|
|
||||||
pozioni_vita_piccole++;
|
pozioni_vita_piccole++;
|
||||||
waiting = false;
|
waiting = false;
|
||||||
}
|
}
|
||||||
else if(map[x][y-1] == ITEM_MEDIUM_POTION)
|
else if(*target == ITEM_MEDIUM_POTION)
|
||||||
{
|
{
|
||||||
map[x][y] = EMPTY;
|
*starting = EMPTY;
|
||||||
map[x][y-1] = PLAYER;
|
*target = PLAYER;
|
||||||
y--;
|
|
||||||
pozioni_vita_medie++;
|
pozioni_vita_medie++;
|
||||||
waiting = false;
|
waiting = false;
|
||||||
}
|
}
|
||||||
else if(map[x-1][y-1] == ITEM_BIG_POTION)
|
else if(*target == ITEM_BIG_POTION)
|
||||||
{
|
{
|
||||||
map[x][y] = EMPTY;
|
*starting = EMPTY;
|
||||||
map[x][y-1] = PLAYER;
|
*target = PLAYER;
|
||||||
y--;
|
|
||||||
pozioni_vita_grandi++;
|
pozioni_vita_grandi++;
|
||||||
waiting = false;
|
waiting = false;
|
||||||
}
|
}
|
||||||
else if(map[x][y-1] == EXIT)
|
else if(*target == EXIT)
|
||||||
{
|
{
|
||||||
return 1;
|
return 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;
|
|
||||||
}
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if(input == 's') //S
|
else if(input == 's') //S
|
||||||
{
|
{
|
||||||
|
@ -241,6 +145,27 @@ class Player : public Entity
|
||||||
//Torna alla mappa
|
//Torna alla mappa
|
||||||
draw();
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -321,7 +246,7 @@ void draw()
|
||||||
cout << map[x][y];
|
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
|
//Visualizza l'inventario
|
||||||
|
|
Loading…
Reference in a new issue