janyoura
Messages postés11Date d'inscriptionmardi 24 janvier 2012StatutMembreDernière intervention26 octobre 2012
-
9 avril 2012 à 22:07
janyoura
Messages postés11Date d'inscriptionmardi 24 janvier 2012StatutMembreDernière intervention26 octobre 2012
-
10 avril 2012 à 22:02
J'ai besoin de faire l'affichage du mot tapé par l'utilisateur dans les cases correspondantes, chaque lettre dans une case de la matrice. j'ai pris exemple du code mis à notre disposition dans le site, "motus avec SDL" mais je n'ai pas compris cette fonction, pourquoi séparer les mots 'a'+14 des mot > 'a' + 14 ?
// on n'affiche pas les espaces
if ( caract == (' ') )
return;
if ( caract == ('a'+i) )
{
if (i<15) //de 'a' à 'a'+14 on affichee les lettres à partir de
//x=32+i*32 et y=128 dans le fichier pointé par couleur
{
Slock(screen);
DrawIMG(couleur,x*32,y*32,32,32,32+i*32,128);
SDL_Flip(screen);
Sulock(screen);
test=1;
}
else //au dela de 'a'+14 on affichee les lettres à partir de
//x=0 et y=160 dans le fichier pointé par couleur
{
Slock(screen);
DrawIMG(couleur,x*32,y*32,32,32,(i-15)*32,160);
SDL_Flip(screen);
Sulock(screen);
test=1;
}
janyoura
Messages postés11Date d'inscriptionmardi 24 janvier 2012StatutMembreDernière intervention26 octobre 2012 9 avril 2012 à 22:08
/*****************************************************************************/
/*****Permet d'afficher un caractere en fonction de x et y vec une couleur****/
/*****************************************************************************/
void affiche_caract (char caract,int x,int y,SDL_Surface *couleur)
{
int i=0,test=0;
while ( test==0 )
{
// on n'affiche pas les espaces
if ( caract == (' ') )
return;
if ( caract == ('a'+i) )
{
if (i<15) //de 'a' à 'a'+14 on affichee les lettres à partir de
//x=32+i*32 et y=128 dans le fichier pointé par couleur
{
Slock(screen);
DrawIMG(couleur,x*32,y*32,32,32,32+i*32,128);
SDL_Flip(screen);
Sulock(screen);
test=1;
}
else //au dela de 'a'+14 on affichee les lettres à partir de
//x=0 et y=160 dans le fichier pointé par couleur
{
Slock(screen);
DrawIMG(couleur,x*32,y*32,32,32,(i-15)*32,160);
SDL_Flip(screen);
Sulock(screen);
test=1;
}
}
i++;
}
}
Tu verras que les 14 premières lettres sont placées sur une ligne, et les 12 autres sur la ligne suivantes. Tout simplement :)
La fonction est tout à fait correcte, bien que peu élégante. N'oublie pas que ce qui est posté sur codes-sources, ce sont souvent des codes de débutants, dont la qualité peut sensiblement varier...
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
janyoura
Messages postés11Date d'inscriptionmardi 24 janvier 2012StatutMembreDernière intervention26 octobre 2012 10 avril 2012 à 22:02
#include <stdio.h>
#include <stdlib.h>
#include <SDL/sdl.h>
int main ( int argc, char** argv )
{
SDL_Surface* screen = NULL;
SDL_Surface *img= NULL;
SDL_Event event;
SDL_Rect dest;
int continuer=1;
// create a new window
SDL_Init(SDL_INIT_VIDEO);
screen=SDL_SetVideoMode(640,480,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
while(continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_KEYDOWN:
switch(event.key.keysym.unicode)
{
case SDLK_a:
dest.x=100;
dest.y=100;
img = SDL_LoadBMP("A.bmp");
SDL_BlitSurface(img, NULL, screen, &dest);
SDL_Flip(screen);
break;
}
}
}
return 0;
}
Je veux que lorsque l'utilisateur tape sur le caractère 'a' l'image correspondante (case dans laquelle est écris 'A') se charge et s'affiche dans l'écran. le problème c'est que le code ne fonctionne pas et je ne sais pas pourquoi. merci de m'aider. je travail sur C/SDL