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

Rysowanie "mapy" w konsoli

Object Storage Arubacloud
0 głosów
709 wizyt
pytanie zadane 9 października 2017 w C i C++ przez amited Początkujący (470 p.)
Mam w planie napisanie jakieś prostej planszówki w c++, więc zaczynam od narysowania mapy w konsoli. I tutaj mam pierwszy problem, po uruchomieniu programu na osi X tam gdzie jest gracz ramka wystaje o jedno pole więcej niż powinna. Powodem jest pewnie to że wypełniłem tą mapkę spacjami, a dodanie znaku powoduje dodanie kolejnego couta przez co ramka ma o jedno pole więcej niż powinna. Jest też drugi błąd ale jest on w SS. Jeżeli ciężko zrozumieć co napisałem to proszę zerknąć na kod oraz SS:

https://pastebin.com/ePUYyHYz

http://scr.hu/59s5/as0tz
https://scr.hu/59s5/ek6m8

Jeżeli macie jakieś pomysły to z chęcią posłucham :) // Optymalizacja leży ale teraz skupiam się tylko na tym błędzie

1 odpowiedź

0 głosów
odpowiedź 9 października 2017 przez Gynvael Coldwind Nałogowiec (27,530 p.)

Tak na szybko, to możesz zmienić kolejnością te dwa if'y i dodać continue:

Przed:

            if (mapa[i][j]=='p')
                cout<<" ";
            if (i==a && j==b)
            {
                mapa[a][b]='g';
                cout<<"@";
            }

Po:

            if (i==a && j==b)
            {
                mapa[a][b]='g';
                cout<<"@";
                continue;
            }

            if (mapa[i][j]=='p') {
                cout<<" ";
                continue;
            }

Z wysokopoziomowych rad i widzimisiów, to pewnie bym zrobił jeszcze jeden bufor wielkości mapy, i przy rysowaniu robił tak:

  1. kopiował (memcpy) cały bufor mapa do tego nowego buforu
  2. rysował w odpowiednim miejscu tego nowego buforu gracza
  3. linia po linii buforu robił cout << bufor[n] << "\n";

To trochę ułatwia sprawę, bo nie musisz pamiętać o "czyszczeniu" miejsca w którym gracz stał po jego ruchu.

Podobne pytania

0 głosów
2 odpowiedzi 3,109 wizyt
pytanie zadane 19 stycznia 2017 w C# przez kondzio11 Nowicjusz (160 p.)
+1 głos
1 odpowiedź 3,954 wizyt
pytanie zadane 5 grudnia 2015 w Nasze projekty przez C☺ndzi Stary wyjadacz (12,100 p.)
0 głosów
1 odpowiedź 221 wizyt
pytanie zadane 16 stycznia 2018 w C i C++ przez moldoveanu Nowicjusz (150 p.)

92,568 zapytań

141,420 odpowiedzi

319,623 komentarzy

61,956 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...