Problem z aktualizacją elementów tablicy wielowymiarowej

0

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 :).

0

Z góry zaznaczam że nie kompilowałem Twojego kodu, ale problemem nie jest sama aktualizacja pozycji '@' w tablicy, tylko rysowanie planszy. Zauważ że najpierw rysujesz kwadrat 15x15 z spacji, a dopiero zanim wypisujesz '@' (czyli @ będzie w 16 wierszu 1 kolumnie zamiast na pozycji x, y).

1 użytkowników online, w tym zalogowanych: 0, gości: 1