bjr,
Voila j´ai dev c++ 4.9.8.0,et j´ai installé toutes les trucs pour la sdl et j´ai mis -lmingw32 -lSDLmain -lSDL dans l´editeur de lien.
Mais il me marque toujours une erreur :
[Linker error] undefined reference to `SDl_Flip´
et je ne vois pas d´ou cela peux venir.
MERCI A CEUX QUI ME REPONDRONS
Montre nous ton code.
Bon en fait sa marche, j´ai enlevé sdl_flip et compiler et apres j´ai rajouté sdl_flip et sa marche.
Mais j´ai un autre probleme avec mon code.
la fenetre sdl s´affiche mais tout reste bloqué,que faire?
SDL_Flip...Ca fait pas partie de SDL_image pourtant..Ca devrait marcher...
Est-ce que ta main est bien comme ça :
int main ( int argc, char *argv[])
? ??
Et tu as bien inclus SDL.h ?
Si oui, alors jvois pas où est le problème Oo
Arf chuis en retard > _<
SDL_Rect rballe={512,380,0,0}; / *variables des positions raquettes et balle*/
SDL_Rect rraquet1={0,350,0,0};
SDL_Rect rraquet2={1000,350,0,0};
int sens1, sens2, scorep, scoreo, last_time;
/ *variables score et sens balle*/
void collision();
void loadimage();
void affiche();
void deplacement();
void score();
void ordinateur();
void joueur();
void sync_fps();
SDL_Surface *Screen, *firstscreen, *balle, *raquette1, *raquette2; / *liste des images*/
SDL_Event event; / * les events*/
int main(int argc, char *argv[])
{
initialisation();
while(1) / * boucle principale*/
{
ordinateur();
deplacement();
joueur();
collision();
score();
affiche();
sync_fps();
SDL_Flip(Screen);
}
system("PAUSE");
return 0;
}
void initialisation()
{
SDL_Init(SDL_INIT_VIDEO);
Screen=SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_ShowCursor(0);
}
void loadimage()
{ / *charge les images*/
balle=SDL_LoadBMP("balle.bmp");
raquette1=SDL_LoadBMP("raquet1.bmp");
raquette2=SDL_LoadBMP("raquet2.bmp");
firstscreen=SDL_LoadBMP("scene.bmp");
/ * les mets au format*/
balle=SDL_DisplayFormat(balle);
raquette1=SDL_DisplayFormat(raquette1);
raquette2=SDL_DisplayFormat(raquette2);
firstscreen=SDL_DisplayFormat(firstscreen);
}
void joueur()
{ / * la cest la commande du joueur*/
if ( SDL_PollEvent(&))
{
switch(event.type)
{
case SDL_QUIT:
break;
case SDL_KEYDOWN:
{
Uint8 *keys = SDL_GetKeyState(NULL);
if ( keys[SDLK_UP])
{
rraquet1.y=20+rraquet1.y;
break;
}
if ( keys[SDLK_DOWN])
{
rraquet1.y=rraquet1.y-20;
break;
}
}
}
}
}
void ordinateur()
{ / * l´ordinateur se deplace selon les coordonnées de la balle*/
if(rballe.y>rraquet2.y)
{
rraquet2.y=rballe.y;
}
if(rballe.y<rraquet2.y)
{
rraquet2.y=rballe.y;
}
else
{
rraquet2.y=rballe.y;
}
}
void deplacement()
{/* different sens de la balle*/
if ( sens1==0)
{
rballe.y=rballe.y++;
rballe.x=rballe.x--;
}
if(sens1==1)
{
rballe.y=rballe.y--;
rballe.x=rballe.x++;
}
if ( sens2==0)
{
rballe.x=rballe.x--;
rballe.y=rballe.y--;
}
if(sens2==1)
{
rballe.x=rballe.x++;
rballe.y=rballe.y++ ;
}
}
void collision()
{/*on gere les collisions avec le mur et les raquettes,on change donc le sens de balle*/
if(rballe.y<0 && rballe.x>512)
{
sens1=0;
}
if(rballe.y<0 && rballe.x<512)
{
sens2=0;
}
if(rballe.y>768 && rballe.x<512)
{
sens1=1 ;
}
if(rballe.y>768 && rballe.x<512)
{
sens2=1;
}
if(rballe.x==rraquet1.x && rballe.y==rraquet1.y)
{
sens2=0 ;
}
if(rballe.x==rraquet2.x && rballe.y==rraquet2.y)
{
sens2=1 ;
}
}
void score()
{
if ( rballe.x>=0) / *si le joueur ne rattrape pas la balle on remet a O*/
{
scoreo=scoreo+1;
rballe.y=380;
rballe.x=512;
sens2=0;
}
if(rballe.x<=1020)
{
scorep=scorep+1;
rballe.y=380;
rballe.x=512;
sens1=1;
}
}
void affiche()
{/*réaffiche les positions*/
SDL_BlitSurface(firstscreen,NULL,Screen,NULL);
SDL_BlitSurface(raquette1,NULL,Screen,&1);
SDL_BlitSurface(raquette2,NULL,Screen,&2);
SDL_BlitSurface(balle,NULL,Screen,&);
}
void sync_fps()
{ / *ralentissment*/
if ( SDL_GetTicks() > last_time + 50)
{
last_time = SDL_GetTicks();
SDL_Delay(50);
}
}
C´est mon premier jeu donc je pense qu´il y a encore plein de fautes
apres reflexion,il me semble qu´il me manque des strcuture,nan?car sdl rect les détruits
Le prob vient surement du fait que tu ne lances nulle part la fonction loadimage...Donc après ton jeu blitte des surfaces vides ( ou bien si il se ferme, consulte le stderr.txt qui devrait être apparu dans le dossier de l´exe, il te dira l´erreur)
ah oui effectivement elle n´apparait pas dans la main,j´ai meme pas fait attention mais un autre probleme est survenu.
La balle ne bouge pas et l´ecran sa on le voisen scintillant.
y a pas des sites où ils apprenent les bases du C++
Si la balle bouge pas je crois que c´est parce que tu n´as pas initialisé sens1 et sens2, donc elles ont une valeur farfelue ( celle de la donnée placée à cette endroit de la mémoire avant que tu ne crées la variable)
L´écran scintillant c´est bizarre par contre...Normalement si tu as mis le double buffering ça en devrait pas arriver...Tu es sur que tout est bien blitté à l´écran à chaque tour de la main ?
< donc pour la balle il faut que j´inistialise les variables sens1 et sens2.
Blitter l´ecran,tu veux dire quoi par la,il faut utiliser sdl_flip nan?
Non laisse tomber ça c´est bon...
Alors sinon toujours les mêmes problèmes ?
euh pour l´ecran c´est bon,c´etait un probleme avec mon image.
lol oui encore d´autre probleme.
Mtn je ne peux plus bouger
Je crois que j´ai mal du afficher les image ou alors il faut les placer autrement ds le main, car tout semble bloque,l´arriere doit les influencer
Ptival par hasard tu n´a pas msn?
J´ai vu ton jeu le shoot em up,il est super bien fais,en toutcas j´ai tjr les meme prob,j´ai est de mettre l´affichage des images de partt mais rien
( Mon pseudo sans majuscules)@hotmail.com pour me contacter sur MSN ( J´mets pas l´adresse direct pour éviter le spam)
Merci ptival.
Bon j´ai toujours des problemes avec mon pong, l´ecran se fige.
enleve ta fonction de sync() elle t´embete + qu´autre chose déja ![]()
ensuite, ton appel loadimage que tu as rajouté, tu l´as bien mis hors de la boucle ?
Moi j´ai peur que ton écran ne soit jamais effacé : que tu vois la trace de ta balle, par que tu n´efface jamais ton écran.
décris ton " écran qui scintille"
si ça ne bouge pas, essaie pour le moment de faire avancer ta balle avec +1 en x et en y a chaque frame, déja. Apres, c´est peut etre un probleme de lecture des touches.
autant pour moi pour l´écran pas effacé : tu geres ça avec ton firstscreen.