Strukturen und Listen



  • Hallo, habe ein Problem...habe aus meinem Code mal die Stellen reinkopiert um die es geht. Falls jemand eine Idee hat, aber den ganzen Code braucht melden.
    Es geht um ein Malprogramm das Punkte zeichnet, an die Stelle wo man klickt. Mit Hilfe von OpenGl. Eigentlich klappt es auch, aber ich möchte die for-Schleife etwas anders gestalten, bekomme es aber nicht hin.
    Also, zu erst habe ich mir eine Liste angelegt, die mir meine Klicks alle speichert.
    Dann habe ich eine Struktur angelegt, damit mir x und y Wert zusammen übergeben werden.(ist das überhaupt richtig gemacht??)
    Wie kann ich jetzt aber meine for-Schleife umschreiben, dass an der Stelle clickCoordinates[i], der x-Wert gezeichnet wird und an der Stelle height-cklickCoordiniates der y-Wert? Ohne dass ich das i=i+2 und [i+1] brauche.
    Versteht jemand weiß ich meine????????
    Ich will Quasi meine xyCoordinates.x oder temp.x oder wie man das schreibt in die for-SChleife schreiben. Geht das irgendwie??

    ...
    //stores coordinates
    vector<int>clickCoordinates;
    int x,y;

    typedef struct
    {
    int x;
    int y;
    }xyCoordinates ;

    ...
    void display (void)
    {
    ...
    for (int i=0; i<clickCoordinates.size();i=i+2)
    glVertex2f(clickCoordinates[i], height - clickCoordinates[i]);

    glEnd();
    glFlush();

    }

    //mouse function
    void mouse (int button, int state, int x, int y)
    {
    if (button == GLUT_LEFT_BUTTON &&state == GLUT_DOWN) {
    glVertex2i(x,y);

    xyCoordinates temp;
    temp.x;
    temp.y;

    clickCoordinates.push_back(x);
    clickCoordinates.push_back(y);

    for (int i=0; i<clickCoordinates.size(); i++)
    ....
    }

    ich weiß nich mehr weiter 😞



  • Warum definierst du clickCoordinates nicht als

    vector<xyCoordinates>clickCoordinates;
    

    die funktion void mouse (int button, int state, int x, int y); könnte dann so aussehen.

    void mouse (int button, int state, int x, int y)
    {
       if (button == GLUT_LEFT_BUTTON &&state == GLUT_DOWN) {
          xyCoordinates temp;
          temp.x = x;
          temp.y = y;
          clickCoordinates.push_back(temp);
       }
    }
    

    die funktion display (void) könnte dann etwa so aussehen.

    void display (void){
       ...
       for (int i=0; i<clickCoordinates.size();++i) {
          glVertex2f(clickCoordinates[i].x, height - clickCoordinates[i].y);
          ....
       }
    }
    

    Kurt



  • Genau wieso mach ich es nicht einfach so 🙂
    Danke, bist meine Rettung, musste nur die Definitionen noch am Anfang umdrehen.
    Juhu 🙂



  • Das ist genau das was ich dir bereits gestern abend vorgeschlagen habe -.-'

    Naja wie auch immer ....


Anmelden zum Antworten