Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ czyszczenie ekranu


Zenek97

Rekomendowane odpowiedzi

Opublikowano

Wyświetlam w pętli (która jest bardzo szybka) dane w konsoli.

Przed wyświetleniem czyszczę ekran i tu jest problem

Clearscreen działa bardzo wolno i freezuje program.

Na razie robię tak że wywalam 40 \n... i jest niby ok, ale często cała grafika skacze góra dólnp patrzę cały czas w jeden punkt i tam jest liczba 100. Nagle wszystko się przesuwa linijkę w dół.

Jakieś pomysły jak to zrobić?

Opublikowano

Konsola nie posiada podwójnego buforowania więc co byś nie zrobił efekt będzie mizerny. Pobaw się jakąś biblioteką graficzną

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

@repredator, sugerujesz aby nadpisywal obecny text? Możesz nadpisywac pustym znakiem w pętli, albo nowym tekstem jeśli jest o tej samej, bądź większej długości

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Na pewno jest to lepsze, ponieważ cls nie uruchomisz na linuxie. Jakby kolega napisał do czego program służy to moglibyśmy coś zasugerować. I tak jestem zdania ze warto sie nauczyć Qt/WinApi i tam robić takie rzeczy

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Programem jest .dll wstrzykiwany do gry. Konsola służy do sprawdzania błędów... Gdy podczas grania widzę, że coś jest nie tak to wciskam alt tab i patrzę na parametry w konsoli.

system("cls"); działa zbyt wolno!!!

To nie jest problem podwójnego buforowania!

Podwójne buforowanie, to bym widział jak np 100 chcąc się zamienić na 99 wyglądało 100 > 900 > 990 > 99

Problem polega na tym:

T=true >  B=88   > T=true

B=88   >  C=100 > B=88

C=100 >  D=70   > C=100

(w 2 wyświetleniu drgnęło mi o jeden w dól)

i to tak cały czas drga kilka razy na sekundę, gdy parametry są obok siebie to ciężko odczytać co jest co...

Opublikowano

albo zainteresuj się pseudo konsolą w chociażby winapi...

??

 

gotoxy na 1 rzut okiem działa, ale trzeba jeszcze sprawdzić w warunkach bojowych (ale to już jutro)

Opublikowano

Zrób w WinApi okno, w którym będziesz wyświetlał text.

Powinna Ci starczyć wiedza z tych lekcji:

http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Podstawy-WinAPI/168
http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Kontrolki/178

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Ja ten problem w jakiś sposób rozwiązałem poprzez użycie globalnej tablicy struktur CHAR_INFO o wielkości iloczynu szerokości i wysokości ekranu, i wypisanie jej w funkcji WriteConsoleOutput(). Jakoś działało. 

 

PS. CHAR_INFO pozwala na przechowywanie koloru tła tekstu i samego tekstu plus obsługa ascii i unicode.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Jakbyś potrzebował szerokości i wysokości bufora ekranu to możesz zobaczeć mój temat odnoścnie centrowania tekstu, który znajdziesz w temacie zbiorczym (który z resztą też jest mój)

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Dobra ta funkcja REPREDATORA ma następującą wadę

jeśli na początku miałem liczbę 12, która ma się zamienić w 5, to na ekranie pokazuje mi 52...

 

Jak wstawić pusty znak? Jak daję spację, czy enter to wcześniejszy tekst zostaje (jak tło)

Opublikowano

Jest jeszcze coś takiego, wyciągnąłem ze swojej biblioteki, której narazie nie robię :):

void clrscr(int bufor)
{
    COORD pozycja = {0,0};
    DWORD Written;
    FillConsoleOutputCharacter(hOut,' ',bufor,pozycja,&Written);
    SetConsoleCursorPosition(hOut,pozycja);
}

 

Przy czym bufor to ilość znaków, jaka ma być wyczyszczona od początku ekranu. lub od pozycji, jaka jest ustalona. Albo po prostu wypełniasz znakami.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...