the loop can not depent on the if function

53 Views Asked by At
boolean test(void)
{
  if (light==0)
  {
     return false;
  }
  ;
  if ( BIT_IS_SET(PINB, 2) ) 
  {
    if ((colour==1 && light==4)||(colour==0 && light==5))
    {
       mark=mark+100;
       light=0;
       return true;
    }
    else
    {
      life=life-1;
      analogWrite(SPEAKERPIN,200);
      delay(10);
      analogWrite(SPEAKERPIN,0);
      light=0;
      return true;
    }
    ;
  }
  delay(10);
  if(BIT_IS_SET(PINB, 3)) 
  {
    if ((colour==1 && light==5)||(colour==0 && light==4))
    {
      mark=mark+100;
       light=0;
       return true;
    }
    else
    {
      life=life-1;
      analogWrite(SPEAKERPIN,200);
      delay(10);
      analogWrite(SPEAKERPIN,0);
      light=0;
      return true;
    }
  }
  return false;
}
void loop()
{
  game();
  while(test()==false)
  {
  }
  ;
  if(life<0)
  {
    die();
  }

the test function do not work as i throught,after click the button ,it will direcly go to the die fuction(2->-1).no mather the number of colour and light .when button pressed ,most of the time will make it repeat the test function until it die.

1

There are 1 best solutions below

4
On

The first line says

 light=0

seems likely that is where the problem is. Have you used a debugger? You do know this is an assignment statement?

light will always be set to 0 everytime you run this function.

maybe you want this?

if (light == 0)
{
  return false;
}