Odświeżanie konsoli
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Odświeżanie konsoli

AutorWiadomość
Temat założony przez niniejszego użytkownika
Odświeżanie konsoli
» 2018-04-20 00:13:43
Czy jest jakiś inny sposób odświeżania konsoli nie licząc system("cls") i wyświetlenia ponownie ? mam taką śmieszną sprawę, a dokładniej że przy "poruszaniu się" ekran miga, ponieważ zbyt późno się odświeża(Jestem dość nowy w C++).
C/C++
#include <iostream>
#include <windows.h>
#include <conio.h>

using namespace std;
string mapa[ 25 ][ 49 ]
{
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " ", " " },
    { " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " " },
    { " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " " },
    { " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " " },
    { " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " " },
    { " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " " },
    { "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " " },
    { " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " " },
    { " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " ", " ", " " },
    { " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " " },
    { " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " " },
    { " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " " },
    { " ", " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " " },
    { " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " " },
    { " ", " ", " ", " ", " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " " },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#" },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#", "#", " ", " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " " },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " ", " ", " " },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", "#", " ", " ", " ", " ", " ", " " },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#", " ", "#", "#", "#", "#", "#", "#", "#", "#", " ", "#", "#", "#", "#", "#", "#", "#", " ", " ", " ", " ", " ", " ", " " },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "#", "#", "#", " ", " ", " ", " ", " ", " ", " " },
    { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " }
};

int x = 5, y = 6;
int a = 0, b = 0;
char A;
int main()
{
    while( true )
    {
        a = 0;
        while( a < 25 )
        {
            while( b < 49 )
            {
                if(( a == x ) &&( b == y ) )
                {
                    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 44 );
                    cout << "X";
                }
                else if( mapa[ a ][ b ] == " " )
                {
                    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 176 );
                    cout << mapa[ a ][ b ];
                }
                else
                {
                    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 47 );
                    cout << mapa[ a ][ b ];
                }
                b++;
            }
            SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 15 );
            cout << endl;
            b = 0;
            a++;
        }
        A = getch();
        if(( A == 'w' ) ||( A == 'W' ) ||( A == 'H' ) )
        {
            if( mapa[ x - 1 ][ y ] != " " )
            {
                x--;
            }
        }
        if(( A == 's' ) ||( A == 'S' ) ||( A == 'P' ) )
        {
            if( mapa[ x + 1 ][ y ] != " " )
            {
                x++;
            }
        }
        if(( A == 'a' ) ||( A == 'A' ) ||( A == 'K' ) )
        {
            if( mapa[ x ][ y - 1 ] != " " )
            {
                y--;
            }
        }
        if(( A == 'd' ) ||( A == 'D' ) ||( A == 'M' ) )
        {
            if( mapa[ x ][ y + 1 ] != " " )
            {
                y++;
            }
        }
        system( "cls" );
    }
    return 0;
}
P-170759
» 2018-04-20 00:57:29
Wyświetlaj ponownie bez czyszczenia.
P-170760
» 2018-04-20 09:06:11
P-170761
» 2018-04-20 11:23:53
Każdy sposób czyszczenia konsoli będzie powodował miganie.
P-170764
» 2018-04-20 14:40:46
Chyba że użyjesz podwójnego buforowania, wtedy co prawda całość będzie za każdym razem czyszczona, ale wyświetlenie nastąpi dopiero wtedy, gdy wszystko będzie gotowe.
P-170767
» 2018-04-21 18:18:33
Możesz użyć gotoxy() i wtedy nadpisujesz to co było na ekranie ustawiając kursor na pierwszym wersie i pierwszej kolumnie.
Tu masz kod gotoxy():
C/C++
#include <windows.h>

void gotoxy( int x, int y )
{
    COORD c;
    c.X = x - 1;
    c.Y = y - 1;
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), c );
}
Musisz dołączyć windows.h żeby działało, i ustawiasz na kursor na początku i masz. Może troszkę pomóc, aczkolwiek nie ma idealnego sposobu... znaczy zawsze możesz zaopatrzyć się w jakiegoś Core I7, I9 bądź Xeona to wtedy nawet nie zauważysz że się odświeża.. :P
P-170769
» 2018-04-21 18:45:56
Każdy sposób czyszczenia konsoli będzie powodował miganie.
znaczy zawsze możesz zaopatrzyć się w jakiegoś Core I7, I9 bądź Xeona to wtedy nawet nie zauważysz że się odświeża.. :P
Dla sprawdzenia odpaliłam NetHacka na przepotężnym komputerze z Pentium III i Windowsem 98, i wcale ciągłego czyszczenia konsoli — a NetHack robi to przy każdym odświeżeniu ekranu, bo nie potrafi inaczej — nie widać.
P-170771
» 2018-04-21 21:29:50
Elaine a skąd wiesz czy przypadkiem nie są odświeżane tylko te sektory, na których coś się dzieje? Bo prawdopodobnie tak to jest wykonane, ja uruchamiając snake z mapą 10x10 na Core I5 2540M i widać było odświeżanie..
P-170778
« 1 » 2
 Strona 1 z 2Następna strona