if () не работает - c ++ функция opengl - PullRequest
0 голосов
/ 16 февраля 2012

Я хочу сделать небольшую анимацию, ведь мост со светофором предупреждает, когда мост откроется (желтый свет), красный свет, когда мост анимируется (просто перемещается вверх и вниз), и зеленый свет, когда он опущен,Сейчас я просто хочу повторять одну и ту же анимацию снова и снова

В функции ожидания у меня есть этот код:

if(bridgeAnimating==0);
{
   printf("\nwtf,%d\n",bridgeAnimating);
   fflush(stdout);
   startBridge=1;
}

animateBridge ();

И этоВот что я получаю в качестве вывода: wtf, 0 wtf, 1 wtf, 1 ... и т. д.

bridgeAnimating - это глобальная переменная, такая как startBridge int startBridge = 0;int bridgeAnimating = 0;

А вот и функция:

void animateBridge()
{
    float static speed=0.25;
    int static upwards=1;
    double static warnTime=teid;

    warnTime-=dt;

    if(startBridge==1)
    {
        upwards=1;
        bridgeAnimating=1;
        warnTime=teid;
        startBridge=0;
        //printf("Here:Animating=%d",bridgeAnimating); //if un-commented this gets printed!!!
    }
    if(bridgeAngle<30 && upwards==1 && warnTime<=0)
    {
        bridgeAngle+=speed;
        red=2;
        green=0.9;
        orangeRed=0.9;
        orangeGreen=0.6;
        bridgeAnimating=1;
        printf("Upwnwards");
    }else if(bridgeAngle>0 && upwards==0 && warnTime<=0) 
    {
        bridgeAngle-=speed;
        red=2;
        green=0.9;
        orangeRed=0.9;
        orangeGreen=0.6;
        bridgeAnimating=1;
        printf("Downwards");
    }else if(warnTime>0)
    {
        orangeRed=2;
        orangeGreen=1.19;
        red=0.9;
        green=0.9;
        bridgeAnimating=1;
        //printf("Here"); //This gets printed if "un-commented"
    }else
    {
        red=0.9;
        green=2;
        orangeRed=0.9;
        orangeGreen=0.6;
        bridgeAnimating=0;
        printf("anim 0");//this doesn't print out
    }

    if(bridgeAngle>=30)
    {
        upwards=0;
    }

}

Я проверил документ на наличие других ссылок на эти 2 переменные, и их нет.Должно быть что-то не так с алгоритмом, но я не могу понять это.У меня много глобальных переменных, это последнее, что я добавил, возможно, стек заполнен?Что здесь не так?

Ответы [ 2 ]

7 голосов
/ 16 февраля 2012

Ваша проблема заключается в следующем

   if(bridgeAnimating==0); 

Точка с запятой в конце указывает на пустой оператор, который является всем, что контролируется оператором if.Избавиться от;и это будет работать так, как вы ожидаете.

1 голос
/ 16 февраля 2012

Удалить конечную точку с запятой:

if(bridgeAnimating==0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...