Vector ASCII-Hintergrundbild



  • #include <conio.h>
        #include <iostream>
        #include <vector>
        #include <string>
        #include <Windows.h>
    
        using namespace::std;
    
        void initPic (void);
        void placeCar (void);
    
        vector <string> pic;
        vector <string> pic_kopie;
    
        void main (void)
    
        {
        initPic();
        placeCar();
    
        getch();
    
        }
    
        void initPic (void)
        {
        // Feld erstellen
        for (int i = 0; i <= 20; i++)
        {
        pic.push_back("____________________________________________");
        }
        }
    
        void placeCar (void)
        {
        // Auto auf Standard platzieren
        pic[0][0] = '*';
    
        // Feld ausgeben
        for (int j = 0; j <= 20; j++)
        {	
        cout << endl;
        cout << pic[j];
        }
        }
    

    Hallo!

    Es geht darum das ich per vector ein "Spielfeld" auf der Konsole ausgebe auf dem ein "Auto" (Hier der Stern, der auf Startplatz[0][0] steht) steht. Das klappt soweit auch --> Siehe Quellcode!

    Nun will ich aber dass das Auto ('*'), sich nach jedem Funktionsaufrauf placeCar() im Bild um eine Stelle bewegt. z.B. geradeaus oder nach unten.

    Habe überlegt das Fahrzeug entsprechend seiner aktuellen Position immer wieder in eine frische Kopie (Vector pic_kopie) des Hintergrundbildes zu zeichnen... Sonst müsste ich es ja immer wieder restaurieren, weil ich sonst irgendwann ganz viele Sterne auf der Konsole habe.

    Jemand ne Idee? Vielleicht öffnet ihr kurz das Programm, dann wisst ihr was ich meine.


  • Mod

    Benutz ein Spieleframework oder wenigstens ein Konsolenframework. Mit denen kannst du auf den Pixel bzw. auf das Zeichen genau deine Ausgaben machen. Standard-C++ kennt als Ausgabe bloß einen langen Strom von Zeichen, der auch nicht unbedingt auf einer Konsole landen muss. Denkbar ungeeignet, um animiert Bilder zu erzeugen.

    Wie du dann wiederum auf einfache Weise Animationen vor einem festen Hintergrund erzeugst, ist ebenfalls eher eine Frage zu Spieleprogrammierung. Ein Spieleframework wird dir diese Arbeit vollständig abnehmen, beziehungsweise das Problem kommt garn icht erst auf, weil man heutzutage Computergrafiken ganz anders erzeugt. Wenn du es selber programmieren möchtest, wäre ein Stichwort "Sprite" das ist jedoch eher eine Technik der 1980er Jahre, für ein selbstgeschriebenes Konsolenspiel und zum Programmieren lernen vielleicht doch noch ganz brauchbar.


Anmelden zum Antworten