Ciao a tutti sto provando a programmare snake... la parte grafica è ok ma ogni volta che da tastiera inserisco un carattere "il serpente" non si muove e il carattere viene scritto su schermo dopo il punteggio... Non capisco cosa ho sbagliato...
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#define FRECCIA_SU 72
#define FRECCIA_GIU 80
#define FRECCIA_SINISTRA 75
#define FRECCIA_DESTRA 77
using namespace std;
bool gameover;
const int larghezza = 20;
const int altezza = 20;
int playerx, playery, punteggio, fruttox, frut
enum edirezione
{
STOP = 0,
SINISTRA,
DESTRA,
SU,
GIU
};
edirezione direzionecorrente;
void Setup()
{
srand((unsigned)(time(NULL)));
gameover = false;
playerx = larghezza/2;
playery = altezza/2;
punteggio = 0;
fruttox = rand() % larghezza;
fruttoy = rand() % altezza;
direzionecorrente = STOP;
}
void Visual()
{
//bordo superiore
for(int i = 0; i< larghezza; i++)
{
cout << "#";
}
cout << endl;
//arena
for(int i = 0; i< altezza; i++)
{
for (int j = 0; j < altezza; j++)
{
if((i==playery) && (j == playerx) )
{
cout << "+";
}
else if((i==fruttoy) && (j==fruttox)
{
cout << "O";
}
else
{
if ((j==0)|| (j==larghezza-1))
{
cout << "#";
}
else
{
cout << " ";
}
}
}
cout << endl;
}
cout << endl;
//bordo inferiore
for(int i = 0; i< larghezza; i++)
{
cout << "#";
}
cout << endl;
cout << "punteggio: " << punteggio << endl;
}
void Logic()
{
switch(direzionecorrente)
{
case STOP: break;
case SU:
playery--;
break;
case GIU:
playery++;
break;
case DESTRA:
playerx--;
break;
case SINISTRA:
playerx++;
break;
default: break;
}
if((playerx == fruttox) || (playery == frutt
{
punteggio++;
fruttox = rand() % larghezza;
fruttoy = rand() % altezza;
}
}
void Input()
{
char tastopremuto = cin.get();
if(tastopremuto == cin.get())
{
switch (tastopremuto)
{
case 'w':
case FRECCIA_SU:
direzionecorrente = SU;
break;
case 's':
case FRECCIA_GIU:
direzionecorrente = GIU;
break;
case 'a':
case FRECCIA_SINISTRA:
direzionecorrente = SINISTRA;
break;
case 'd':
case FRECCIA_DESTRA:
direzionecorrente = DESTRA;
break;
case 'x':
gameover =true;
break;
default:
break;
}
}
}
int main()
{
Setup();
while(!gameover)
{
Visual();
Input();
Logic();
sleep(50);
}
system("pause");
return 0;
}