Я хочу сделать небольшую анимацию, ведь мост со светофором предупреждает, когда мост откроется (желтый свет), красный свет, когда мост анимируется (просто перемещается вверх и вниз), и зеленый свет, когда он опущен,Сейчас я просто хочу повторять одну и ту же анимацию снова и снова
В функции ожидания у меня есть этот код:
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 переменные, и их нет.Должно быть что-то не так с алгоритмом, но я не могу понять это.У меня много глобальных переменных, это последнее, что я добавил, возможно, стек заполнен?Что здесь не так?