Skocz do zawartości

Drobny problem.


Rekomendowane odpowiedzi

Opublikowano

Witam, otóż wpierw pokażę ten oto kawałek kodu:

void kMiasto::OdswiezMapa()
{
for (int y = 0; y < 5; ++y)
{
	cout << endl;
	for (int x = 0; x < 9; ++x)
	{
				switch (mMapa[y][x])
				{
				case pl_Wolne:
				{
								 cout << "##\n##";

								 break;
				}
				}
		}
	}
}

 

i chodzi mi tu o to aby pl_Wolne wyswietliło jako

"##

##" .

Z tym, że \n lub endl przechodzi do nastepnej linii i wtedy nastepne pl_Wolne wypisują się pod tym, natomiast chciałbym aby następne pl_Wolne wyświetliło się zaraz obok w tej powyższej formie ;p Jest na to jakiś sposób?

Opublikowano

Logiczne, że jak dajesz przejście do kolejnej linii to nie wyświetli się zaraz pod, a tam gdzie się linia zaczyna - "\n" to też znak.

 

Możesz wyjść poza standard C i użyć biblioteki conio.h, wewnątrz której masz funkcję gotoxy().

Opublikowano

No to co to za problem? To samo - gotoxy(). Ale wiedz, że nie będziesz multiplatformowy, bo to jest only for Windows. Możesz też się pobawić z New Curses, to jest i pod Linuxa, i pod Windę i pod Jabłko. ;)

 

Poza tym, drugi sposób, wyświetlać fragmentami.

Możesz wykonać dwa razy ten sam "algorytm" rysowania dla dwóch linii. :)

 

EDIT:

Wiesz jak tego gotoxy() się używa, nie? :)

Opublikowano

Myslalem o tym podwojnym rysowaniu ale to się nie sprawdzi w moim programiku. Teraz patrzę to gotoxy to na jakiej zasadzie są rozmieszone kordy x,y w consoli? Tak jakby to byla jedna wielka dwuwymiarowa tablica?

Opublikowano

Ok, dzięki :) Jakoś pobawię się tym, może dam radę ;p

 

@EDIT:

Gdyby ktoś szukał takiego rozwiązania to napisałem coś takiego(działa :D ):

void gotoxy(int x, int y)
{
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}

int main()
{
for (int y = 0, y2 = 1; y < 6; ++y, y2 += 2)
{
	gotoxy(1,y2);
	for (int x = 0, x2 = 1; x < 6; ++x, x2 += 2)
	{
		cout << "##";
		gotoxy(x2, y2+1);
		cout << "##";
		gotoxy(x2 + 2, y2);
	}
}
_getch();
}

Opublikowano
@EDIT:

Gdyby ktoś szukał takiego rozwiązania to napisałem coś takiego(działa :D ):

void gotoxy(int x, int y)
{
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}

Nie lubię tego rozwiązania od twórców borlandowego "conio". Bo nie indeksuje pozycji kursora od '0', co dla języka C/C++/etc jest rzeczą naturalną i powszechnie stosowaną, odwrotną co do Pascalowego '1'.

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...