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

Problem z prawidłowym wyświetleniem mapy 2d ASCII do gry

Object Storage Arubacloud
+1 głos
180 wizyt
pytanie zadane 4 września 2016 w C i C++ przez Pesio Użytkownik (760 p.)

Między przerabianiem kolejnych odcinków kursu C++ postanowiłem się sprawdzić i stworzyć prostą grę typu rougelike. Mam jednak problem z prawidłowym wyświetleniem wygenerowanej mapy. Za każdym razem wygląda ona tak: http://puu.sh/qZAkf/03d6656062.png  Nie wiem w czym leży problem.

Kod: http://pastebin.com/eUkgHg8w

Przy okazji, istnieje może sposób na zmniejszenie mrugania konsoli przy jej odświeżaniu co ruch?

 

2 odpowiedzi

+1 głos
odpowiedź 4 września 2016 przez MetRiko Nałogowiec (37,110 p.)
wybrane 4 września 2016 przez Pesio
 
Najlepsza

1. Wypisywanie każdego znaku w taki sposób: cout<<znak; jest bardzo wolną metodą.. lepiej będzie jeżeli zapiszesz całą mapę to jakiegoś stringa i wtedy dopiero będziesz wypisywał całą mapę.. po prostu chodzi o to by nie wypisywać całej mapy znak po znaku i ustawiać co kolejny znak kursor na jakaś pozycję.
2. W funkcji gotoxy(...) nie powinieneś robić żądnej dekrementacji:
c.X=x-1;
c.Y=y-1;

zamień po prostu na:
c.X=x;
c.Y=y;

Zauważ, że gdy ustawiasz kursor na taką pozycję:
gotoxy( 0, y);
Ustawisz obiekt typu COORD na takie wartości: c,x=-1 i c.y=y-1;
Prawdopodobnie to jest źródło problemu.
3. Jeżeli chcesz pozbyć się "migania" musisz nadać swojej grze stałej prędkości.. aktualnie procesor działa na najwyższych obrotach (w twoim kodzie).. tak więc trzeba go trochę spowolnić nadając pewną stałą prędkość.. Tu masz link do tzw. pętli stałokrokowej.. przeanalizuj sobie ten temat, a następnie spróbuj ją zastosować w swoim kodzie:
http://gameprogrammingpatterns.com/game-loop.html

komentarz 4 września 2016 przez Pesio Użytkownik (760 p.)
Dzięki, super odpowiedź!

Na razie to tylko taka wersja rozwojowa, sposób wczytywania mapy jeszcze zmienię. Nie wiem co mnie napadło na tę dekrementacje w gotoxy()... Teraz wyświetlanie mapy wydaje się działać. O tej pętli stałokrokowej na pewno trochę poczytam.

Dzięki za pomoc.
0 głosów
odpowiedź 4 września 2016 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Kod zaraz przejrzę, teraz odpowiem na to drugie pytanie.

Nie zaglądałem jeszcze w kod, ale skoro mówisz że konsola mruga, to pewnie po wykonaniu każdego ruchu graczem czyścisz całkowicie ekran. Zamiast tego, proponuję zaimplementować sobie funkcję gotoxy. Jak to zrobić pod windowsem, a jak pod Linuksem czy innymi systemami znajdziesz w internecie. Jeśli używasz windows10 (który z tego co wiem wspiera ANSI Esc codes), to możesz użyć sposobu z właśnie ANSI Escape Codes (który zadziała też np. na Linuksie).

A problemem jest zapewne to, że po narysowaniu jednej linii mapy, nie wstawiasz znaku końca linii - jako '\n' lub jako std::endl.

Podobne pytania

0 głosów
3 odpowiedzi 967 wizyt
pytanie zadane 3 lipca 2017 w C i C++ przez Programista3 Gaduła (3,390 p.)
0 głosów
0 odpowiedzi 200 wizyt
pytanie zadane 4 sierpnia 2017 w C# przez DeBos123 Nałogowiec (44,950 p.)
0 głosów
2 odpowiedzi 648 wizyt
pytanie zadane 17 kwietnia 2017 w C i C++ przez fatalFOx Początkujący (300 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...