Piszę prostą grę w konsoli, w której można się poruszać znakiem "@". Żeby to zrobić stwierdziłem, że dam instrukcję warunkową switch do pętli gry oraz zrobię funkcję, która ma zapełniać tablicę znakiem ".". Rysuję tą tablicę w konsoli i w miejscu, w którym chcę zapisuje znaczek "@", a po przyciśnięciu jakiegoś klawisza element się przesuwa po tej tablicy. Tylko pojawił się problem. Otóż moim zdaniem powinno działać, a jednak tak się nie dzieje. Albo @ wiesza się na samym początku "planszy", albo przechodzi po losowych elementach jej. O co może chodzić? Tutaj jest kod.
static int posx = 3; //polozenie na osi x
static int posy = 3; //polozenie na osi y
void rysuj()
{
system("cls");
for(int x=0 ; x<15 ; x++)
{
for(int y = 0 ; y<15 ; y++)
{
Plansza[x][y]='.'; //od nowa wpisuję znaki w tablicy, żeby pozbyć się poprzedniej pozycji "@"
cout<<Plansza[x][y]<<" ";
}
cout<<endl;
}
Plansza[posx][posy] = '@';
cout<<Plansza[posx][posy];
}
Tutaj mamy funkcję rysująca tablicę.
for(;;)
{
if(_kbhit())
{klawisz = _getch();
switch ( klawisz )
{
//gora
case 'w':
if(posy>=0)
{
posy++;
rysuj();
}
break;
//dol
case 's':
if(posy<15)
{
posy--;
rysuj();
}
break;
//lewo
case 'a':
if(posx>=0)
{
posx--;
rysuj();
}
break;
//pawo
case 'd':
if(posx<15)
{
posx++;
rysuj();
}
break;
}
A tutaj jest przemieszczanie się "gracza".
Robiłem to z poradnikiem, ale poradnik był nieskończony, a ja potrzebuję inne zastosowanie tego, więc zmodyfikowałem sporo kod :) .
Z góry dziękuję, jeśli ktoś mi pomoże :).