"display" programmieren



  • Hallo, ich möchte so etwas wie ein display bauen...
    also:

    .............
    .............
    .............

    usw..
    ich möchte dann einzelne "pixel" ansprechen.
    ich stosse dort auf ein logistisches problem, denn wenn ich die einzelnen funktionen zum löschen/füllen eines pixels aufrufe, so löscht es diese beim nächsten aufruf.
    mein Code zum verständnis

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    //zum füllen
    void fill(int spalte, int zeile){
    
    }
    //zum löschen
    void clear(int spalte, int zeile, int width, int height){
        int s = 0;
    
        /*height /\
        //       ||
        //       \/  */
        while(s < height){
    
            //width <---->
            int i = 0;
            while(i < width){
                if((i+1) == spalte && (s+1) == zeile){
                    cout << "  ";
                }
                else{
                    cout << ". ";
                }
                i++;
            }
            cout << endl;
            s++;
        }
    }
    //zum erstellen der tabelle
    void create_table(int width, int height){
        int s = 0;
    
        /*height /\
        //       ||
        //       \/    */
        while(s < height){
    
            //width <---->
            int i = 0;
            while(i < width){
                cout << ". ";
                i++;
            }
            cout << endl;
            s++;
        }
    }
    
    int main()
    {
        int height = 10;
        int width = 10;
        create_table(width, height);
        Sleep(1000);
        system("cls");
        clear(1, 1, width, height);
        Sleep(1000);
        system("cls");
        clear(2, 2, width, height);
        return 0;
    }
    

    ausgaben sind dann das:

    _.........
    ..........
    ..........
    ..........
    ..........
    ..........
    ..........
    ..........
    ..........
    ..........

    danach halt:
    ..........
    ._........
    ..........
    ..........
    ..........
    ..........
    ..........
    ..........
    ..........
    ..........

    ich hoffe ihr versteht mich..
    danke im vorraus 😃



  • weiß niemand etwas?



  • ich würde es an deiner stelle mal im winapi bereich versuchen



  • Ich glaub eher er will das auf na ganz normalen Konsole mit Punkten als "Pixel" machen xD.



  • Tim06TR schrieb:

    ich würde es an deiner stelle mal im winapi bereich versuchen

    echt? wie...
    ich glaube fragensteller1 hat mich besser verstanden.
    ich möchte in dem Dosfenster(das gleiche hat auch cmd) "pixel" mit punkten machen.
    es soll eine übung für treiber sein 🙂



  • also nochmal genauer:
    ich könnte auch einfach so machen:

    cout << z1s1 << z1s2 << z1s3 << z1s4 << endl
         << z2s1 << z2s2 << z2s3 << z2s4 << endl;
    // z1s1 usw sind variablen für punkte //
    

    usw...
    da ich aber verschiedengroße tabellen erzeugen möchte, kann ich es so nicht machen, obwohl es das einfachste wäre...



  • Hallo

    Hum, dass wird so ohne weitere Mittel nicht ganz einfach. Du wirst schon Probleme nach dem Schreiben eines "Pixels" (wie du ihn nennst) kriegen, wenn du versuchst einen vorherigen zu bearbeiten.

    Mfg.
    way



  • also ich habs jetz mit vielen variablen gemacht.
    hätte gerne aber noch ne andere möglichkeit 😃



  • Hallo

    Zeig mal her!

    Mfg.
    way



  • also ich hab noch 1 variante..
    Mit einem mehrdimensionalen Arrayist es am einfachsten.(Denke ich :D)

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    //variable der tabelle...
    const char* table[1000][1000];
    
    /* Tabelle mit werten vollschreiben
    ** @param - anzahl der spalten
    ** @param - anzahl der zeilen
    */
    void create_table(int spalten, int zeilen){
        for(int z = 1;z <=zeilen; z++){
            for(int s = 1;s <= spalten; s++){
                table[s][z] = ". ";
            }
        }
    }
    
    /*  WERTE Der tabelle ausgeben....
    ** @param - anzahl der spalten
    ** @param - anzahl der zeilen
    */
    
    void write_table(int spalten, int zeilen){
        for(int z = 1;z <=zeilen; z++){
            for(int s = 1;s <= spalten; s++){
                cout << table[s][z];
            }
            cout << endl;
        }
    
    }
    
    /*  WERT Der tabelle ändern....
    ** @param - anzahl der spalten
    ** @param - anzahl der zeilen
    ** @param - ziffer der spalte, die geändert werden soll
    ** @param - ziffer der zeile, die geändert werden soll
    ** @param - wert, mit dem die vorherige position überschrieben werden soll
    */
    void change_table(int spalten,int zeilen,int spalte, int zeile, const char* value){
        table[spalte][zeile] = value;
        system("cls");
        write_table(spalten,zeilen);
    }
    
    //aufrufen der funktionen ....
    int main(){
        //x = spalten  y = zeilen
        int x = 30;
        int y = 30;
    
        create_table(x,y);
        write_table(x,y);
        change_table(x,y,3,3,"  ");//hier wird der wert 3,3 in ->  <- geändert
    }
    

    hat n bisschen lang gedauert...(zum nachdenken :p )


Anmelden zum Antworten