c++ - C++ 中的 glutIdleFunc() 变量值未递增

标签 c++ if-statement opengl glut

我试图在单击键盘上的字母“b”后不断增加变量 bulletY 直到最大 y 值窗口大小以产生射击效果。但是,bulletY 只会递增一次。

这里是 bool flags 和 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();
    }

最佳答案

似乎 bulletY 在你的 Anim() 函数中总是重置为 0,然后它递增 1,所以 bulletY始终为 1。

删除 bulletY = plusY(即 0),它应该在每次迭代中递增。

关于c++ - C++ 中的 glutIdleFunc() 变量值未递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52769299/

相关文章:

c++ - C memset 似乎没有写给每个成员

mysql - MYSQL 上的多个 IF 语句

循环运行时出现 Java 逻辑错误 : If/else counter incorrectly counting

c++ - Intel HD 3000 上正确的 OpenGL 初始化是什么?

opengl - 仅使用可变变量的一部分

c++ - 将 rs232 消息保存到变量

c++ - boost::shared_mutex vs boost::mutex 用于多线程写入?

if-statement - 在 Smalltalk 中重构 if-chains 没有类爆炸

opengl - OpenGL 中内存管理的困惑

c++ - (Visual C++) 删除指针后动态分配内存不是有效指针