#1 Le 11/11/2008, à 18:01
- gregoire0
Probleme avec SDL_BlitSurface et SDLK_RETURN dans futur formulaire
Bonjour,
J'éssaie de créer un petit programme en sdl pour saisir du texte qui deviendra par la suite une macro pour écrire des formulaires.
Le probleme se situe avec SDL_BlitSurface qui n'arrive pas à blitter le fond et la touche entree qui devrai normalment permettre de passer à la ligne avec SDLK_RETURN ne marche pas.
D'autre chose reste à amélioré t'elle que le texte qui sera mis plus tard dans un tableau contenan chacune des lettres mais ma priorité est de réglé ses 2 problemes.
voici l'archive du programme contenan la source et les images.
http://www.megaupload.com/fr/?d=96N5SYY2
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <string.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *texte=NULL;
SDL_Rect positionfond, positiontexte;
positionfond.x = 0;
positionfond.y = 0;
positiontexte.x = 0;
positiontexte.y = ecran->h / 2 - texte->h / 2;
SDL_Event event;
int continuer = 1,caractereactuel = 0;
char chaine[1000] = "",finchaine[1] = "",a[]= "a";
long longueurChaine = 0;
texte = SDL_LoadBMP("rien.bmp");
FILE* fichier = NULL;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
fond = SDL_LoadBMP("fond.bmp");
SDL_BlitSurface(fond, NULL, ecran, &positionfond);
texte = SDL_LoadBMP("texte.bmp");
SDL_BlitSurface(texte, NULL, ecran, &positionfond);
SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);
SDL_SetColorKey(texte, SDL_SRCCOLORKEY, SDL_MapRGB(texte->format, 255, 255, 255));
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_EnableKeyRepeat(10, 10); /* Activation de la répétition des touches */
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT: /* Si c'est un évènement QUITTER */
continuer = 0; /* On met le booléen à 0, donc la boucle va s'arrêter */
break;
case SDL_KEYUP:
switch(event.key.keysym.sym)
{
case SDLK_DOWN:
positiontexte.y++;
break;
case SDLK_RIGHT:
positiontexte.x++;
break;
case SDLK_LEFT:
positiontexte.x--;
break;
case SDLK_BACKSPACE:
texte = SDL_LoadBMP("rien.bmp");
positiontexte.x-=13;
break;
case SDLK_SPACE:
texte = SDL_LoadBMP("rien.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier,0, SEEK_END);
fprintf(fichier,"_");
fclose(fichier);
break;
case SDLK_RETURN:
fichier = fopen("test", "r+");
texte = SDL_LoadBMP("rien.bmp");
positiontexte.y+=13;
break;
case SDLK_a:
texte = SDL_LoadBMP("a.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"a");
fclose(fichier);
break;
case SDLK_b:
texte = SDL_LoadBMP("b.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"b");
fclose(fichier);
break;
case SDLK_c:
texte = SDL_LoadBMP("c.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"c");
fclose(fichier);
break;
case SDLK_d:
texte = SDL_LoadBMP("d.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"d");
fclose(fichier);
break;
case SDLK_e:
texte = SDL_LoadBMP("e.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"e");
fclose(fichier);
break;
case SDLK_f:
texte = SDL_LoadBMP("f.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"f");
fclose(fichier);
break;
case SDLK_g:
texte = SDL_LoadBMP("g.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"g");
fclose(fichier);
break;
case SDLK_h:
texte = SDL_LoadBMP("h.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"h");
fclose(fichier);
break;
case SDLK_i:
texte = SDL_LoadBMP("i.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"i");
fclose(fichier);
break;
case SDLK_j:
texte = SDL_LoadBMP("j.bmp");
positiontexte.x+=12;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"j");
fclose(fichier);
break;
case SDLK_k:
texte = SDL_LoadBMP("k.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"k");
fclose(fichier);
break;
case SDLK_l:
texte = SDL_LoadBMP("l.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"l");
fclose(fichier);
break;
case SDLK_m:
texte = SDL_LoadBMP("m.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"m");
fclose(fichier);
break;
case SDLK_n:
texte = SDL_LoadBMP("n.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"n");
fclose(fichier);
break;
case SDLK_o:
texte = SDL_LoadBMP("o.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"o");
fclose(fichier);
break;
case SDLK_p:
texte = SDL_LoadBMP("p.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"p");
fclose(fichier);
break;
case SDLK_q:
texte = SDL_LoadBMP("q.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"q");
fclose(fichier);
break;
case SDLK_r:
texte = SDL_LoadBMP("r.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"r");
fclose(fichier);
break;
case SDLK_s:
texte = SDL_LoadBMP("s.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"s");
fclose(fichier);
break;
case SDLK_t:
texte = SDL_LoadBMP("t.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"t");
fclose(fichier);
break;
case SDLK_u:
texte = SDL_LoadBMP("u.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"u");
fclose(fichier);
break;
case SDLK_v:
texte = SDL_LoadBMP("v.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"v");
fclose(fichier);
break;
case SDLK_w:
texte = SDL_LoadBMP("w.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"w");
fclose(fichier);
break;
case SDLK_x:
texte = SDL_LoadBMP("x.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"x");
fclose(fichier);
break;
case SDLK_y:
texte = SDL_LoadBMP("y.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"y");
fclose(fichier);
break;
case SDLK_z:
texte = SDL_LoadBMP("z.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"z");
fclose(fichier);
break;
case SDLK_1:
texte = SDL_LoadBMP("a.bmp");
positiontexte.x+=13;
fichier = fopen("test", "r+");
fseek(fichier, 0, SEEK_END);
fprintf(fichier,"z");
fclose(fichier);
break;
default:
break;
}
default:
break;
}
default:
break;
}
SDL_Flip(ecran);
}
SDL_FreeSurface(fond);
SDL_FreeSurface(texte);
SDL_Quit();
return EXIT_SUCCESS;
}
Dernière modification par gregoire0 (Le 11/11/2008, à 18:31)
Ne faite pas attention au faute je suis dyslexique.
«Il était une fois un enfant de trois ans qui n’arrivait pas à apprendre à parler. À huit ans, il ne pouvait toujours pas lire. Ses enseignants pensaient qu’il était déficient. Il ne l’était pas. Albert Einstein avait des troubles d’apprentissage.»
Hors ligne
#2 Le 11/11/2008, à 18:39
- gregoire0
Re : Probleme avec SDL_BlitSurface et SDLK_RETURN dans futur formulaire
je vien de voir que j'avai pas déclaré la surface fond mais le problème n'est toujours pas résolu.
Ne faite pas attention au faute je suis dyslexique.
«Il était une fois un enfant de trois ans qui n’arrivait pas à apprendre à parler. À huit ans, il ne pouvait toujours pas lire. Ses enseignants pensaient qu’il était déficient. Il ne l’était pas. Albert Einstein avait des troubles d’apprentissage.»
Hors ligne