[C/SDL] Rotation Image/Positionnement

Rotation Image/Positionnement [C/SDL] - C - Programmation

Marsh Posté le 01-06-2012 à 14:20:38    

Bonjour,
Je cherche à faire développer un tower defense en C/SDL. Pour cela, j'aurais besoin de developper une fonctionalité qui permet aux tourelles de tourner.
J'ai donc un sprite pour le terrain, un pour la base de la tourelle et une pour le canon que je veux faire tourner.
Je dois donc utiliser la librairie sdl_gfx avec la quelle je ne suis pas familier et dont je n'ai pas trouvé de tutoriels très aboutis.
J'ai donc ecrit ce code mais le positionnement ne marche pas et il y a une bande noire dont je n'arrive pas à me débarasser.
 
Voici le code :
 

Code :
  1. void RotationSdl(SdlJeu *sj, SDL_Surface * ecran, int xtank, int ytank, int xtourelle, int ytourelle, int type)
  2. {
  3. SDL_Surface * rotation = NULL;
  4. double angle;
  5. SDL_Rect pos;
  6. pos.x=xtourelle;
  7. pos.y=ytourelle;
  8. if(ytourelle<ytank && xtourelle>xtank)
  9. {
  10.  angle=90+(180/PI)*(atan(fabs(ytourelle-ytank)/fabs(xtourelle-xtank)));
  11. }
  12. else if (ytourelle>ytank && xtourelle>xtank)
  13. {
  14.  angle=90-(180/PI)*(atan(fabs(ytourelle-ytank)/fabs(xtourelle-xtank)));
  15. }
  16. else if (ytourelle>ytank && xtourelle<xtank)
  17. {
  18.  angle=270+(180/PI)*(atan(fabs(ytourelle-ytank)/fabs(xtourelle-xtank)));
  19. }
  20. else if (ytourelle<ytank && xtourelle<xtank)
  21. {
  22.  angle=270-(180/PI)*(atan(fabs(ytourelle-ytank)/fabs(xtourelle-xtank)));
  23. }
  24. if(type==2)
  25. {
  26.  rotation=rotozoomSurface(sj->image->imgtourelle[6], angle, 1.0, 1);
  27. }
  28. if(type==3)
  29. {
  30.  rotation=rotozoomSurface(sj->image->imgtourelle[8], angle, 1.0, 1);
  31. }
  32. SDL_SetColorKey(rotation,(SDL_SRCCOLORKEY|SDL_RLEACCEL), SDL_MapRGB(rotation->format, 0, 0, 0));
  33. SDL_SetAlpha(rotation, SDL_RLEACCEL, 0);
  34. AffichageImageSdlJeu (rotation, ecran, xtourelle,  ytourelle);
  35. pos.x =  xtourelle - rotation->w / 2; /*ReTest du positionnement*/
  36.         pos.y =  ytourelle - rotation->h / 2;
  37. SDL_FreeSurface(rotation);
  38. }


 
Et voici ce que cela me donne :
 
http://imageshack.us/photo/my-imag [...] otxvi.png/
 
Merci de bien vouloir m'aider

Reply

Marsh Posté le 01-06-2012 à 14:20:38   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed