Wyświetalnie, rysowanie gry
Ostatnio zmodyfikowano 2013-12-15 17:14
dagi12 Temat założony przez niniejszego użytkownika |
Wyświetalnie, rysowanie gry » 2013-12-14 21:46:15 Witam
Robię węża w c++ i nie wiem w sumie jak rysować program na ekranie.
Zrobiłem dwuwymiarową tablicę znaków ascii. Na razie moje rysowanie polega na tym, że w głównej pętli mam czyszczenie znaków i ponowne wyświetlanie całej tablicy na ekranie. Co jest dosyć nieefektywne bo ekran miga (przez system("cls")) i musi ponownie drukować nawet te znaki, które się nie zmieniły przez co jest wolny.
Ma ktoś jakiś inny pomysł na rysowanie znakami ascii. Dodam, że nie chcę się zagłębiać w jakieś skomplikowane biblioteki typu (SFDM, Allegro) bo nie mam czasu na ich ogarnięcie (jeszcze tydzień na oddanie projektu).
Z góry dzięki za pomoc. |
|
Wasilek |
» 2013-12-14 22:18:33 Zamiast z "endl" korzystaj z "\n". Nie odświeżaj ekranu xxx razy na sekundę tylko ogranicz wyświetlanie do momentu poruszenia się węża. To powinno pomóc :) |
|
dagi12 Temat założony przez niniejszego użytkownika |
» 2013-12-14 22:45:38 Problem w tym, że ja nie odświeżam zawartości konsoli tylko ją kasuję, a następnie drukuje odnowa. Gdybyś znał funkcję która odświeży zawartość w odpowiedni sposób byłbym wdzięczny. |
|
Wasilek |
» 2013-12-14 23:46:03 Chodziło właśnie o to :) Skorzystaj z funkcji, która ustala pozycję "kursora" w konsoli. |
|
dagi12 Temat założony przez niniejszego użytkownika |
» 2013-12-15 03:47:31 Ok poradziłem sobie z problemem teraz następny. Jak zrobić by wąż nie czekał na wciśnięcie klawisza? Ok pojawia się następne pytanie. Jak zrobić by wąż nie czekał na wciśnięcie klawisza? char czytaj_klawiature() { char klawisz, kierunek; klawisz = getch(); switch( klawisz ) { case char( 75 ) : kierunek = 'l'; break; case char( 77 ) : kierunek = 'p'; break; case char( 72 ) : kierunek = 'g'; break; case char( 80 ) : kierunek = 'd'; break; } return kierunek; }
int main() { int bx = 10, by = 10, hx = 10, hy = 16; bool koniec = 1; rys_mapy(); do { por_h_waz( & bx, & by, & hx, & hy, czytaj_klawiature() ); opoznienie( 250 ); } while( koniec ); return 0; } Taki kod powoduje, że każde wywołanie funkcji getch() stopuje węża i czeka na wciśnięcie klawisza klawiatury. |
|
pekfos |
» 2013-12-15 11:31:27 kbhit(). |
|
dagi12 Temat założony przez niniejszego użytkownika |
» 2013-12-15 16:57:58 Ok, ostatnie pytanie bo już kończę grę. Jak "wczytać" znak, który znajduje się na danej pozycji?
Tzn. chodzi mi o funkcję, której podam współrzędne komórki w konsoli a ona zwróci mi znak bo robię kolizje. |
|
pekfos |
» 2013-12-15 17:14:00 ReadConsoleOutput(). |
|
« 1 » |