Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1789 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C/SDL] Rotation Image/Positionnement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/SDL] Rotation Image/Positionnement

n°2144296
hazaki
Posté le 01-06-2012 à 14:20:38  profilanswer
 

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

mood
Publicité
Posté le 01-06-2012 à 14:20:38  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C/SDL] Rotation Image/Positionnement

 

Sujets relatifs
Wrapper C++ avec SWIG[Résolu] Problème positionnement d'une note avec "vertical-align: top"
C++ Builder répertoire problème !![C] retourner un tableau de string
[C] Remplir un tableau 2 dimensions avec un fichierRenvoyer l'adresse d'un tableau en C
[C] random sur un enumrécupérer une image sur un socket et l'afficher en plein écran
[C] fonctions imbriquées, je m'y perds [résolu][C] SDL avec combo BlitSurface() + Flip()
Plus de sujets relatifs à : [C/SDL] Rotation Image/Positionnement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR