• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Manipulowanie stdout. Zmienianie wypisanego tekstu na ekranie. Nieznajomość bibliotek oraz funkcji.

+1 głos
217 wizyt
pytanie zadane 18 lutego 2016 w C i C++ przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Hej!

Zacząłem się bawić z C++, wymyśliłem sobie pewien projekt. Prosta gierka - plansza jak szachownica, plusik, którym można dostać się do minusika. Nie można przechodzić przez pola z x, pola z o to trampolina, która pozwala Ci przeskoczyć pole dalej. Rozpisałem sobie wszystko pomału i zacząłem zastanawiać się jak to zrobić (nie obiektowo, obiektówke równolegle dopiero poznaje). Problem główny spotkałem w tym jak manipulować strumieniem wyjściowym. Chodzi mi o to, by wydrukować planszę razem z wszystkimi przedmiotami i jak tym dalej sterować. Chodzi o to, żeby nie wypisywać całej planszy od nowa, tylko by plansza zmieniła się. Jakby ktoś podesłał mi link, albo chociaż jak to szukać by przyswoić te informacje. Nie zależy mi na gotowym rozwiązaniu, tylko na nauczeniu się czegoś nowego, najlepiej na przykładach (np. menu, gra w kółko i krzyżyk itp.). Z góry dziękuję za pomoc ;)

1 odpowiedź

0 głosów
odpowiedź 18 lutego 2016 przez MetGang Nałogowiec (34,360 p.)

1. Rysujesz szachownicę.
2. Zapisujesz w tablicy gdzie jaki przedmiot/pole jest.
3. Za pomocą gotoxy() (popatrz w necie) ustawiasz odpowiednio na każdym polu kursor i rysujesz odpowiedni z tablicy przedmiot.
4. Ruch masz na zasadzie gotoxy() na miejsce docelowe i tam rysujesz, potem wracasz gotoxy() do poprzedniej pozycji i zamalowujesz odpowiednim przedmiotem/polem z tablicy.

Tutaj dwa przykłady z mojego bardzo starego kodu z Kółko i Krzyżyk (GotoYX() to własna implementacja gotoxy()):

// Rysowanie planszy
for(int p=1; p<=pX; p++)cout<<" "; cout<<LG<<Bx<<Bx<<Bx<<PG<<LG<<Bx<<Bx<<Bx<<PG<<LG<<Bx<<Bx<<Bx<<PG<<endl;
for(int p=1; p<=pX; p++)cout<<" "; cout<<By<<"   "<<By<<By<<"   "<<By<<By<<"   "<<By<<endl;
for(int p=1; p<=pX; p++)cout<<" "; cout<<LD<<Bx<<Bx<<Bx<<PD<<LD<<Bx<<Bx<<Bx<<PD<<LD<<Bx<<Bx<<Bx<<PD<<endl;
// Rysowanie domyślnego pola
Color(8);
GotoYX(3*LY+0+pY,5*LX+pX); cout<<LG<<Bx<<Bx<<Bx<<PG;
GotoYX(3*LY+1+pY,5*LX+pX); cout<<By<<' '<<AreaSign[LY][LX]<<' '<<By;
GotoYX(3*LY+2+pY,5*LX+pX); cout<<LD<<Bx<<Bx<<Bx<<PD;

// Rysowanie aktywnego pola
Color(7);
GotoYX(3*Y+0+pY,5*X+pX); cout<<LG<<Bx<<Bx<<Bx<<PG;
GotoYX(3*Y+1+pY,5*X+pX); cout<<By<<' '<<AreaSign[Y][X]<<' '<<By;
GotoYX(3*Y+2+pY,5*X+pX); cout<<LD<<Bx<<Bx<<Bx<<PD;

 

komentarz 19 lutego 2016 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
U mnie plan jest taki, że z pliku wczytuje mi wymiar tablicy oraz ilość i położenie wszystkim elementów. Coś jak wczytywanie obrazów pgm czarno-białych. Potem drukuje mi całą tablicę na strumieniu wyjściowym. Gracz wcześniej dowiedział się, że ma używać strzałek do poruszania swoim bohaterem (plusem). Chodzi mi o to, że jak zrobić by tak jakby nadrukować tablicę na poprzednią. Nie wydrukować zmienioną tablicę ze zmienionym położeniem bohatera tylko nadpisać poprzednią zmieniając tylko dwie szufladki w tablicy. Jedna musi być pusta, druga musi być bohaterem i zamieniają się wartościami. Coś typu jak lustrzane odbicie dla tych dwóch (ewentualnie 3, jeżeli używając trampoliny). Wszystko umiem zrobić oprócz tego nadpisania. Albo nie rozumiem dobrze tego gotoxy, ale jak dla mnie to ona nie robi tego co ja chcę. Moje programowanie jest na razie na niskim poziomie więc nie rozumiem zbytnio jak działa Twój kod. Jakbyś mógł mi to bardziej wytłumaczyć, chyba, że nie zrozumieliśmy się nawzajem ;)

Podobne pytania

0 głosów
0 odpowiedzi 202 wizyt
pytanie zadane 11 stycznia 2016 w Inne języki przez Prime_Bull Obywatel (1,820 p.)
0 głosów
1 odpowiedź 628 wizyt
pytanie zadane 15 maja 2020 w C i C++ przez Czarus Obywatel (1,310 p.)
+1 głos
3 odpowiedzi 8,065 wizyt
pytanie zadane 9 czerwca 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)

93,608 zapytań

142,531 odpowiedzi

323,002 komentarzy

63,099 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...