1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| bool moveNibble(deque<float> &Nibble, int direction)
{
deque<float>::iterator it;
it=Nibble.begin();
float X=0.0f,Y=0.0f;
switch(direction)
{
case 1 : //déplacement vers le haut
X = 0.0f; Y = +0.04f;
break;
case 2 : //déplacement vers le bas
X = 0.0f; Y = -0.04f;
break;
case 3 : //déplacement vers la gauche
X = -0.04f; Y = 0.0f;
break;
case 4 : //déplacement vers la droite
X = +0.04f; Y = 0.0f;
break;
}
//pour détecter une collision (collision si pixel blanc)
float tab[1];
glReadPixels(*it + X, *(it+1) + Y, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, tab);
if (tab[0] == 1.0f){return 1;}
//pour déplacer la queue
Nibble.pop_back();
Nibble.pop_back();
Nibble.push_front(*(it+1) + Y);
Nibble.push_front(*it + X);
return 0;
} |
Partager