2017-10-14 2 views
-1
void onClick(int button, int state, int x, int y) { 
    if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) 
    drawHouse(x,y); 
} 

Hallo,Öffnen Sie ein neues Objekt in jedem Klick?

Ich habe ein Problem über opengl Funktion Onclick. Ich zeichnete ein Objekt (primitives Haus) und ich möchte es anzeigen, wenn ich mit der Maus klicke. Wie kann ich das machen?

gab Meinen Lehrer diesen Befehl ein: "ein neues Objekt hinzufügen, im ersten Teil definiert, nachdem der Benutzer linke Maustaste drückt Jeder Klick auf der Position des Klickens ein neues Objekt fügt Maximum 10 Objekte erstellt werden können.. der Bildschirm. klicken Sie dann nach jedem ein neues Objekt sollte das erste Objekt ersetzen. "

Danke für die Hilfe ...

+2

Haben Sie etwas versucht? – HolyBlackCat

+0

Wie wäre es, die Mauspositionen in einem Array mit einer Länge von 10 zu speichern? Jeder Klick fügt dem Array einen neuen Eintrag hinzu. Wenn das Array voll ist, werden die Einträge überschrieben. – Rabbid76

+0

@HolyBlackCat nein, ich steckte drin ... – hsntrk

Antwort

0

eine mögliche soultion würde die Maus Positionen in einem Array mit einer Länge von 10 zu speichern sein Jeder Klick fügt dem Array einen neuen Eintrag hinzu. Wenn das Array voll ist, erhalten die Einträge überschrieben:

#define MAX_OBJ 10 

int pos_x[MAX_OBJ], pos_y[MAX_OBJ]; 
int count = 0; 
int next_i = 0; 

void onClick(int button, int state, int x, int y) 
{ 
    if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) 
    { 
     pos_x[next_i] = x; 
     pos_y[next_i] = y; 
     next_i ++; 
     if (next_i == MAX_OBJ) next_i = 0; 
     if (count < MAX_OBJ) count ++; 
    } 
} 

In der Hauptschleife können Sie die Objekte auf den bekannten Positionen zeichnen:

for(int i = 0; i < MAX_OBJ; ++ i) 
    drawHouse(pos_x[i], pos_y[i]); 
Verwandte Themen