PDA

View Full Version : what's wrong in this function ? (keyboard)



airseb
08-03-2002, 07:43 AM
float c = 0.0 ;

void keyboard (unsigned char key, int x, int y)
{



switch (key)
{
case 'd' : //fait tourner selon l'axe des Y
case 'D' :

nbr_degre += 2.0;
j = 0.0 ;
k = 1.0 ;
l = 0.0 ;
glutPostRedisplay () ;
break ;

case 's' :
case 'S' :

nbr_degre += 2.0; //fait tourner selon l'axe des Y
j = 0.0 ;
k = -1.0 ;
l = 0.0 ;
glutPostRedisplay () ;
break ;

case 'e' : //fait tourner selon l'axe des X
case 'E' :

nbr_degre += 2.0;
j = -1.0 ;
k = 0.0 ;
l = 0.0 ;
glutPostRedisplay () ;
break ;

case 'x' : //fait tourner selon l'axe des X
case 'X' :

nbr_degre += 2.0;
j = 1.0 ;
k = 0.0 ;
l = 0.0 ;
glutPostRedisplay () ;
break ;

case 'i':
case 'I':

c += 0.5 ;
switch (c)
{
case 10.0 :
profondeur = 1 ;
glutPostRedisplay () ;
break ;

case 20.0 :
profondeur = 2 ;
glutPostRedisplay () ;
break ;

case 30.0 :
profondeur = 3 ;
glutPostRedisplay () ;
break ;

case 40.0 :
profondeur = 4 ;
glutPostRedisplay () ;
break ;
}



case 'o':
case 'O':

c -= 0.5 ;
glutPostRedisplay () ;
break ;


}
}

[This message has been edited by airseb (edited 08-03-2002).]

Jan
08-03-2002, 08:51 AM
Your problem is that you donīt get it compiled, do you?

You cannot use floats in a switch-statement. The switch-statement only allows integertypes (int, short, enum, byte, char).

You could do it this way:

c += 0.5 ;

int c2 = (int) (c);

switch (c2)
{
case 10:
profondeur = 1 ;
glutPostRedisplay () ;
break ;

case 20:
profondeur = 2 ;
glutPostRedisplay () ;
break ;

case 30:
profondeur = 3 ;
glutPostRedisplay () ;
break ;

case 40:
profondeur = 4 ;
glutPostRedisplay () ;
break ;
}


Jan.

airseb
08-03-2002, 09:08 AM
thanks for your answer http://www.opengl.org/discussion_boards/ubb/biggrin.gif