zeichen verschieben



  • hat jemand eine idee, wie man folgendes realisieren könnte?:

    es soll ein 'x' ausgegeben werden.. bei drücken der taste 1, soll das 'x' ein schritt weiter nach rechts, beim drücken der taste 2, soll das 'x' einen schritt nach links..

    das problem ist insbesondere, wie ich es schaffe, dass das 'x' ja immer von der stelle, an der es bis zum drücken der taste stand, zu löschen..

    hat jemand einen tipp?



  • Mach doch bevor du das Zeichen anzeigst ein clrscr(); !?
    Das x zeigst du dann komfortabel mit gotoxy an.



  • clrscr() -> mindestens MaxX*MaxY Löschvorgänge + 1 Zeichenvorgang = meistens 24*80+1 Vorgänge. Bei einer schlechten Lösung wie zB system() kommt noch zusätzlicher Overhead dazu, ja wir sind nicht mehr in solchen Zeiten, aber irgendwo muss man doch eine Grenze ziehen *g*. Also:

    Wesentlich besser:

    unsigned short int x = 40;
    unsigned short int y = 12;
    
    while(Bedingung)
    {
        // Nächste Bewegung einlesen
        c = getch();
    
        // Beim ersten Mal unsinnig, ansonsten Löschen des Zeichens
        gotoxy(x,y); // Da der Cursor ja leider um eins weiter ist
        cout << ' ';
    
        // Bewegung anpassen
        switch(c)
        {
            // x und y je nach Tastendruck anpassen
        }
    
        // Neu zeichnen
        gotoxy(x,y);
        cout << 'X';
    }
    

    MfG SideWinder



  • @Tommy
    Man kann auch eine Ameise zerdrücken indem man einen 2 Tonnenfels drauffallen lässt 😉


Anmelden zum Antworten