2012-02-16 80 views
0

我想做一個小動畫,一個交通燈的女巫警告橋會打開(黃燈),當橋是動畫時紅燈(只是向下移動)和綠色的燈光。現在我只是希望它重複着同樣的動畫及以上如果()似乎不工作 - C++ opengl閒置功能

在空閒功能我有這樣的代碼:

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

animateBridge();

而這就是我得到的輸出: 跆拳道,0 跆拳道,1名 跆拳道,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個變量的其他參考資料和有沒有。 它一定是錯誤的算法,但我無法弄清楚。 我有很多全局變量,這是我添加的最後一個可能是堆棧已滿? 這裏有什麼問題?

+0

是'startBridge'和'bridgeAngle'真的是數字嗎? – Shaheer 2012-02-16 13:55:48

回答

7

你的問題是這樣的

if(bridgeAnimating==0); 

上最後的分號表示空語句,這是所有由if語句控制。擺脫;它會像你期望的那樣工作。

+0

洛爾茲謝謝,剛剛發現它,試圖刪除這個問題,但你們很快! :) – 2012-02-16 13:57:44

1

刪除尾隨分號:

if(bridgeAnimating==0);