Drugi bufor ekranu

0

Mam napisać program przy użyciu biblioteki console.h, który będzie umożliwiał poruszanie kursorem po ekranie za pomocą strzałek, i po wciśnięciu spacji zapalał/gasił piksel w danym kolorze. Potrzebny jednak jest drugi bufor ekranu np. tablica, żeby program wykonywał się na tym buforze a nie bezpośrednio na ekranie. Jak taki bufor ma być skonstruowany?

0

Najprościej będzie użyć dwuwymiarowej tablicy (albo inaczej mówiąc: macierzy) intów o rozmiarze 80x25 (standardowy rozmiar konsoli).

0

tyle to wiem. Chodzi mi bardziej o działanie. Jak czyścić bufor po każdym przesunięciu kursora, żeby nie kasował tego co jest już na ekranie.

0

Nie wiem jak działa ta biblioteka i google nie daje jednoznacznej odpowiedzi. Ogólnie to masz jeden bufor, który jest wyświetlany oraz drugi, na którym rysujesz. Przy wyświetlaniu kolejnej klatki zamieniasz ze sobą wskaźniki na bufory. Jeżeli buforem jest taka dwuwymiarowa tablica znaków to do czyszczenia memset będzie wystarczający.

0
Zjarek napisał(a)

Nie wiem jak działa ta biblioteka i google nie daje jednoznacznej odpowiedzi. Ogólnie to masz jeden bufor, który jest wyświetlany oraz drugi, na którym rysujesz. Przy wyświetlaniu kolejnej klatki zamieniasz ze sobą wskaźniki na bufory. Jeżeli buforem jest taka dwuwymiarowa tablica znaków to do czyszczenia memset będzie wystarczający.

Dzięki, trochę mi to pomogło.

Zjarek napisał(a)

Przy wyświetlaniu kolejnej klatki zamieniasz ze sobą wskaźniki na bufory.

Ale możesz trochę bardziej rozwinąć tę kwestię?

0

Ta biblioteka nie wygląda za ciekawie. Wg mnie jak musisz jej używać, to zrób sobie własny bufor o odpowiednim rozmiarze, ale najlepiej jako ciągła tablica (może to być ze względu na konstrukcje tej biblioteczki tablica char tab[50][80]) i wszystkie zmiany rób na niej. Po odczekaniu jakiegoś czasu, np. 16 ms (60 fpsów zakładając, że szybkość pozostałych operacji jest zerowa) przejdź do pierwszego znaku (0,0) i wypisz bufor używając funkcji write (static_cast<char*>(tab)). Drugiego bufora nie musisz używać w tym wypadku.

0
Zjarek napisał(a)

Ta biblioteka nie wygląda za ciekawie.

wiem, prymitywna jest.

Zjarek napisał(a)

Drugiego bufora nie musisz używać w tym wypadku.

Tylko, że mam w wymaganiach, że ma być drugi bufor. Chodzi o to, że w pierwszym buforze mam poruszać kursorem a gdy nacisnę spacje to ma się zamalować w tym miejscu kwadrat. Kursor ma być w kształcie "X" i gdy najedzie na zamalowany kwadrat to ma go nie zasłaniać tylko ma być widać ten "X" na tym kolorowym tle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1