Merci, j´ai fait tout ça et ca marche, mais je suis confronté à un autre problème :
Je veux que mon carré tourne sur lui meme et avance dans l´angle, j´avais pensé trouver avec ca :
void advance(int vitesse)
{
x+=vitesse*sin(angle);
y+=vitesse*cos(angle);
}
puisque ca marchait bien sur papier ( oui bon, c´était sur papier aussi
et vu que j´ai un niveau ridicule en maths... ( 3ème)) mais là ca marche pas du tout, j´ai rajouté une fleche pour connaitre l´angle du quad, voila mon système :
while(!bQuit)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1);
initGL2D(0,0,640,480);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
glTranslatef(x+25,y+25,0);
glRotatef(angle,0.0f,0.0f,1.0f);
glTranslatef(-(x+25),-(y+25),0);
glBegin(GL_QUADS);
glColor3ub(0,0,125); glVertex2i(x,y+50);
glColor3ub(0,0,125); glVertex2i(x+50,y+50);
glColor3ub(255,255,255); glVertex2i(x+50,y);
glColor3ub(255,255,255); glVertex2i(x,y);
glEnd();
glBegin(GL_LINES);
/ / glcolor3ub(255,0,0);
glVertex2i(x+50,y+25);
/ /glcolor3ub(255,0,0);
glVertex2i(x+100,y+25);
glEnd();
glPopMatrix();
SDL_GL_SwapBuffers();
keystate = SDL_GetKeyState(NULL);
if ( keystate[SDLK_RIGHT])
{
angle += PI/50;
}
if ( keystate[SDLK_LEFT])
{
angle -= PI/50;
}
if ( angle>359)angle=0;
if ( angle<0)angle=359;
if ( keystate[SDLK_UP])
{
vitesse=1;
}
advance(vitesse);
vitesse=0;
eventloop();
sync_fps(20);
}
Les trucs qui pourraient rentrer en cause :
-les angles sont peut-être en radians ( j´ai pas vérifié ca)
-Mon bricolage à base de trigo est faux ( le plus proche de la réalité jpense
)
Merci d´avance de votre aide !