在C ++中切换三个布尔变量

时间:2016-12-05 17:02:31

标签: c++ opengl

我想用C ++在OpenGL中为我的灯光进行3状态切换。所以我想要这样做的方法是当LIGHT0被启用时LIGHT1和LIGHT2被禁用。当LIGHT1启用时,LIGHT0和LIGHT2被禁用等。 我知道我可以轻松地在两个变量之间切换:

bool light_0 = true, light_1 = false;
if (key press) {
light_0 = !light_0;
light_1 = !light_1; 
}

如果我将它用于三个变量,那么我最终会打开一盏灯并关闭两个灯。

1 个答案:

答案 0 :(得分:1)

使用状态机。

你需要一个类似建议的枚举:

enum Light{
    LIGHT_0, LIGHT_1, LIGHT_2
}

创建Light实例以跟踪状态。

 Light lightState = new Light();

无论何时使用灯光,您都可以切换到当前状态:

useLight(){
    switch(lightState){
        case LIGHT_0:
            //do whatever you want
            break;
        case LIGHT_1:
            //do whatever you want
            break;
        // and so on, customized for your need
    }
}

每当你想改变光线时,只需将所需的光线状态分配给lightState。

if(keyPress){
    lightState = LIGHT_1;
}

我希望现在可以理解。 (这不是一个合适的c ++语法)