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

Semplificata la funzione del movimento.

This commit is contained in:
Steffo 2016-01-03 18:20:13 +01:00
parent 70a35cc17c
commit 6ab095acd6

215
main.cpp
View file

@ -71,162 +71,66 @@ 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;
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;
}
break; break;
case 80: //Freccia giù case 80: //Freccia giù, 2
if(map[x][y+1] == EMPTY) target = &map[x][y+1];
{ dir = 2;
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; break;
case 75: //Freccia sinistra case 75: //Freccia sinistra, 3
if(map[x-1][y] == EMPTY) target = &map[x-1][y];
{ dir = 3;
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; break;
case 77: //Freccia destra case 77: //Freccia destra, 4
if(map[x+1][y] == EMPTY) target = &map[x+1][y];
{ dir = 4;
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; 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 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