int state = 1;
bool turbines_visible = true;
// move the hot air balloon up
// make the square go up
void update(int value) {
// 1 : move up
if (state == 1) {
squareY += 1.0f;
if (squareY > 650.0) {
state = 2;
squareX = -400.0f;
squareY = 200.0f;
}
}
// 2 : move right
else if (state == 2) {
squareX += 1.0f;
if (squareX > 500.0) {
state = 3;
squareX = 0.0f;
squareY = 600.0f;
}
}
// 3 : move down
else if (state == 3) {
squareY -= 1.0f;
if (squareY < 0.0) {
state = 0;
}
}
glutTimerFunc(25, update, 0);
turbines_visible = !turbines_visible;
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
switch (state) {
case 0:
drawBackground1();
break;
case 1:
drawBackground1();
break;
case 2:
drawBackground2();
break;
case 3:
drawBackground1();
break;
}
glPushMatrix();
glTranslatef(squareX, squareY, squareZ);
// display spray
drawSpray();
// display hot air balloon
drawAirBalloon();
glPopMatrix();
if (turbines_visible) {
// display first (left) wind turbine
drawLeftTurbine();
// display first (right) wind turbine
drawRightTurbine();
}
// display rain
drawRain();
calcFPS();
counter++;
glFlush();
glutSwapBuffers();
glutPostRedisplay();
}
Воздушный шар прекрасно поднимается вверх, но ветряные турбины очень быстро исчезают и исчезают, чего я не хочу.Я хочу, чтобы он был виден в первой сцене, невидим во второй сцене и снова виден в третьей сцене.Я знаю, что проблема в коде glutTimerFunc
, потому что он использует 25 миллисекунд, но он мне нужен для моего воздушного шара.Буду признателен, если кто-нибудь поможет мне решить эту проблему.
Нажмите здесь, чтобы увидеть полный код
Сцена 1
Нажмите здесь, чтобы увидеть GIF
Сцена 2
Нажмите здесь, чтобы увидеть GIF
Сцена 3
Нажмите здесь, чтобы увидеть GIF