logo

mon projet sdl

Vous pouvez poster vos questions qui ne rentrent pas dans les autres catégories...

mon projet sdl

Messagede yohann » 24 Avr 2010, 15:23

voila je n'arrive pas a afficher le texte en sdl et mon fond écran est dupliquer du fait d'avoir rajouter un texte voila ou est le problème
code:
include "jeu.h"

jeu::jeu(void):perso1(0,400),perso2(0,300),perso3(0,400)
{
FSOUND_Init(44100, 32, 0);
this->ecran=NULL;
this->continuer=1;
this->police = TTF_OpenFont("angelina.ttf", 65);
SDL_Color couleurNoire = {0, 0, 0};
this->score='0';
this->texte=TTF_RenderText_Blended(police, "coucou", couleurNoire);
this->positiontexte.x=0;
this->positiontexte.y=0;
this->tir=FSOUND_Sample_Load(FSOUND_FREE, "sons/tir.wav", 0, 0, 0);
this->mort=FSOUND_Sample_Load(FSOUND_FREE, "sons/mort.wav", 0, 0, 0);


}

void jeu::deroulementdujeu()
{



SDL_Event event;



SDL_Init(SDL_INIT_VIDEO);
TTF_Init();
SDL_ShowCursor(SDL_DISABLE);
//SDL_WM_SetIcon(IMG_Load("icone.png"), NULL); // pas d'icone pour le moment =/
this->ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("FireGun - By Assouan", NULL);


while (this->continuer)
{
SDL_PollEvent(&event);
//SDL_WaitEvent(&event);
perso1.deplacement();
perso2.deplacement();


if(perso1.position.x==400)
{
perso3.deplacement();


}


switch(event.type)
{
case SDL_QUIT:
this->continuer = 0;
break;
case SDL_MOUSEBUTTONDOWN:
if (event.button.button == SDL_BUTTON_LEFT)
{
FSOUND_PlaySound(FSOUND_FREE, tir);
positionFeu.x =( positionFusil.x - (P.feu->w / 2)) + 10;
positionFeu.y = (positionFusil.y - (P.feu->h / 2))+10 ;

P.feuEtat = 1;
if(perso1.EnVie == 1 && (event.button.x >= perso1.position.x && event.button.x <= (perso1.position.x + 70)) && (event.button.y >= perso1.position.y && event.button.y <= (perso1.position.y + 70)))
{
perso1.EnVie=0;
FSOUND_PlaySound(FSOUND_FREE, mort);
score=score++;

}
if(perso1.EnVie == 1 && (event.button.x >= perso1.position.x && event.button.x <= (perso1.position.x + 70)) && (event.button.y >= perso1.position.y && event.button.y <= (perso1.position.y + 70)))
{
perso1.EnVie=0;
FSOUND_PlaySound(FSOUND_FREE, mort);
score=score++;

}
}
else{
if (event.button.button == SDL_BUTTON_RIGHT)
{
perso1.EnVie=1;
perso2.EnVie=1;
}
}

if(perso2.EnVie == 1 && (event.button.x >= perso2.position.x && event.button.x <= (perso2.position.x + 70)) && (event.button.y >= perso2.position.y && event.button.y <= (perso2.position.y + 70)))
{
perso2.EnVie=0;
FSOUND_PlaySound(FSOUND_FREE, mort);
score=score++;

}
if(perso2.EnVie == 1 && (event.button.x >= perso2.position.x && event.button.x <= (perso2.position.x + 70)) && (event.button.y >= perso2.position.y && event.button.y <= (perso2.position.y + 70)))
{
perso2.EnVie=0;
FSOUND_PlaySound(FSOUND_FREE, mort);
score=score++;

}

else{
if (event.button.button == SDL_BUTTON_RIGHT)
{
perso1.EnVie=1;
perso2.EnVie=1;
}

}

break;
case SDL_MOUSEMOTION:
// Edit pos viseur
positionViseur.x = event.motion.x - (P.viseur->w / 2);
positionViseur.y = event.motion.y - (P.viseur->h / 2);
// Edit pos fusil
positionFusil.x = event.motion.x;
positionFusil.y = 600 - 260;
break;
}

SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 103, 74, 65));
// Affichage du fond
C.affichemap(ecran);
SDL_BlitSurface(texte, NULL, ecran, &positiontexte);
if(perso1.position.x==400)
{
perso3.affichemonstre(ecran);
}
perso1.affichemonstre(ecran);
perso2.affichemonstre(ecran);
// Affichage du viseur
SDL_BlitSurface(P.viseur, NULL, ecran, &positionViseur);
// Affichage du Feu

if (P.feuEtat)
{
SDL_BlitSurface(P.feu, NULL, ecran, &positionFeu);
}
// Affichage du fusil
SDL_BlitSurface(P.fusil, NULL, ecran, &positionFusil);

//SDL_BlitSurface(viseur, NULL, ecran, &position);
SDL_Flip(ecran);
// Patience feu
if (P.feuEtat)
{
//SDL_Delay(20);
P.feuEtat = 0;
}
SDL_Delay(20);
}



}


jeu::~jeu()
{
/* On ferme la SDL */
SDL_FreeSurface(P.viseur);
SDL_FreeSurface(P.fusil);
SDL_FreeSurface(P.feu);
SDL_FreeSurface(C.fond);
TTF_CloseFont(police);
TTF_Quit();
SDL_FreeSurface(texte);
SDL_Quit();


}
yohann
 

Re: mon projet sdl

Messagede Tibo » 27 Avr 2010, 21:19

Salut,
ton problème peu venir de plusieurs endroits...
Il faut bien entendu avoir installé SDL_ttf, mais je pense que tu l'as fait sinon ça ne compilerait pas...
Ensuite, il faut tester l'initialisation de la librairie comme ceci :
Code: Tout sélectionner
if(TTF_Init() == -1)
{
    fprintf(stderr, "Erreur d'initialisation de TTF_Init : %s\n", TTF_GetError());
    exit(EXIT_FAILURE);
}

Ensuite, il faut commencer par une police simple (regarde les polices que tu as dans C:/Windows/Fonts)
Enfin, il faut tester en mode pas à pas la valeur qu'il y a dans texte et positiontexte (elle ne sont peut être pas bien initialisées...

Bon courage !
Tibo
Administrateur du site
 
Messages: 147
Inscription: 26 Mar 2008, 13:58


Retourner vers Questions générales

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron
Hit-Parade des sites francophones