-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.c
116 lines (115 loc) · 4.32 KB
/
main.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/* Date de création : 02/10/2013 */
/* Date de la dernière modification : 05/10/2013 */
/* Commentaire : Petit jeu semblable a super mario mais avec un personnage différent (naruto) */
/* Version 2 : Que des changements au niveau du code source */
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_mixer.h>
#include "const.h"
#include "jeu.h"
int main (int argc, char *argv[])
{
/* SDL déclaration */
SDL_Surface *ecran=NULL, *menu=NULL, *instruction=NULL, *flag=NULL;
SDL_Rect pos_menu, pos_flag;
SDL_Event event;
int continuer=1, afficher_instruction=0, t_ctrl=0, choix_menu=0; /* 0 içi c'est le premier choix (Jouer) du menu */
/* SDL mixer déclaration */
Mix_Music *intro_music=NULL;
/* SDL initialisation */
SDL_Init(SDL_INIT_EVERYTHING);
/* Image de l'application */
SDL_WM_SetIcon(IMG_Load("naru_res\\icone.png"), NULL);
/* Configuration de l'ecran */
ecran=SDL_SetVideoMode(FENETRE_L, FENETRE_H, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
/* Nom de l'application */
SDL_WM_SetCaption("Super Naruto", NULL);
/* Chargement des images */
/* Menu */
menu=IMG_Load("naru_res\\menu.jpg");
/* Instruction */
instruction=IMG_Load("naru_res\\instruction.jpg");
/* flag */
flag=IMG_Load("naru_res\\akatsuki_flag.png");
/* Transparence du flag */
SDL_SetColorKey(flag, SDL_SRCCOLORKEY, SDL_MapRGB(flag->format, 0, 255, 0));
/* Positionnement */
pos_menu.x=0;
pos_menu.y=0;
pos_flag.x=250-flag->w;
pos_flag.y=235-flag->h;
/* SDL mixer initialisation */
Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096);
/* Chargement de la musique d'entrée */
intro_music=Mix_LoadMUS("naru_res\\intro1.wav");
while (continuer)
{
SDL_WaitEvent(&event);
switch (event.type)
{
/* Fermeture de l'application */
case SDL_QUIT: continuer=0; break;
/* Gestion des évenements clavier */
case SDL_KEYDOWN: /* Si touche enfoncée */
switch(event.key.keysym.sym)
{
case SDLK_UP: pos_flag.x=250-flag->w;
pos_flag.y=235-flag->h;
choix_menu=0;
break;
case SDLK_DOWN: pos_flag.x=250-flag->w;
pos_flag.y=295-flag->h;
choix_menu=1;
break;
case SDLK_RETURN: if (choix_menu) /* Si choix_menu==1 (Quitter) */
continuer=0; /* On quitte le programme */
else
afficher_instruction=1; /* On affiche les instructions */
break;
case SDLK_LCTRL: if (afficher_instruction) /* Si touche CTRL GAUCHE enfoncée */
{
afficher_instruction=0;
jouer(ecran); /* On commence le jeu */
}
break;
case SDLK_RCTRL: if (afficher_instruction) /* Si touche CTRL DROIT enfoncée */
{
afficher_instruction=0;
jouer(ecran); /* On commence le jeu */
}
break;
}
break; /* sortie de SDL_KEYDOWN */
case SDL_KEYUP: /* Si touche relachée */
if (t_ctrl) t_ctrl=0;
break; /* sortie de SDL_KEYUP */
}
/* Blit */
/* Instruction */
if (afficher_instruction)
SDL_BlitSurface(instruction, NULL, ecran, &pos_menu);
else
{
/* Menu */
SDL_BlitSurface(menu, NULL, ecran, &pos_menu);
/* Akatsuki_flag (pour faire un choix dans le menu) */
SDL_BlitSurface(flag, NULL, ecran, &pos_flag);
}
/* Mise a jour de l'écran */
SDL_Flip(ecran);
/* On joue le son */
if (!Mix_PlayingMusic())
Mix_PlayMusic(intro_music, -1);
}
/* Vidage SDL mixer */
Mix_FreeMusic(intro_music);
Mix_CloseAudio();
/* Vidage SDL (surfaces) */
SDL_FreeSurface(menu);
SDL_FreeSurface(instruction);
SDL_FreeSurface(flag);
SDL_Quit();
return EXIT_SUCCESS;
}