Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyświetalnie, rysowanie gry

Ostatnio zmodyfikowano 2013-12-15 17:14
Autor Wiadomość
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.
P-99222
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 :)
P-99227
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.
P-99230
Wasilek
» 2013-12-14 23:46:03
Chodziło właśnie o to :) Skorzystaj z funkcji, która ustala pozycję "kursora" w konsoli.
P-99235
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?

C/C++
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() {
    // b - tyl, h - glowa
    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.
P-99239
pekfos
» 2013-12-15 11:31:27
kbhit().
P-99248
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.
P-99293
pekfos
» 2013-12-15 17:14:00
ReadConsoleOutput().
P-99297
« 1 »
  Strona 1 z 1