Ciao, sto cercando di ricreare il gioco SNAKE
Stavo cercando di dare movimento al serpente, nella funzione di input
void Input()
{
if( kbhit() )
{
switch(getch())
{
case 'w':
dir = TOP;
break;
case 'a':
dir = LEFT;
break;
case 'd':
dir = RIGHT;
break;
case 's':
dir = DOWN;
break;
case 'x':
GameOver = true;
break;
}
}
}
Ma quando runno il programma, è come se nell'esecuzione venisse saltata la funzione
void Input() e non capisco perchè.
Mi spiego meglio, il programma non si ferma a chiedere un carattere come dovrebbe, data la funzione
kbhit()...
Lascio il codice completo e l'output qui sotto
CODICE
#include <iostream>
#include <conio.h>
using namespace std;
bool GameOver;
const int lunghezza = 20; /// X
const int altezza = 20; /// y
int x, y, FruitX, FruitY, Score;
enum direzione { STOP = 0, TOP, LEFT, RIGHT, DOWN};
direzione dir;
void SetUp()
{
GameOver = false;
dir = STOP;
x = lunghezza / 2;
y = altezza / 2;
FruitX = rand() % lunghezza;
FruitY = rand() % altezza;
Score = 0;
}
void Draw()
{
system("cls"); /// clear
for(int i=0; i<lunghezza+1; i++)
cout << "#";
cout << endl;
for(int i=0; i<altezza; i++)
{
for(int c=0; c<lunghezza; c++)
{
if(c==0)
cout << "#";
else if(i == y && c == x)
cout << "O";
else if(i == FruitY && c == FruitX)
cout << "F";
else
cout << " ";
if(c == lunghezza - 1)
cout << "#" << endl;
}
}
for(int i=0; i<lunghezza+1; i++)
cout << "#";
cout << endl;
}
void Input()
{
if( kbhit() )
{
switch(getch())
{
case 'w':
dir = TOP;
break;
case 'a':
dir = LEFT;
break;
case 'd':
dir = RIGHT;
break;
case 's':
dir = DOWN;
break;
case 'x':
GameOver = true;
break;
}
}
}
void Logic()
{
switch(dir)
{
case TOP: /// sopra
y++;
break;
case LEFT: /// sinistra
x--;
break;
case RIGHT: /// destra
x++;
break;
case DOWN: /// sotto
y--;
break;
default: /// nothing
break;
}
}
int main()
{
SetUp();
Draw();
Input();
Logic();
return 0;
}
OUTPUT
#####################
# #
# #
# #
# #
# #
# #
# #
#F #
# #
# #
# O #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#####################
Process returned 0 (0x0) execution time : 0.245 s
Press any key to continue.
Ps. non ci sono ne errori, ne warnings segnalati dal compilatore