Warten in einer for-Schleife



  • Hi,

    hier mal ein kurzes programm:

    #define	CLS		printf("\033[2J")
    #define	LCT(x, y)	        printf("\033[%d;%dH", y, x)
    #define	X		        printf("x");
    //...
    for(i = 0; i<10; i++){
    
    		CLS;
    		LCT(56, i);
    		X;
    		system("sleep 1");
    
    	}
    //...
    

    Ich möchte das x 10-mal nach unten "springen" lassen, es soll in der Konsole erscheinen, anschließend soll 1 sec gewartet werden und dann soll das x eine zeile tiefer erscheinen. Mein Problem ist, dass das x 10 sec nach starten des Programms einfach 10 Zeilen tiefer erscheint, es springt also nicht. Wie kann ich das springen realisieren?

    Bitte um Hilfe.

    Danke



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • schonmal mit fflush(stdout); probiert?



  • #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 SetCursorPosition(int x, int y)
    {
        COORD pos = {x, y};
    
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
    }
    
    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 DruckSimpleChar(int x, int y, char c)
    {
        char text[2] = {c, 0};
    
        DruckSimpleText(x, y, text);
    }
    
    int main()
    {
       int y;
    
       ClearScreen();
       SetCursorPosition(0, 0);
    
       for(y = 3; y < 13; )
       {
          DruckSimpleChar(5, y, ' ');
          ++y;
          DruckSimpleChar(5, y, 'X');
          Sleep(1000);
       }
    }
    

Anmelden zum Antworten