Rotation Image/Positionnement / C SDL sdl_gfx

Fermé
hazaki Messages postés 3 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 2 avril 2015 - 1 juin 2012 à 01:46
hazaki Messages postés 3 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 2 avril 2015 - 1 juin 2012 à 01:57
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 :

void RotationSdl(SdlJeu *sj, SDL_Surface * ecran, int xtank, int ytank, int xtourelle, int ytourelle, int type)
{
	SDL_Surface * rotation = NULL;
	double angle;
	SDL_Rect pos;
	pos.x=xtourelle;
	pos.y=ytourelle;
 
	if(ytourelle<ytank && xtourelle>xtank)
	{
		angle=90+(180/PI)*(atan(fabs(ytourelle-ytank)/fabs(xtourelle-xtank)));
	}
	else if (ytourelle>ytank && xtourelle>xtank)
	{
		angle=90-(180/PI)*(atan(fabs(ytourelle-ytank)/fabs(xtourelle-xtank)));
	}
	else if (ytourelle>ytank && xtourelle<xtank)
	{
		angle=270+(180/PI)*(atan(fabs(ytourelle-ytank)/fabs(xtourelle-xtank)));
	}
	else if (ytourelle<ytank && xtourelle<xtank)
	{
		angle=270-(180/PI)*(atan(fabs(ytourelle-ytank)/fabs(xtourelle-xtank)));
	}
	if(type==2)
	{
		rotation=rotozoomSurface(sj->image->imgtourelle[6], angle, 1.0, 1);
	}
	if(type==3)
	{
		rotation=rotozoomSurface(sj->image->imgtourelle[8], angle, 1.0, 1);
	}
 
	SDL_SetColorKey(rotation,(SDL_SRCCOLORKEY|SDL_RLEACCEL), SDL_MapRGB(rotation->format, 0, 0, 0));
	SDL_SetAlpha(rotation, SDL_RLEACCEL, 0);
	AffichageImageSdlJeu (rotation, ecran, xtourelle,  ytourelle);
	pos.x =  xtourelle - rotation->w / 2; /*ReTest du positionnement*/
        pos.y =  ytourelle - rotation->h / 2;
	SDL_FreeSurface(rotation);
}


et voilà ce que cela donne :

https://imageshack.com/photo/my-images...eenshotxvi.png

Merci de bien vouloir m'aider

A voir également:

2 réponses

antipolis a Messages postés 15609 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 12 novembre 2014 2 859
1 juin 2012 à 01:56
Bonjour.

Réponse du lien :
404 Not Found
nginx/0.8.37
0
hazaki Messages postés 3 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 2 avril 2015
1 juin 2012 à 01:57
voilà l'image :
http://www.noelshack.com/2012-22-1338508636-Screenshot.png
0