voila j'ai Ce probleme voir l'image :
http://img205.imageshack.us/my.php?image=soniccdh3.jpg
apperement y' a pas de rafraichissement.
je trouve pas ou est le probleme.
ci dessous le code d'affichade des sprites et le main.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 void afficher_sprite (struct sprite *s_sprite,SDL_Surface *screen) { SDL_Rect src,dest; if(!s_sprite->ispaused_anim) { if(SDL_GetTicks() - s_sprite->lastfrmupdate > 100) { s_sprite->cur_frame = (s_sprite->cur_frame +1) % s_sprite->nb_frame; s_sprite->lastfrmupdate = SDL_GetTicks(); } } /* la postion du sprite dans le bmp des sprites */ src.x=s_sprite->s_frame[s_sprite->cur_frame].x; src.y=s_sprite->s_frame[s_sprite->cur_frame].y; src.w = s_sprite->width; src.h = s_sprite->height; /* ... */ dest.x = s_sprite->x; dest.y = s_sprite->y; SDL_BlitSurface(s_sprite->surf,&src, screen,&dest); }
++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 int main(int argc, char **argv) { SDL_Event event; SDL_Rect mest; struct sprite s_sprite; int isdone; SDL_Surface *plan = SDL_LoadBMP ("plan.bmp");; SDL_Surface *screen; /* Appel de Free lors de la fermeture du programme */ //atexit(Free); /* Initialisation de SDL */ if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER)==-1) { perror("Impossible d'initialiser SDL.\n"); return 1; } /* Initialisation de la fenêtre */ screen = SDL_SetVideoMode(800, 300, 32, SDL_HWSURFACE|SDL_DOUBLEBUF); if(screen==NULL) { perror("Erreur lors de la création de la fenêtre.\n"); return 1; } /* Change le titre de la fenêtre et de l'icône */ SDL_WM_SetCaption(":: SONIC ::","HIHI"); charger_sprite (&s_sprite); SDL_EnableKeyRepeat(10,10); isdone=0; mest.x=0; mest.y=0; SDL_BlitSurface(plan,NULL, screen,&mest); while (!isdone) { /* Lecture des évènements dans la queue d'évènements */ while (SDL_PollEvent (&event)) { SpriteEvent(&event, &s_sprite); switch (event.type) { case SDL_KEYDOWN: if(event.key.state==SDL_PRESSED) { if(event.key.keysym.sym==SDLK_ESCAPE) isdone = 1; else if (event.key.keysym.sym==SDLK_F1) SDL_SaveBMP(SDL_GetVideoSurface(),"screenshot.bmp"); } break; case SDL_QUIT: isdone = 1; break; } } afficher_sprite(&s_sprite, screen); SDL_Flip(screen); } return 0; }
Partager