SDL animation

Signaler
Messages postés
3
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
3 novembre 2008
-
Messages postés
3
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
3 novembre 2008
-
Bonjour tout le monde, je commence un petit jeux, pour m'entrainer. Il sera en vue de profil (on ne peut bouger que vers la droite ou vers la gauche) et le personnage est tout en bas de ma fenêtre. Pour gerer les deplacement ia pas de problème, mais je fait un petit code pour tester si j'arrive à faire les tir, sans els déplacement, bah apparemment non donc si vous pouviez m'aider et me dire ce qu'il ne va pas dans mon code ou du moins me donner une piste.
Code : C
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98, #include <stdio.h>#include <stdlib.h>#include <SDL.h>#include <SDL_Image.h>#include <SDLP_Anim.h>#define SNKT 4#define VITESSE 5voidtir(SDL_Surface*ecran, SDL_Rect &pSnake);intmain(intargc,char*argv[]){SDL_Surface*ecran=NULL;SDLP_Animsnake;SDL_RectpSnake;intcontinuer=1,Action=SNKT;SDL_Eventevent;SDL_Init(SDL_INIT_VIDEO);ecran=SDL_SetVideoMode(300,300,32,SDL_HWSURFACE|SDL_DOUBLEBUF);SDL_WM_SetCaption("Mini jeu - tir",NULL);//animation du perso qui tireSDLP_LoadAnim(&snake,"snake3.bmp",3,500/VITESSE,SDLP_GAUCHE,SDLP_INFINI,SDLP_TOUCHE);pSnake.x=0+50;//position du joueurpSnake.y=300-59;//repetition des touchesSDL_EnableKeyRepeat(10,10);/* Activation de la répétition des touches */while(continuer){SDL_PollEvent(&event);switch(event.type){caseSDL_QUIT:
continuer=0;break;caseSDL_KEYDOWN:
switch(event.key.keysym.sym){caseSDLK_SPACE :
Action=SNKT;tir(ecran, &pSnake);break;default:SDLP_BlockTouch(&snake,SDLP_BLOCKED);break;}break;}SDLP_Touch(event,&snake);SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255));switch(Action){caseSNKT :
SDLP_SetColorKeyAnim(&snake,0,117,117);SDLP_BlitAnim(&snake,ecran,pSnake);break;}SDL_Flip(ecran);}SDLP_FreeAnim(&snake);SDL_Quit();returnEXIT_SUCCESS;}void tir(SDL_Surface *ecran, SDL_Rect &pSnake)//fonction des tir, qui créer des balles.{SDL_Surfaceballe;//surface de la balleSDL_RectpBalle;inttempsActuel=0,tempsPrecedent=0;balle=IMG_Load("balle.bmp");pBalle.x=pSnake.x+25;//coordonnées de la balle étant au bout du fusil du persopBalle.y=pSnake.y+15;tempsActuel=SDL_GetTick();//boucle pour deplacer la balleif(tempsActuel-tempsPrecedent>30){pBalle.x+=20;tempsActuel=tempsPrecedent;SDL_BlitSurface(balle,NULL,ecran,&pBalle);SDL_Flip(ecran);}}

Sa marche bien, je peux marcher et les animation sont correct, mais le problème c'est que quand je tir, déjà je ne sais pas comment faire pour que l'animation ne se joue qu'une fois quand je presse la touche espace et ensuite les balles ne bougent pas, elles restent près de mon perso. Je pense que c'est pasrce que les coordonnées des balle sont dans ma fonction mais je ne sais pas où les mettre.
A voir également:

2 réponses

Messages postés
3
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
3 novembre 2008

Oula il y a un bug avec le code

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98, #include <stdio.h>#include <stdlib.h>#include <SDL.h>#include <SDL_Image.h>#include <SDLP_Anim.h>#define SNKT 4#define VITESSE 5voidtir(SDL_Surface*ecran, SDL_Rect pSnake);intmain(intargc,char*argv[]){SDL_Surface*ecran=NULL;SDLP_Animsnake;SDL_RectpSnake;intcontinuer=1,Action=SNKT;SDL_Eventevent;SDL_Init(SDL_INIT_VIDEO);ecran=SDL_SetVideoMode(300,300,32,SDL_HWSURFACE|SDL_DOUBLEBUF);SDL_WM_SetCaption("Mini jeu - tir",NULL);//animation du perso qui tireSDLP_LoadAnim(&snake,"snake3.bmp",3,500/VITESSE,SDLP_GAUCHE,SDLP_INFINI,SDLP_TOUCHE);pSnake.x=0+50;//position du joueurpSnake.y=300-59;//repetition des touchesSDL_EnableKeyRepeat(10,10);/* Activation de la répétition des touches */while(continuer){SDL_PollEvent(&event);switch(event.type){caseSDL_QUIT:
continuer=0;break;caseSDL_KEYDOWN:
switch(event.key.keysym.sym){caseSDLK_SPACE :
Action=SNKT;tir(ecran, pSnake);break;default:SDLP_BlockTouch(&snake,SDLP_BLOCKED);break;}break;}SDLP_Touch(event,&snake);SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255));switch(Action){caseSNKT :
SDLP_SetColorKeyAnim(&snake,0,117,117);SDLP_BlitAnim(&snake,ecran,pSnake);break;}SDL_Flip(ecran);}SDLP_FreeAnim(&snake);SDL_Quit();returnEXIT_SUCCESS;}void tir(SDL_Surface*ecran, SDL_Rect pSnake)//fonction des tir, qui créer des balles.{SDL_Surfaceballe;//surface de la balleSDL_RectpBalle;inttempsActuel=0,tempsPrecedent=0;balle=IMG_Load("balle.bmp");pBalle.x=pSnake.x+25//coordonnées de la balle étant au bout du fusil du persopBalle.y=pSnake.y+15tempsActuel=SDL_GetTick();//boucle pour deplacer la balleif(tempsActuel-tempsPrecedent>30){pBalle.x+=20;tempsActuel=tempsPrecedent;SDL_BlitSurface(balle,NULL,ecran,&pBalle);SDL_Flip(ecran);}}
Messages postés
3
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
3 novembre 2008

Bon désolé pour le code, j'arrive pas à le mettre.