Ausgabe nur kurz anzeigen



  • Mein Code:

    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    namespace taste{
        const int p_oben = 72;
        const int p_unten = 80;
        const int p_rechts = 77;
        const int p_links = 75;
        const int leertaste = 32;
        const int esc = 27;
    }
    
    void spielfeld(int &x, bool &schuss){
    
        char feld[10][10]= {{'_','_','_','_','_','_','_','_','_','_'},//0
                            {'_','_','_','_','_','_','_','_','_','_'},//1
                            {'_','_','_','_','_','_','_','_','_','_'},//2
                            {'_','_','_','_','_','_','_','_','_','_'},//3
                            {'_','_','_','_','_','_','_','_','_','_'},//4
                            {'_','_','_','_','_','_','_','_','_','_'},//5
                            {'_','_','_','_','_','_','_','_','_','_'},//6
                            {'_','_','_','_','_','_','_','_','_','_'},//7
                            {'_','_','_','_','_','_','_','_','_','_'},//8
                            {'_','_','_','_','_','_','_','_','_','_'}};//9
                          //  0    1   2   3   4   5   6   7   8   9
    
        if(x<0){
            x=0;
        }
        else if(x>9){
            x=9;
        }
        else{
        }
    
                if(schuss==true){
                    for(unsigned int i=0;i<9;i++){
                        feld[i][x]='|';
                    }
                    //y ist die Spalte
                    //x ist die Zeile
    
                    //X Bewegt sich auf x (Zeile)
                }
    
        feld[9][x]='X';
    
        system("CLS");
    
        for(unsigned int y=0;y<10;y++){ //Gibt das Spielfeld aus 0-9
            if(y==0){
            }
            else{
                cout << "\n";
            }
            for(unsigned int x=0;x<10;x++){
                cout << feld[y][x];
            }
    
        }
        schuss=false;
    }
    
    int main(){
        int eingabe=0, x=0;
        bool schuss=false;
    
        spielfeld(x, schuss);
    
        do{
        eingabe=getch();
            switch(eingabe){
                case taste::p_oben: schuss=true;
                                    spielfeld(x, schuss);
                                    break;
                case taste::p_unten:
                                    break;
                case taste::p_rechts: x++;
                                    spielfeld(x, schuss);
                                    break;
                case taste::p_links: x--;
                                    spielfeld(x, schuss);
                                    break;
            }
        }while(eingabe!=taste::esc);
        return 0;
    }
    

    Mein Problem ist ich würde gerne das wenn ich nach oben komme die Reihe von "|", nur einmal kurz gezeigt wird. Ich habe nun damit rumgespielt bekomme es aber nicht hin.



  • Soll die Ausgabe nur in der Konsole ausgegeben werden? (Konsolen-spiel)

    Falls ja, wäre meine Idee einfach nochmal eine Ausgabe (oder mehr) zu machen wo das '|' wieder weg ist. Klar kann man dann hoch scrollen, aber das ist dass einzige was mir für die Konsole einfällt.



  • Ausgabe nur kurz anzeigen:

    #include <windows.h>
    
    void ClearScreen(void)
    {
        CONSOLE_SCREEN_BUFFER_INFO csbi;
        COORD target = {0, 0};
        DWORD written;
    
        GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
        FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), ' ',
                                                csbi.dwSize.X * csbi.dwSize.Y,
                                                target, &written);
        FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7,
                                                csbi.dwSize.X * csbi.dwSize.Y,
                                                target, &written);
    }
    
    void SetWindowExt(int x, int y, int yMulti = 1)
    {
        SMALL_RECT sr_window = {0, 0, x - 1, y - 1};
        COORD      extension;
        CONSOLE_SCREEN_BUFFER_INFO csbi;
    
        GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
    
        extension.X = max(x, csbi.dwMaximumWindowSize.X);
        extension.Y = max(y, csbi.dwMaximumWindowSize.Y);
    
        SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), extension);
        SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &sr_window);
    
        extension.X = x;
        extension.Y = y * yMulti;
        SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), extension);
    }
    
    void DruckSimpleText(int x, int y, char const *text)
    {
        COORD target = {x, y};
        DWORD written;
    
        WriteConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), text,
                                                strlen(text),
                                                target, &written);
    }
    
    void SetCursorVisible(BOOL v)
    {
        CONSOLE_CURSOR_INFO ci;
    
        GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &ci);
    
        ci.bVisible = v;
    
        SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &ci);
    }
    
    int main()
    {
       SetWindowExt(30, 30);
       ClearScreen();
       SetCursorVisible(false);
    
       for(int i = 0; i < 10; ++i)
       {
          DruckSimpleText(i, i, "kurz Hallo");
          Sleep(1000);
          DruckSimpleText(i, i, "          ");
       }
    
       SetCursorVisible(true);
    }
    

Anmelden zum Antworten