Значение переменной не увеличивается в glutIdleFunc () в C ++ - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь непрерывно увеличивать переменную bulletY, когда нажимаю на букву «b» на клавиатуре до максимального размера окна значения y, чтобы получить эффект стрельбы.Однако bulletY увеличивается только один раз.

Вот начальные значения флагов bool и использованных значений double:

bool shoot = false;
bool isDone = false;
double bulletX = 8000 ;
double bulletY = -1;
double plusX = 0;
double plusY = 0;

Ниже приведен метод, используемый для обработки ключевых вводов

void key(unsigned char k, int x, int y)//keyboard function, takes 3 parameters
                                    // k is the key pressed from the keyboard
                                    // x and y are mouse postion when the key was pressed.
{
    if (k == 'b') { //SHOO
        shoot = true;
    }

    glutPostRedisplay();//redisplay to update the screen with the changes
}

Наконец, это функция Anim, которую я создал для передачи в функцию ожидания glutIdleFunc(Anim)

void Anim(){
if (shoot==true) {
        bulletX = plusX;
        bulletY = plusY;
        isDone = true;
    }

            if (isDone&& bulletY<450) {
                bulletY += 1;
                std::cout << "bullet Y is currently at : " << bulletY << "\n";
            }
            else {
                isDone = false;
                shoot = false;
            }
        glutPostRedisplay();
    }

1 Ответ

0 голосов
/ 12 октября 2018

Кажется, что bulletY всегда сбрасывается в 0 в вашей функции Anim(), а затем увеличивается на 1, поэтому bulletY всегда равно 1.

Удалите bulletY = plusY (что равно 0), и оно должно увеличиваться при каждой итерации.

...