Commit 0c17227fc17c9557d48b7dcf71df85c2910a00c0
1 parent
f8b7fad8
Mise au propre
Showing
72 changed files
with
0 additions
and
3259 deletions
Show diff stats
Space Invader/Envahisseurs/Graphique/Lutins/Coeur.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_bombe.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_bouclier.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_canon.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_canon_ferraille.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_missile.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_monstre1_1.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_monstre1_2.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_monstre2_1.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_monstre2_2.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_monstre3_1.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_monstre3_2.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_monstre_bouillie.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/invader_ovni.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/millepatte_champi.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/millepatte_corps_bas.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/millepatte_corps_droite.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/millepatte_corps_gauche.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/millepatte_corps_haut.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/millepatte_tete_bas.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/millepatte_tete_droite.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/millepatte_tete_gauche.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/Lutins/millepatte_tete_haut.bmp deleted
No preview for this file type
Space Invader/Envahisseurs/Graphique/src/Graphique/Makefile deleted
... | ... | @@ -1,29 +0,0 @@ |
1 | -# | |
2 | -# Makefile pour la bibliotheque graphique | |
3 | -# | |
4 | - | |
5 | -SOURCES = $(wildcard *.c) | |
6 | -OBJETS = $(SOURCES:.c=.o) | |
7 | -CIBLE = libgraph.a | |
8 | - | |
9 | -# | |
10 | -# Nom de la cible principale | |
11 | -# | |
12 | - | |
13 | -all: $(CIBLE) | |
14 | - | |
15 | -# | |
16 | -# Cible de nettoyage | |
17 | -# | |
18 | - | |
19 | -clean: | |
20 | - rm -f core *.o $(CIBLE) | |
21 | - | |
22 | -# | |
23 | -# Dependances pour la bibliotheque | |
24 | -# | |
25 | - | |
26 | -$(CIBLE): $(OBJETS) | |
27 | - $(AR) rs $@ $? | |
28 | - | |
29 | -$(CIBLE:.a=).o: $(CIBLE:.a=).c $(CIBLE:.a=).h |
Space Invader/Envahisseurs/Graphique/src/Graphique/libgraph.c deleted
... | ... | @@ -1,239 +0,0 @@ |
1 | -/**** Bibliotheque graphique ****/ | |
2 | - | |
3 | -/** Fichiers d'inclusion **/ | |
4 | - | |
5 | -#include <SDL/SDL.h> | |
6 | -#include <SDL/SDL_ttf.h> | |
7 | -#include "libgraph.h" | |
8 | - | |
9 | -/** Types **/ | |
10 | - | |
11 | -typedef struct | |
12 | -{ | |
13 | - int r, v, b; | |
14 | -} couleur; | |
15 | - | |
16 | -/** Constantes **/ | |
17 | - | |
18 | -#define BITS_PAR_PIXEL 32 | |
19 | -#define TAILLE_POLICE 20 | |
20 | - | |
21 | -static const couleur couleurs[] = { { 255, 255, 255 }, { 0, 0, 0 }, { 255, 0, 0 }, | |
22 | - { 0, 255, 0 }, { 0, 0, 255 }, { 255, 105, 180 }, | |
23 | - { 150, 150, 150 }, { -1, -1, -1 } }; | |
24 | - | |
25 | -static const char policeDefaut[]="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; | |
26 | - | |
27 | -/** Variables globales **/ | |
28 | - | |
29 | -static SDL_Surface *surface; | |
30 | -TTF_Font* police; | |
31 | - | |
32 | -/** Fonctions **/ | |
33 | - | |
34 | -void choisirPolice(const char *chemin, int taille){ | |
35 | - police=TTF_OpenFont(chemin, taille); | |
36 | -} | |
37 | - | |
38 | -void initialiserTexte() { | |
39 | - TTF_Init(); | |
40 | - choisirPolice(policeDefaut, TAILLE_POLICE); | |
41 | -} | |
42 | - | |
43 | -/* Initialisation de la surface dessinable */ | |
44 | -unsigned char creerSurface (int largeur, int hauteur, char *titre) | |
45 | -{ | |
46 | - SDL_Init (SDL_INIT_VIDEO); | |
47 | - SDL_WM_SetCaption (titre, titre); | |
48 | - surface = SDL_SetVideoMode (largeur, hauteur, BITS_PAR_PIXEL, SDL_DOUBLEBUF); | |
49 | - initialiserTexte(); | |
50 | - | |
51 | - return (surface != NULL && police != NULL); | |
52 | -} | |
53 | - | |
54 | -/* Fermeture de la surface dessinable */ | |
55 | - | |
56 | -void fermerSurface (void) | |
57 | -{ | |
58 | - if (surface != NULL) SDL_FreeSurface (surface); | |
59 | - if (police != NULL) TTF_CloseFont(police); | |
60 | - TTF_Quit(); | |
61 | - SDL_Quit (); | |
62 | -} | |
63 | - | |
64 | -/* Creation d'une couleur */ | |
65 | - | |
66 | -static int creerCouleur (int ncouleur) | |
67 | -{ | |
68 | - couleur c = couleurs[ncouleur]; | |
69 | - return SDL_MapRGB (surface->format, c.r, c.v, c.b); | |
70 | -} | |
71 | - | |
72 | -/* Dessin d'un rectangle plein */ | |
73 | - | |
74 | -void rectanglePlein (int x, int y, int l, int h, int c) | |
75 | -{ | |
76 | - SDL_Rect rectangle = { x, y, l, h }; | |
77 | - SDL_FillRect (surface, &rectangle, creerCouleur (c)); | |
78 | - // SDL_Flip(surface); | |
79 | -} | |
80 | - | |
81 | -/* Manipulation de lutins */ | |
82 | - | |
83 | -static SDL_Surface *lutins[MAX_LUTINS]; | |
84 | -static int lutins_nb = 0; | |
85 | - | |
86 | -int lutinTexte(char* texte, int couleurTexte) { | |
87 | - couleur c=couleurs[couleurTexte]; | |
88 | - SDL_Color couleur={c.r, c.v, c.b}; | |
89 | - SDL_Surface* lutin=TTF_RenderText_Solid(police, texte, couleur); | |
90 | - if (lutin != NULL) | |
91 | - { | |
92 | - lutins[lutins_nb++] = lutin; | |
93 | - return lutins_nb - 1; | |
94 | - } | |
95 | - return -1; | |
96 | -} | |
97 | - | |
98 | -static void configurerLutin (SDL_Surface *lutin, int ncouleur) | |
99 | -{ | |
100 | - couleur c = couleurs[ncouleur]; | |
101 | - int fond = SDL_MapRGB (lutin->format, c.r, c.v, c.b); | |
102 | - SDL_SetColorKey (lutin, SDL_SRCCOLORKEY | SDL_RLEACCEL, fond); | |
103 | -} | |
104 | - | |
105 | -int chargerLutin (char *fichier, int couleur) | |
106 | -{ | |
107 | - if (lutins_nb >= MAX_LUTINS) return -2; | |
108 | - SDL_Surface *lutin = SDL_LoadBMP (fichier); | |
109 | - if (lutin != NULL) | |
110 | - { | |
111 | - lutins[lutins_nb++] = lutin; | |
112 | - if (couleur >= 0) configurerLutin (lutin, couleur); | |
113 | - return lutins_nb - 1; | |
114 | - } | |
115 | - return -1; | |
116 | -} | |
117 | - | |
118 | -void afficherLutin (int lutin, int x, int y) | |
119 | -{ | |
120 | - SDL_Rect position; | |
121 | - position.x = x; | |
122 | - position.y = y; | |
123 | - SDL_BlitSurface (lutins[lutin], NULL, surface, &position); | |
124 | -} | |
125 | - | |
126 | -int creerLutin (int x, int y, int largeur, int hauteur, int couleur) | |
127 | -{ | |
128 | - if (lutins_nb >= MAX_LUTINS) return -2; | |
129 | - int rmask, gmask, bmask, amask; | |
130 | -#if SDL_BYTEORDER == SDL_BIG_ENDIAN | |
131 | - rmask = 0xff000000; | |
132 | - gmask = 0x00ff0000; | |
133 | - bmask = 0x0000ff00; | |
134 | - amask = 0x000000ff; | |
135 | -#else | |
136 | - rmask = 0x000000ff; | |
137 | - gmask = 0x0000ff00; | |
138 | - bmask = 0x00ff0000; | |
139 | - amask = 0xff000000; | |
140 | -#endif | |
141 | - if (couleur < 0) amask = 0x00000000; | |
142 | - SDL_Surface *lutin = | |
143 | - SDL_CreateRGBSurface (0, largeur, hauteur, BITS_PAR_PIXEL, rmask, gmask, bmask, amask); | |
144 | - SDL_Rect fenetre; | |
145 | - fenetre.x = x; | |
146 | - fenetre.y = y; | |
147 | - fenetre.h = hauteur; | |
148 | - fenetre.w = largeur; | |
149 | - SDL_BlitSurface (surface, &fenetre, lutin, NULL); | |
150 | - lutins[lutins_nb++] = lutin; | |
151 | - if (couleur >= 0) configurerLutin (lutin, couleur); | |
152 | - return lutins_nb - 1; | |
153 | -} | |
154 | - | |
155 | -void tailleLutin (int lutin, int *largeur, int *hauteur) | |
156 | -{ | |
157 | - *largeur = lutins[lutin]->w; | |
158 | - *hauteur = lutins[lutin]->h; | |
159 | -} | |
160 | - | |
161 | -int sauverLutin (int lutin, char *nom) { return SDL_SaveBMP (lutins[lutin], nom); } | |
162 | - | |
163 | -/* Manipulation de copie de surface en BMP */ | |
164 | - | |
165 | -int sauverSurface (char *fichier) { return SDL_SaveBMP (surface, fichier); } | |
166 | - | |
167 | -unsigned char chargerSurface (char *fichier) | |
168 | -{ | |
169 | - SDL_Surface *image = SDL_LoadBMP (fichier); | |
170 | - if (image != NULL) | |
171 | - { | |
172 | - SDL_BlitSurface (image, NULL, surface, NULL); | |
173 | - SDL_Flip (surface); | |
174 | - } | |
175 | - return (image != NULL); | |
176 | -} | |
177 | - | |
178 | -void majSurface (void) { SDL_Flip (surface); } | |
179 | - | |
180 | -/* Trouver la couleur d'un pixel */ | |
181 | - | |
182 | -int couleurPixel (int x, int y) | |
183 | -{ | |
184 | - int bpp = surface->format->BytesPerPixel; | |
185 | - Uint32 *p = (Uint32 *)(surface->pixels + y * surface->pitch + x * bpp); | |
186 | - Uint8 r, v, b; | |
187 | - SDL_GetRGB (*p, surface->format, &r, &v, &b); | |
188 | - int i = 0; | |
189 | - while (1) | |
190 | - { | |
191 | - if (couleurs[i].r < 0) break; | |
192 | - if (r == couleurs[i].r && v == couleurs[i].v && b == couleurs[i].b) break; | |
193 | - i++; | |
194 | - } | |
195 | - if (couleurs[i].r < 0) | |
196 | - return -1; | |
197 | - else | |
198 | - return i; | |
199 | -} | |
200 | - | |
201 | -/* Fonction de traitement des événements */ | |
202 | - | |
203 | -void lireEvenement (evenement *evt, char *touche, void **detail) | |
204 | -{ | |
205 | - static SDL_keysym _detail; | |
206 | - SDL_Event event; | |
207 | - while (SDL_PollEvent (&event)) | |
208 | - { | |
209 | - if (event.type == SDL_QUIT) *evt = quitter; | |
210 | - if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) | |
211 | - { | |
212 | - *evt = (event.type == SDL_KEYDOWN) ? toucheBas : toucheHaut; | |
213 | - char *nom = SDL_GetKeyName (event.key.keysym.sym); | |
214 | - if (strlen (nom) == 1 && nom[0] >= 32 && nom[0] < 128) | |
215 | - *touche = nom[0]; | |
216 | - else | |
217 | - *touche = 0; | |
218 | - if (detail != NULL) | |
219 | - { | |
220 | - _detail = event.key.keysym; | |
221 | - *detail = &_detail; | |
222 | - } | |
223 | - break; | |
224 | - } | |
225 | - } | |
226 | -} | |
227 | - | |
228 | -void attendreEvenement (void) | |
229 | -{ | |
230 | - SDL_Event event; | |
231 | - while (SDL_WaitEvent (&event)) switch (event.type) | |
232 | - { | |
233 | - case SDL_QUIT: | |
234 | - exit (0); | |
235 | - case SDL_KEYDOWN: | |
236 | - case SDL_MOUSEBUTTONDOWN: | |
237 | - return; | |
238 | - } | |
239 | -} |
Space Invader/Envahisseurs/Graphique/src/Graphique/libgraph.h deleted
... | ... | @@ -1,156 +0,0 @@ |
1 | -/**** Bibliotheque graphique (definitions) ****/ | |
2 | - | |
3 | -/** Constantes **/ | |
4 | - | |
5 | -#define COULEUR_BLANC 0 | |
6 | -#define COULEUR_NOIR 1 | |
7 | -#define COULEUR_ROUGE 2 | |
8 | -#define COULEUR_VERT 3 | |
9 | -#define COULEUR_BLEU 4 | |
10 | -#define COULEUR_ROSE 5 | |
11 | -#define COULEUR_GRIS 6 | |
12 | - | |
13 | -#define MAX_LUTINS 16 | |
14 | - | |
15 | -typedef enum {toucheBas, toucheHaut, quitter} evenement; | |
16 | - | |
17 | -/** Prototypes **/ | |
18 | - | |
19 | -/** | |
20 | - * @brief cree une fenetre 2D | |
21 | - * | |
22 | - * @param largeur en pixels de la fenetre | |
23 | - * @param hauteur en pixels de la fenetre | |
24 | - * @param titre de la fenetre (chaine de caractere) | |
25 | - */ | |
26 | -unsigned char creerSurface (int largeur, int hauteur, char *titre); | |
27 | - | |
28 | -/** | |
29 | - * @brief permet de charger un fichier image au format bmp (bitmap) | |
30 | - * | |
31 | - * @param fichier nom du fichier | |
32 | - */ | |
33 | -unsigned char chargerSurface (char *fichier); | |
34 | - | |
35 | - | |
36 | -/** | |
37 | - * @brief permet de sauvegarder une surface en image (format bmp) | |
38 | - * | |
39 | - * @param fichier nom du fichier | |
40 | - * @return 0 si OK, valeur negative sinon | |
41 | - */ | |
42 | -int sauverSurface (char *fichier); | |
43 | - | |
44 | -/** | |
45 | - * @brief met a jour la surface d'affichage | |
46 | - */ | |
47 | -void majSurface (void); | |
48 | - | |
49 | - | |
50 | -/** | |
51 | - * @brief libere la surface d'affichage | |
52 | - * a faire lors de la fermeture | |
53 | - * du programme | |
54 | - */ | |
55 | -void fermerSurface (void); | |
56 | - | |
57 | -/** | |
58 | - * @brief choisit la police de caractères à utiliser pour afficher du texte | |
59 | - * @param chemin nom du fichier de police (format .ttf, voir /usr/share/fonts/truetype) | |
60 | - * @param taille taille de la police | |
61 | - */ | |
62 | -void choisirPolice(const char *chemin, int taille); | |
63 | - | |
64 | -/** | |
65 | - * @brief dessine un rectange de taille (l,h) aux coordonnêes | |
66 | - * (x,y) et de couleur c | |
67 | - * | |
68 | - * @param x 0 <= x <= l_surface | |
69 | - * @param y 0 <= y <= h_surface | |
70 | - * @param l largeur en pixels | |
71 | - * @param h longueur en pixels | |
72 | - * @param c indice de couleur voir variable couleurs dans le fichier .c | |
73 | - */ | |
74 | -void rectanglePlein (int x, int y, int l, int h, int c); | |
75 | - | |
76 | - | |
77 | -/** | |
78 | - * @brief permet de determiner l'indice du tableau de couleur du | |
79 | - * pixel aux coordonnees (x,y) | |
80 | - * | |
81 | - * @param x 0 <= x <= l_surface | |
82 | - * @param y 0 <= y <= h_surface | |
83 | - * @return indice de couleur voire variable couleurs dans le fichier .c | |
84 | - */ | |
85 | -int couleurPixel (int x, int y); | |
86 | - | |
87 | -/** | |
88 | - * @brief crée un lutin à partir d'un texte | |
89 | - * | |
90 | - * @param texte le texte | |
91 | - * @param couleur indice de couleur du texte | |
92 | - * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS) | |
93 | - */ | |
94 | -int lutinTexte(char *texte, int couleur); | |
95 | - | |
96 | -/** | |
97 | - * @brief charge un lutin à partir du fichier | |
98 | - * | |
99 | - * @param fichier image bitmap du lutin à charger | |
100 | - * @param couleur indice de couleurs à charger | |
101 | - * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS) | |
102 | - */ | |
103 | -int chargerLutin (char *fichier, int couleur); | |
104 | - | |
105 | -/** | |
106 | - * @brief afficher un lutin aux coordonnées (x,y) | |
107 | - * | |
108 | - * @param lutin numero du lutin à afficher (< MAX_LUTINS) | |
109 | - * @param x abscisse de départ | |
110 | - * @param y ordonnée de départ | |
111 | - */ | |
112 | -void afficherLutin (int lutin, int x, int y); | |
113 | - | |
114 | -/** | |
115 | - * @brief creer un lutin de taille (l,h) aux coordonnées (x,y) | |
116 | - * | |
117 | - * @param x abscisse de départ | |
118 | - * @param y ordonnée de départ | |
119 | - * @param largeur largeur du lutin | |
120 | - * @param hauteur hauteur du lutin | |
121 | - * @param couleur indice de couleur à partir du tableau _couleurs_ | |
122 | - * @return indice du lutin dans le tableau global (< MAX_LUTINS) | |
123 | - */ | |
124 | -int creerLutin (int x, int y, int largeur, int hauteur, int couleur); | |
125 | - | |
126 | -/** | |
127 | - * @brief sauvegarde un lutin dans un fichier | |
128 | - * | |
129 | - * @param lutin numero de lutin à sauvegarder (< MAX_LUTINS) | |
130 | - * @param nom fichier pour la sauvegarde | |
131 | - * @return 0 si OK valeur négative sinon | |
132 | - */ | |
133 | -int sauverLutin (int lutin, char *nom); | |
134 | - | |
135 | -/** | |
136 | - * @brief calcule la taille (largeur,hauteur) d'un lutin | |
137 | - * | |
138 | - * @param lutin index du lutin (< MAX_LUTINS) | |
139 | - * @param largeur pointeur sur la largeur | |
140 | - * @param hauteur pointeur sur la hauteur | |
141 | - */ | |
142 | -void tailleLutin (int lutin, int *largeur, int *hauteur); | |
143 | - | |
144 | -/** | |
145 | - * @brief lire une touche au clavier | |
146 | - * | |
147 | - * @param evt pointeur sur evenement | |
148 | - * @param touche pointeur sur la touche pressée | |
149 | - * @param detail NULL ou keysim | |
150 | - */ | |
151 | -void lireEvenement (evenement *evt, char *touche, void **detail); | |
152 | - | |
153 | -/** | |
154 | - * @brief attente d'un evenement bouton, souris, fin de programme | |
155 | - */ | |
156 | -void attendreEvenement (void); |
Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.c deleted
... | ... | @@ -1,359 +0,0 @@ |
1 | -#include <stdlib.h> | |
2 | -#include <string.h> | |
3 | - | |
4 | -#include "../Graphique/libgraph.h" | |
5 | -#include "../ListeC/Liste.h" | |
6 | -#include "Interactif.h" | |
7 | -#include "../Main/init.h" | |
8 | - | |
9 | -#define TailleX 500 | |
10 | -#define TailleY 500 | |
11 | -#define Sol 475 | |
12 | -#define ErreurHitbox 2 | |
13 | -#define TailleX9_10 (9 * TailleX / 10) | |
14 | -#define TailleX1_10 (TailleX / 10) | |
15 | - | |
16 | -#define ValeurDeplacementTire 5 | |
17 | -#define ValeurDeplacementJoueur 3 | |
18 | -#define ValeurDeplacementBombe 2 | |
19 | - | |
20 | - | |
21 | - | |
22 | -int CheckCollisionEntiteEntite (struct entite entite1, | |
23 | - int L1, | |
24 | - int H1, | |
25 | - struct entite entite2, | |
26 | - int L2, | |
27 | - int H2) | |
28 | -{ | |
29 | - //CheckX | |
30 | - int gauche1 = entite1.posx - L1/2 + ErreurHitbox; | |
31 | - int droite1 = entite1.posx + L1/2 - ErreurHitbox; | |
32 | - int gauche2 = entite2.posx - L2/2 + ErreurHitbox; | |
33 | - int droite2 = entite2.posx + L2/2 - ErreurHitbox; | |
34 | - //Tout les cas possibles de collision | |
35 | - int CheckX = (gauche1 >= gauche2 && gauche1 <= droite2) || | |
36 | - (droite1 >= gauche2 && droite1 <= droite2) || | |
37 | - (gauche1 >= gauche2 && droite1 <= droite2) || | |
38 | - (gauche2 >= gauche1 && droite2 <= droite1); | |
39 | - | |
40 | - //CheckY | |
41 | - int haut1 = entite1.posy - H1/2 + ErreurHitbox; | |
42 | - int bas1 = entite1.posy + H1/2 - ErreurHitbox; | |
43 | - int haut2 = entite2.posy - H2/2 + ErreurHitbox; | |
44 | - int bas2 = entite2.posy + H2/2 - ErreurHitbox; | |
45 | - int CheckY = (haut1 <= bas2 && haut1 >= haut2) || | |
46 | - (bas1 <= bas2 && bas1 >= haut2) || | |
47 | - (haut1 <= haut2 && bas1 >= bas2) || | |
48 | - (haut2 <= haut1 && bas2 >= bas1); | |
49 | - | |
50 | - | |
51 | - return CheckX && CheckY; | |
52 | -} | |
53 | - | |
54 | -//La fonction renvoie l'entite de la Liste1 si il y a collision | |
55 | -struct entite* CheckCollisionListeEntite (struct liste_entite* Liste1, | |
56 | - int L1, | |
57 | - int H1, | |
58 | - struct entite entite2, | |
59 | - int L2, | |
60 | - int H2) | |
61 | -{ | |
62 | - | |
63 | - struct liste_entite *pListe1 = Liste1; | |
64 | - while (pListe1 != NULL) | |
65 | - { | |
66 | - | |
67 | - if(CheckCollisionEntiteEntite (pListe1->entite, | |
68 | - L1, | |
69 | - H1, | |
70 | - entite2, | |
71 | - L2, | |
72 | - H2) == 1) | |
73 | - { | |
74 | - return &pListe1->entite; | |
75 | - } | |
76 | - | |
77 | - pListe1 = pListe1->suivant; | |
78 | - } | |
79 | - return NULL; | |
80 | -} | |
81 | - | |
82 | - | |
83 | - | |
84 | -//La fonction renvoie une liste d'entite avec les deux entites à supprimer si il y a collision | |
85 | -struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, | |
86 | - int L1, | |
87 | - int H1, | |
88 | - struct liste_entite* Liste2, | |
89 | - int L2, | |
90 | - int H2) | |
91 | -{ | |
92 | - | |
93 | - struct liste_entite *pListe2 = Liste2; | |
94 | - while (pListe2 != NULL) | |
95 | - { | |
96 | - | |
97 | - struct entite* collision = CheckCollisionListeEntite (Liste1, | |
98 | - L1, | |
99 | - H1, | |
100 | - pListe2->entite, | |
101 | - L2, | |
102 | - H2); | |
103 | - if (collision == NULL) | |
104 | - { | |
105 | - pListe2 = pListe2->suivant; | |
106 | - } | |
107 | - | |
108 | - else | |
109 | - { | |
110 | - // Création des structures pour les deux entités | |
111 | - struct liste_entite* Entite1 = malloc(sizeof(struct liste_entite)); | |
112 | - struct liste_entite* Entite2 = malloc(sizeof(struct liste_entite)); | |
113 | - | |
114 | - // Remplissage des structure avec les entités correspondantes | |
115 | - Entite1->entite = *collision; | |
116 | - Entite2->entite = pListe2->entite; | |
117 | - | |
118 | - // Relier les structures entre elles | |
119 | - Entite1->suivant = Entite2; | |
120 | - Entite2->suivant = NULL; | |
121 | - | |
122 | - return Entite1; | |
123 | - } | |
124 | - } | |
125 | - | |
126 | - return NULL; | |
127 | -} | |
128 | - | |
129 | -//Tire un missile, il ne peux y en avoir que un à la fois | |
130 | -void Tirer (struct entite joueur, | |
131 | - struct liste_entite** pl) | |
132 | -{ | |
133 | - if (*pl == NULL) | |
134 | - { | |
135 | - ajout_tete(pl, | |
136 | - creer_entite(joueur.posx, | |
137 | - joueur.posy, | |
138 | - -1)); | |
139 | - } | |
140 | -} | |
141 | - | |
142 | - | |
143 | -void DeplacementTire(struct liste_entite** Liste) | |
144 | -{ | |
145 | - struct entite* Entite = &(*Liste)->entite; | |
146 | - if (Entite != NULL) | |
147 | - { | |
148 | - | |
149 | - if (Entite->posy <= 0) | |
150 | - { | |
151 | - afficherLutin(bouillie, | |
152 | - Entite->posx - hitboxbouillieL/2 + ErreurHitbox, | |
153 | - Entite->posy); | |
154 | - SupprimerEntite(Liste, Entite); | |
155 | - } | |
156 | - | |
157 | - else | |
158 | - { | |
159 | - Entite->posy -= ValeurDeplacementTire; | |
160 | - //Je divise ErreurHitbox par 2 car l'erreur du missile est plus petite que pour les autres images | |
161 | - afficherLutin(missile, | |
162 | - Entite->posx - hitboxmissileL/2 + ErreurHitbox/2, | |
163 | - Entite->posy - hitboxmissileH/2 + ErreurHitbox/2); | |
164 | - } | |
165 | - } | |
166 | -} | |
167 | - | |
168 | - | |
169 | -//La fonction fait une action soit au joueur soit aux tires selon la touche préssée | |
170 | -void action(struct entite* joueur, | |
171 | - char c, | |
172 | - struct liste_entite** tires) | |
173 | -{ | |
174 | - switch (c) | |
175 | - { | |
176 | - case 'd': | |
177 | - if (joueur->posx <= TailleX9_10) | |
178 | - { | |
179 | - joueur->posx += ValeurDeplacementJoueur; | |
180 | - } | |
181 | - break; | |
182 | - case 'q': | |
183 | - if (joueur->posx >= TailleX1_10) | |
184 | - { | |
185 | - joueur->posx -= ValeurDeplacementJoueur; | |
186 | - } | |
187 | - break; | |
188 | - case 't': | |
189 | - Tirer(*joueur, | |
190 | - tires); | |
191 | - break; | |
192 | - default: | |
193 | - break; | |
194 | - } | |
195 | -} | |
196 | - | |
197 | -//La fonction crée une liste de tout les enemies pouvant drop des bombes | |
198 | -//Ceux les plus bas de leur colonne | |
199 | -//Puis ajoute à la liste bombe, une bombe provenant d'un des enemies pouvant drop des bombes | |
200 | -//Le choix de quel enemie drop la bombe est aléatoire | |
201 | -void MakeBombeDrop (struct liste_entite* enemies, | |
202 | - struct liste_entite** bombes) | |
203 | -{ | |
204 | - | |
205 | - struct liste_entite* pListe = enemies; | |
206 | - struct liste_entite* Dropable = NULL; | |
207 | - int taille = 0; | |
208 | - | |
209 | - while (pListe != NULL) | |
210 | - { | |
211 | - | |
212 | - if (pListe->entite.dropbombe == 1) | |
213 | - { | |
214 | - ajout_tete(&Dropable,pListe->entite); | |
215 | - taille += 1; | |
216 | - } | |
217 | - | |
218 | - pListe = pListe->suivant; | |
219 | - } | |
220 | - | |
221 | - if(Dropable == NULL) | |
222 | - { | |
223 | - return; | |
224 | - } | |
225 | - //On choisit une valeur aléatoire qui représente l'enemie qui va drop la bombe | |
226 | - //Il ya un warning comme quoi rand() à une limite | |
227 | - //Mais on ne la dépassera jamais, taille ne pourra | |
228 | - //jamais excédé une vingtaine d'enemies par ligne | |
229 | - int randomIndex = rand() % taille-1; | |
230 | - struct liste_entite* pDropable = Dropable; | |
231 | - | |
232 | - for (int i = 0; i <= randomIndex; i++) | |
233 | - { | |
234 | - pDropable = pDropable->suivant; | |
235 | - } | |
236 | - | |
237 | - ajout_tete(bombes, | |
238 | - creer_entite(pDropable->entite.posx, | |
239 | - pDropable->entite.posy, | |
240 | - -1)); | |
241 | -} | |
242 | - | |
243 | - | |
244 | -void DeplacementBombe(struct liste_entite** Liste) | |
245 | -{ | |
246 | - struct liste_entite* pListe = *Liste; | |
247 | - | |
248 | - while (pListe != NULL) | |
249 | - { | |
250 | - | |
251 | - if (pListe->entite.posy + hitboxbombeH/2 - ErreurHitbox >= Sol) | |
252 | - { | |
253 | - struct entite* a_supprimer = &pListe->entite; | |
254 | - | |
255 | - pListe = pListe->suivant; | |
256 | - SupprimerEntite(Liste,a_supprimer); | |
257 | - } | |
258 | - | |
259 | - else | |
260 | - { | |
261 | - pListe->entite.posy += ValeurDeplacementBombe; | |
262 | - afficherLutin(bombe, | |
263 | - pListe->entite.posx - hitboxbombeL/2 + ErreurHitbox, | |
264 | - pListe->entite.posy - hitboxbombeH/2 + ErreurHitbox); | |
265 | - pListe = pListe->suivant; | |
266 | - } | |
267 | - } | |
268 | -} | |
269 | - | |
270 | -//Si un enemie est éliminé et qu'il etait le plus bas de sa colonne (il pouvait drop des bombes) | |
271 | -//Alors si il y en a un l'enemie au dessus de lui (de la meme colonne) peut drop des bombes | |
272 | -void NouveauDroppeurBombe (struct liste_entite** liste, | |
273 | - struct entite* entite) | |
274 | -{ | |
275 | - | |
276 | - int posx = entite->posx; | |
277 | - int posy = entite->posy; | |
278 | - struct liste_entite* pListe = *liste; | |
279 | - struct entite* entite_basse = NULL; | |
280 | - | |
281 | - // On parcourt la liste et on cherche l'entité la plus basse ayant la même position x | |
282 | - while (pListe != NULL) | |
283 | - { | |
284 | - | |
285 | - if (pListe->entite.posy != posy) | |
286 | - { | |
287 | - | |
288 | - if (pListe->entite.posx == posx && | |
289 | - entite_basse == NULL) | |
290 | - { | |
291 | - entite_basse = &pListe->entite; | |
292 | - } | |
293 | - | |
294 | - else if (pListe->entite.posx == posx && | |
295 | - pListe->entite.posy > entite_basse->posy) | |
296 | - { | |
297 | - entite_basse = &pListe->entite; | |
298 | - } | |
299 | - } | |
300 | - | |
301 | - pListe = pListe->suivant; | |
302 | - } | |
303 | - | |
304 | - // Si aucune entité n'est située plus bas que l'entité en question, on ne peut pas dropper la bombe | |
305 | - if (entite_basse == NULL) | |
306 | - { | |
307 | - return; | |
308 | - } | |
309 | - | |
310 | - entite_basse->dropbombe = 1; | |
311 | -} | |
312 | - | |
313 | - | |
314 | - | |
315 | -//Fonction principale qui supprime les entités rentrées en collision de leur liste | |
316 | -int SupprimerEntitesEnCollision (struct liste_entite** Liste1, | |
317 | - int L1, | |
318 | - int H1, | |
319 | - struct liste_entite** Liste2, | |
320 | - int L2, | |
321 | - int H2) | |
322 | -{ | |
323 | - | |
324 | - struct liste_entite* collision = CheckCollisionListeListe(*Liste1, | |
325 | - L1, | |
326 | - H1, | |
327 | - *Liste2, | |
328 | - L2, | |
329 | - H2); | |
330 | - if (collision != NULL) | |
331 | - { | |
332 | - // Récupération des entités impliquées | |
333 | - struct entite* Entite1 = &collision->entite; | |
334 | - struct entite* Entite2 = &collision->suivant->entite; | |
335 | - | |
336 | - if (Entite1->dropbombe == 1) | |
337 | - { | |
338 | - NouveauDroppeurBombe(Liste1,Entite1); | |
339 | - } | |
340 | - | |
341 | - if (Entite2->dropbombe == 1) | |
342 | - { | |
343 | - NouveauDroppeurBombe(Liste2,Entite2); | |
344 | - } | |
345 | - | |
346 | - // Suppression de l'entité 1 de la liste 1 | |
347 | - SupprimerEntite(Liste1, Entite1); | |
348 | - // Suppression de l'entité 2 de la liste 2 | |
349 | - SupprimerEntite(Liste2, Entite2); | |
350 | - | |
351 | - afficherLutin(bouillie, | |
352 | - Entite2->posx - hitboxbouillieL/2 + ErreurHitbox, | |
353 | - Entite2->posy - hitboxbouillieH/2 + ErreurHitbox); | |
354 | - return 1; | |
355 | - } | |
356 | - return 0; | |
357 | -} | |
358 | - | |
359 | - |
Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.h deleted
... | ... | @@ -1,44 +0,0 @@ |
1 | -int CheckCollisionEntiteEntite (struct entite entite1, | |
2 | - int L1, | |
3 | - int H1, | |
4 | - struct entite entite2, | |
5 | - int L2, | |
6 | - int H2); | |
7 | - | |
8 | -struct entite* CheckCollisionListeEntite (struct liste_entite* Liste1, | |
9 | - int L1, | |
10 | - int H1, | |
11 | - struct entite entite2, | |
12 | - int L2, | |
13 | - int H2); | |
14 | - | |
15 | -struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, | |
16 | - int L1, | |
17 | - int H1, | |
18 | - struct liste_entite* Liste2, | |
19 | - int L2, | |
20 | - int H2); | |
21 | - | |
22 | -void Tirer (struct entite joueur, | |
23 | - struct liste_entite** pl); | |
24 | - | |
25 | -void DeplacementTire(struct liste_entite** Liste); | |
26 | - | |
27 | -void action(struct entite* joueur, | |
28 | - char c, | |
29 | - struct liste_entite** tires); | |
30 | - | |
31 | -void MakeBombeDrop (struct liste_entite* enemies, | |
32 | - struct liste_entite** bombes); | |
33 | - | |
34 | -void DeplacementBombe(struct liste_entite** Liste) ; | |
35 | - | |
36 | -void NouveauDroppeurBombe (struct liste_entite** liste, | |
37 | - struct entite* entite); | |
38 | - | |
39 | -int SupprimerEntitesEnCollision (struct liste_entite** Liste1, | |
40 | - int L1, | |
41 | - int H1, | |
42 | - struct liste_entite** Liste2, | |
43 | - int L2, | |
44 | - int H2); |
Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.c deleted
... | ... | @@ -1,78 +0,0 @@ |
1 | -#include <stdio.h> | |
2 | -#include <stdlib.h> | |
3 | -#include <string.h> | |
4 | - | |
5 | -#include "Liste.h" | |
6 | - | |
7 | -//Crée une entité | |
8 | -struct entite creer_entite (int x, | |
9 | - int y, | |
10 | - int bombe) | |
11 | -{ | |
12 | - struct entite e; | |
13 | - | |
14 | - e.posx = x; | |
15 | - e.posy = y; | |
16 | - e.dropbombe = bombe; | |
17 | - | |
18 | - return e; | |
19 | -} | |
20 | - | |
21 | - | |
22 | -//Ajout en tete une entité dans une liste | |
23 | -void ajout_tete (struct liste_entite** Liste, | |
24 | - struct entite x ) | |
25 | -{ | |
26 | - struct liste_entite *Listetmp=NULL; | |
27 | - | |
28 | - Listetmp = malloc(sizeof(struct liste_entite)); | |
29 | - Listetmp->entite = x; | |
30 | - Listetmp->suivant = *Liste; | |
31 | - | |
32 | - *Liste = Listetmp; | |
33 | -} | |
34 | - | |
35 | - | |
36 | -//Supprime une entite d'une liste | |
37 | -void SupprimerEntite (struct liste_entite** Liste, | |
38 | - struct entite* entite) | |
39 | -{ | |
40 | - struct liste_entite* courant = *Liste; | |
41 | - struct liste_entite* precedent = NULL; | |
42 | - | |
43 | - while (courant != NULL) | |
44 | - { | |
45 | - | |
46 | - if (memcmp (&courant->entite, | |
47 | - entite, | |
48 | - sizeof(struct entite)) == 0) | |
49 | - { | |
50 | - | |
51 | - if (precedent == NULL) | |
52 | - { | |
53 | - *Liste = courant->suivant; | |
54 | - } | |
55 | - | |
56 | - else | |
57 | - { | |
58 | - precedent->suivant = courant->suivant; | |
59 | - } | |
60 | - | |
61 | - free(courant); | |
62 | - break; | |
63 | - } | |
64 | - | |
65 | - precedent = courant; | |
66 | - courant = courant->suivant; | |
67 | - } | |
68 | -} | |
69 | - | |
70 | - | |
71 | -//Desallouer une liste entiere | |
72 | -void DesallouerListe (struct liste_entite** Liste) | |
73 | -{ | |
74 | - while(*Liste != NULL) | |
75 | - { | |
76 | - SupprimerEntite(Liste,&((*Liste)->entite)); | |
77 | - } | |
78 | -} |
Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.h deleted
... | ... | @@ -1,29 +0,0 @@ |
1 | -//dropbombe concerne les entités enemies | |
2 | -//1 les enemies peuvent drop des bombes, 0 ils ne peuvent pas | |
3 | -//Les entites non concernées vallent ont un dropbombe = -1 | |
4 | -struct entite | |
5 | -{ | |
6 | - int posx; | |
7 | - int posy; | |
8 | - int dropbombe; | |
9 | -}; | |
10 | - | |
11 | - | |
12 | -struct liste_entite | |
13 | -{ | |
14 | - struct entite entite; | |
15 | - struct liste_entite *suivant; | |
16 | -}; | |
17 | - | |
18 | - | |
19 | -struct entite creer_entite (int x, | |
20 | - int y, | |
21 | - int bombe); | |
22 | - | |
23 | -void ajout_tete (struct liste_entite** Liste, | |
24 | - struct entite x ); | |
25 | - | |
26 | -void SupprimerEntite (struct liste_entite** Liste, | |
27 | - struct entite* entite); | |
28 | - | |
29 | -void DesallouerListe (struct liste_entite** Liste); |
Space Invader/Envahisseurs/Graphique/src/Main/Makefile deleted
... | ... | @@ -1,34 +0,0 @@ |
1 | -CC=clang | |
2 | -TARGET=exec | |
3 | -CFLAGS=-g -W -Wall -Wextra | |
4 | -LDFLAGS=-I Graphique -l graph -L ../Graphique -l SDL -l SDL_ttf | |
5 | - | |
6 | -default: $(TARGET) | |
7 | - | |
8 | -Liste.o : ../ListeC/Liste.c ../ListeC/Liste.h | |
9 | - clang $(CFLAGS) -c ../ListeC/Liste.c | |
10 | - | |
11 | -Monstre.o : ../Monstre/Monstre.c ../Monstre/Monstre.h ../ListeC/Liste.h | |
12 | - clang $(CFLAGS) -c ../Monstre/Monstre.c | |
13 | - | |
14 | -Interactif.o : ../Interactif/Interactif.c ../Interactif/Interactif.h ../ListeC/Liste.h | |
15 | - clang $(CFLAGS) -c ../Interactif/Interactif.c | |
16 | - | |
17 | -init.o : init.c init.h ../ListeC/Liste.h | |
18 | - clang $(CFLAGS) -c init.c | |
19 | - | |
20 | -main.o : main.c ../ListeC/Liste.h | |
21 | - clang $(CFLAGS) -c main.c | |
22 | - | |
23 | - | |
24 | -$(TARGET): Liste.o main.o Monstre.o Interactif.o init.o | |
25 | - clang main.o Liste.o Monstre.o Interactif.o init.o -o $(TARGET) $(LDFLAGS) | |
26 | - | |
27 | -.PHONY: clean | |
28 | -clean: | |
29 | - rm -f *.o | |
30 | - rm -f $(TARGET) | |
31 | - | |
32 | -tidy : main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c | |
33 | - $(CC)-tidy main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c --checks="readability-*" -header-filter=.* | |
34 | - |
Space Invader/Envahisseurs/Graphique/src/Main/init.c deleted
... | ... | @@ -1,243 +0,0 @@ |
1 | -#include <stdio.h> | |
2 | -#include "../Graphique/libgraph.h" | |
3 | -#include "../ListeC/Liste.h" | |
4 | -#include "../Interactif/Interactif.h" | |
5 | -#include "init.h" | |
6 | - | |
7 | -#define TailleX 500 | |
8 | -#define TailleY 500 | |
9 | -#define Sol 475 | |
10 | -#define ErreurHitbox 2 | |
11 | -#define PositionX_1 (TailleX / 2) | |
12 | -#define PositionY_1 (TailleY / 2) | |
13 | -#define PositionY_2 (TailleY / 4) | |
14 | - | |
15 | -#define JoueurX (TailleX / 2) | |
16 | -#define JoueurY (9 * TailleY / 10) | |
17 | - | |
18 | -#define Nom "Space Invaders" | |
19 | -#define TaillePolice1 (TailleX / 10) | |
20 | -#define TaillePolice2 (TailleX / 20) | |
21 | -#define TailleChaineMax 30 | |
22 | - | |
23 | -//Ces variables sont globales car utilisées dans plusieurs .c | |
24 | -//Toutes les hitbox sont initialisées 1 fois puis sont des constantes | |
25 | -struct entite joueur; | |
26 | - | |
27 | -int canon = 0; | |
28 | -int missile = 0; | |
29 | -int enemie1_1 = 0; | |
30 | -int enemie1_2 = 0; | |
31 | -int bouillie = 0; | |
32 | -int bombe = 0; | |
33 | - | |
34 | -int hitboxcanonL = 0; | |
35 | -int hitboxcanonH = 0; | |
36 | -int hitboxmissileL = 0; | |
37 | -int hitboxmissileH = 0; | |
38 | -int hitboxenemieL = 0; | |
39 | -int hitboxenemieH = 0; | |
40 | -int hitboxbouillieL = 0; | |
41 | -int hitboxbouillieH = 0; | |
42 | -int hitboxbombeL = 0; | |
43 | -int hitboxbombeH = 0; | |
44 | - | |
45 | -//Initialisation des variables globales pour le main | |
46 | -void initialiser() | |
47 | -{ | |
48 | - canon = chargerLutin ("../../Lutins/invader_canon.bmp", | |
49 | - COULEUR_NOIR); | |
50 | - missile = chargerLutin ("../../Lutins/invader_missile.bmp", | |
51 | - COULEUR_NOIR); | |
52 | - enemie1_1 = chargerLutin ("../../Lutins/invader_monstre2_1.bmp", | |
53 | - COULEUR_NOIR); | |
54 | - enemie1_2 = chargerLutin ("../../Lutins/invader_monstre2_2.bmp", | |
55 | - COULEUR_NOIR); | |
56 | - bouillie = chargerLutin ("../../Lutins/invader_monstre_bouillie.bmp", | |
57 | - COULEUR_NOIR); | |
58 | - bombe = chargerLutin ("../../Lutins/invader_bombe.bmp", | |
59 | - COULEUR_NOIR); | |
60 | - | |
61 | - tailleLutin (canon, | |
62 | - &hitboxcanonL, | |
63 | - &hitboxcanonH); | |
64 | - | |
65 | - tailleLutin (missile, | |
66 | - &hitboxmissileL, | |
67 | - &hitboxmissileH); | |
68 | - //La taille des enemmies que j'utilise est la meme dans ces 2 variantes | |
69 | - tailleLutin (enemie1_1, | |
70 | - &hitboxenemieL, | |
71 | - &hitboxenemieH); | |
72 | - | |
73 | - tailleLutin (bouillie, | |
74 | - &hitboxbouillieL, | |
75 | - &hitboxbouillieH); | |
76 | - | |
77 | - tailleLutin (bombe, | |
78 | - &hitboxbombeL, | |
79 | - &hitboxbombeH); | |
80 | - | |
81 | -} | |
82 | - | |
83 | -//Initialisation des coordonnées du joueur pour le main | |
84 | -void initialiserjoueur() | |
85 | -{ | |
86 | - joueur.posx = JoueurX; | |
87 | - joueur.posy = JoueurY; | |
88 | - joueur.dropbombe = -1; | |
89 | -} | |
90 | - | |
91 | -//Page de démarage du jeu | |
92 | -char pagedemarrage() | |
93 | -{ | |
94 | - static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; | |
95 | - char input = '\0'; | |
96 | - evenement even = 0; | |
97 | - int Largeur = 0; | |
98 | - int Hauteur = 0; | |
99 | - char jouer[] = "Appuyer sur j pour Jouer"; | |
100 | - char quitter[] = "Appuyer ailleurs pour Quitter"; | |
101 | - | |
102 | - choisirPolice (policeDefaut, TaillePolice2); | |
103 | - int LutinJouer = lutinTexte (jouer, COULEUR_BLANC); | |
104 | - int LutinQuitter = lutinTexte (quitter, COULEUR_BLANC); | |
105 | - | |
106 | - choisirPolice (policeDefaut, TaillePolice1); | |
107 | - int LutinBienvenue = lutinTexte (Nom, COULEUR_VERT); | |
108 | - | |
109 | - rectanglePlein (0, | |
110 | - 0, | |
111 | - TailleX, | |
112 | - TailleY, | |
113 | - COULEUR_NOIR); | |
114 | - | |
115 | - tailleLutin (LutinBienvenue, | |
116 | - &Largeur, | |
117 | - &Hauteur); | |
118 | - afficherLutin (LutinBienvenue, | |
119 | - PositionX_1 - Largeur / 2, | |
120 | - PositionY_2 + Hauteur / 2); | |
121 | - | |
122 | - tailleLutin (LutinJouer, | |
123 | - &Largeur, | |
124 | - &Hauteur); | |
125 | - afficherLutin (LutinJouer, | |
126 | - PositionX_1 - Largeur / 2, | |
127 | - PositionY_1 - Hauteur / 2); | |
128 | - | |
129 | - tailleLutin (LutinQuitter, | |
130 | - &Largeur, | |
131 | - &Hauteur); | |
132 | - afficherLutin (LutinQuitter, | |
133 | - PositionX_1 - Largeur / 2, | |
134 | - PositionY_1 + Hauteur / 2); | |
135 | - | |
136 | - majSurface(); | |
137 | - attendreEvenement (); | |
138 | - | |
139 | - lireEvenement (&even, | |
140 | - &input, | |
141 | - NULL); | |
142 | - while (input == '\0') | |
143 | - { | |
144 | - lireEvenement (&even, | |
145 | - &input, | |
146 | - NULL); | |
147 | - } | |
148 | - return input; | |
149 | -} | |
150 | - | |
151 | -//Page en cas de mort dans le jeu | |
152 | -void pagemort (int nbr_vie) | |
153 | -{ | |
154 | - static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; | |
155 | - int Largeur = 0; | |
156 | - int Hauteur = 0; | |
157 | - char mort[] = "Vous etes mort"; | |
158 | - char vie[TailleChaineMax] = "\0"; | |
159 | - sprintf (vie, | |
160 | - "Nombre de vies restantes : %d", | |
161 | - nbr_vie); | |
162 | - //sprintf crée un warning mais celui-ci ne peut pas crée d'erreur | |
163 | - //Car la taille max de la chaine ne pourra pas excéder 30 si le nombre de vie reste "normal" | |
164 | - //sprintf_s ne fonctionne pas pour mon programme (invalid in C99) | |
165 | - | |
166 | - choisirPolice (policeDefaut, TaillePolice1); | |
167 | - int LutinMort = lutinTexte(mort, COULEUR_ROUGE); | |
168 | - | |
169 | - choisirPolice (policeDefaut, TaillePolice2); | |
170 | - int LutinVie = lutinTexte(vie, COULEUR_BLANC); | |
171 | - | |
172 | - rectanglePlein (0, | |
173 | - 0, | |
174 | - TailleX, | |
175 | - TailleY, | |
176 | - COULEUR_NOIR); | |
177 | - | |
178 | - tailleLutin (LutinMort, | |
179 | - &Largeur, | |
180 | - &Hauteur); | |
181 | - afficherLutin (LutinMort, | |
182 | - PositionX_1 - Largeur / 2, | |
183 | - PositionY_2 + Hauteur / 2); | |
184 | - | |
185 | - tailleLutin (LutinVie, | |
186 | - &Largeur, | |
187 | - &Hauteur); | |
188 | - afficherLutin (LutinVie, | |
189 | - PositionX_1 - Largeur / 2, | |
190 | - PositionY_1 - Hauteur / 2); | |
191 | -} | |
192 | - | |
193 | -//Page de GameOver du jeu | |
194 | -void pageGameOver() | |
195 | -{ | |
196 | - static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; | |
197 | - int Largeur = 0; | |
198 | - int Hauteur = 0; | |
199 | - char fin[] = "GAME OVER"; | |
200 | - | |
201 | - choisirPolice(policeDefaut, TaillePolice1); | |
202 | - int LutinFin = lutinTexte(fin, COULEUR_ROUGE); | |
203 | - | |
204 | - rectanglePlein (0, | |
205 | - 0, | |
206 | - TailleX, | |
207 | - TailleY, | |
208 | - COULEUR_NOIR); | |
209 | - | |
210 | - tailleLutin (LutinFin, | |
211 | - &Largeur, | |
212 | - &Hauteur); | |
213 | - afficherLutin (LutinFin, | |
214 | - PositionX_1 - Largeur / 2, | |
215 | - PositionY_1 - Hauteur / 2); | |
216 | - | |
217 | -} | |
218 | - | |
219 | -//Page de Victoire du jeu | |
220 | -void pageVictoire() | |
221 | -{ | |
222 | - static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; | |
223 | - int Largeur = 0; | |
224 | - int Hauteur = 0; | |
225 | - char fin[] = "VICTOIRE"; | |
226 | - | |
227 | - choisirPolice(policeDefaut, TaillePolice1); | |
228 | - int LutinFin = lutinTexte(fin, COULEUR_VERT); | |
229 | - | |
230 | - rectanglePlein (0, | |
231 | - 0, | |
232 | - TailleX, | |
233 | - TailleY, | |
234 | - COULEUR_NOIR); | |
235 | - | |
236 | - tailleLutin (LutinFin, | |
237 | - &Largeur, | |
238 | - &Hauteur); | |
239 | - afficherLutin (LutinFin, | |
240 | - PositionX_1 - Largeur / 2, | |
241 | - PositionY_1 - Hauteur / 2); | |
242 | - | |
243 | -} |
Space Invader/Envahisseurs/Graphique/src/Main/init.h deleted
... | ... | @@ -1,28 +0,0 @@ |
1 | -extern int canon; | |
2 | -extern int missile; | |
3 | -extern int enemie1_1; | |
4 | -extern int enemie1_2; | |
5 | -extern int bouillie; | |
6 | -extern int bombe; | |
7 | - | |
8 | -extern struct entite joueur; | |
9 | -extern char Nom[]; | |
10 | -extern char input; | |
11 | - | |
12 | -extern int hitboxcanonL; | |
13 | -extern int hitboxcanonH; | |
14 | -extern int hitboxmissileL; | |
15 | -extern int hitboxmissileH; | |
16 | -extern int hitboxenemieL; | |
17 | -extern int hitboxenemieH; | |
18 | -extern int hitboxbouillieL; | |
19 | -extern int hitboxbouillieH; | |
20 | -extern int hitboxbombeL; | |
21 | -extern int hitboxbombeH; | |
22 | - | |
23 | -void initialiser(); | |
24 | -void initialiserjoueur(); | |
25 | -char pagedemarrage(); | |
26 | -void pagemort(int nbr_vie); | |
27 | -void pageGameOver(); | |
28 | -void pageVictoire(); |
Space Invader/Envahisseurs/Graphique/src/Main/main.c deleted
... | ... | @@ -1,262 +0,0 @@ |
1 | -#include <unistd.h> | |
2 | -#include <SDL/SDL.h> | |
3 | -#include "../Graphique/libgraph.h" | |
4 | -#include "../ListeC/Liste.h" | |
5 | -#include "../Monstre/Monstre.h" | |
6 | -#include "../Interactif/Interactif.h" | |
7 | -#include "init.h" | |
8 | - | |
9 | -#define TailleX 500 | |
10 | -#define TailleY 500 | |
11 | -#define Sol 475 | |
12 | -#define EpaisseurSol 2 | |
13 | -#define ErreurHitbox 2 | |
14 | - | |
15 | -#define Nom "Space Invader" | |
16 | -#define NombreEnemieParLigne 8 | |
17 | -#define NombreLigneEnemies 3 | |
18 | -#define NombreVie 3 | |
19 | - | |
20 | -#define BombeRandomFixe 50 | |
21 | -#define BombeRandomAlea 30 | |
22 | - | |
23 | -//Pour augmenter les deplacements des enemies, vous pouvez: | |
24 | -//Augmenter VitesseDeplacementEnemie | |
25 | -//Tout les VitesseDeplacementEnemie tours de boucle les enemies se déplace | |
26 | -#define VitesseDeplacementEnemie 2 | |
27 | -// Ou augmenter le PasEnemie (Ecart entre la position n et n+1) | |
28 | -#define PasEnemie 1 | |
29 | -#define AffichageImageEnemie 8 | |
30 | - | |
31 | -#define Delai0_2s 200 | |
32 | -#define Delai0_5s 500 | |
33 | -#define Delai2s 2000 | |
34 | - | |
35 | -#define VitesseTourdeBoucle 20 | |
36 | - | |
37 | -int main() | |
38 | -{ | |
39 | - creerSurface(TailleX,TailleY,Nom); | |
40 | - | |
41 | - initialiser(); | |
42 | - initialiserjoueur(); | |
43 | - | |
44 | - struct liste_entite* ListeEnemies = NULL; | |
45 | - struct liste_entite* ListeTires = NULL; | |
46 | - struct liste_entite* ListeBombes = NULL; | |
47 | - | |
48 | - //joueur est dans une liste afin d'utiliser des fonctions deja crée | |
49 | - struct liste_entite* Ljoueur = NULL; | |
50 | - ajout_tete(&Ljoueur,joueur); | |
51 | - | |
52 | - | |
53 | - LigneEnemie(&ListeEnemies, | |
54 | - NombreEnemieParLigne, | |
55 | - NombreLigneEnemies); | |
56 | - int SensVague=1; | |
57 | - | |
58 | - char input = '\0'; | |
59 | - int TourdeBoucle = 0; | |
60 | - int TimeAlea = 0; | |
61 | - int CheckAlea = 0; | |
62 | - int mort = 0; | |
63 | - int nbr_vie = NombreVie; | |
64 | - int QuelMonstre = 0; | |
65 | - evenement even = 0; | |
66 | - | |
67 | - int coeur = chargerLutin ("../../Lutins/Coeur.bmp", | |
68 | - COULEUR_NOIR); | |
69 | - int hitboxcoeurL = 0; | |
70 | - int hitboxcoeurH = 0; | |
71 | - | |
72 | - tailleLutin (coeur, | |
73 | - &hitboxcoeurL, | |
74 | - &hitboxcoeurH); | |
75 | - | |
76 | - if ( pagedemarrage() != 'j') | |
77 | - { | |
78 | - return 0; | |
79 | - } | |
80 | - SDL_Delay(Delai0_5s); | |
81 | - | |
82 | - //Bouble principale | |
83 | - while(input!='m') | |
84 | - { | |
85 | - //Si le joueur est mort | |
86 | - if (mort == 1) | |
87 | - { | |
88 | - nbr_vie-=1; | |
89 | - //Si il lui reste des vies | |
90 | - if (nbr_vie > 0) | |
91 | - { | |
92 | - pagemort(nbr_vie); | |
93 | - majSurface(); | |
94 | - SDL_Delay(Delai2s); | |
95 | - mort = 0; | |
96 | - } | |
97 | - //Si il n'a plus de vie | |
98 | - else | |
99 | - { | |
100 | - pageGameOver(); | |
101 | - majSurface(); | |
102 | - SDL_Delay(Delai2s); | |
103 | - return 0; | |
104 | - } | |
105 | - //On ajoute de nouveau le joueur précedement supprimé à sa liste | |
106 | - ajout_tete(&Ljoueur,joueur); | |
107 | - //Desallocation dynamique des listes | |
108 | - DesallouerListe(&ListeTires); | |
109 | - DesallouerListe(&ListeBombes); | |
110 | - } | |
111 | - | |
112 | - //Affichage Rectangle Noir sur toute la page | |
113 | - rectanglePlein(0, | |
114 | - 0, | |
115 | - TailleX, | |
116 | - TailleY, | |
117 | - COULEUR_NOIR); | |
118 | - | |
119 | - //Affichage des coeurs de vie | |
120 | - for (int i = 1 ; i <= nbr_vie; i++) | |
121 | - { | |
122 | - afficherLutin(coeur, | |
123 | - TailleX - i * hitboxcoeurL, | |
124 | - Sol); | |
125 | - } | |
126 | - | |
127 | - //Affichage du Sol | |
128 | - rectanglePlein(0, | |
129 | - Sol, | |
130 | - TailleX, | |
131 | - EpaisseurSol, | |
132 | - COULEUR_VERT); | |
133 | - | |
134 | - //Affichage du joueur | |
135 | - afficherLutin(canon, | |
136 | - Ljoueur->entite.posx - hitboxcanonL/2 + ErreurHitbox, | |
137 | - Ljoueur->entite.posy); | |
138 | - | |
139 | - //Affichage des ListeEnemies | |
140 | - if (QuelMonstre > 2 * AffichageImageEnemie) | |
141 | - { | |
142 | - QuelMonstre = 0; | |
143 | - } | |
144 | - if (QuelMonstre <= AffichageImageEnemie) | |
145 | - { | |
146 | - AfficherEnemie (ListeEnemies, | |
147 | - enemie1_1, | |
148 | - hitboxenemieL, | |
149 | - hitboxenemieH); | |
150 | - QuelMonstre += 1; | |
151 | - } | |
152 | - else | |
153 | - { | |
154 | - AfficherEnemie (ListeEnemies, | |
155 | - enemie1_2, | |
156 | - hitboxenemieL, | |
157 | - hitboxenemieH); | |
158 | - QuelMonstre += 1; | |
159 | - } | |
160 | - | |
161 | - //Systeme pour faire drop une bombe dans un temps aléatoire | |
162 | - //Mise en place d'un timer | |
163 | - //TimeAlea représente le nombre de tour de boucle à éffectuer | |
164 | - if (TimeAlea == 0) | |
165 | - { | |
166 | - //50 tour de boucle minimum + une valeur de 0 à 31 | |
167 | - TimeAlea = rand() % BombeRandomAlea + BombeRandomFixe; | |
168 | - //Il y a un warning car rand() à une valeur limite que l'on ne dépasse pas | |
169 | - } | |
170 | - //CheckAlea est incrémenté de 1 à chaque tour de boucle | |
171 | - //Lorsque celui ci vaut TimeAlea on peut drop une bombe | |
172 | - //On reset à 0 le Timer et le Check aprés avoir Drop une bombe | |
173 | - if (CheckAlea == TimeAlea) | |
174 | - { | |
175 | - MakeBombeDrop(ListeEnemies, | |
176 | - &ListeBombes); | |
177 | - TimeAlea=0; | |
178 | - CheckAlea=0; | |
179 | - } | |
180 | - | |
181 | - //Gestion des evenements clavier | |
182 | - //On ne peut appuyer que sur une seule touche à la fois | |
183 | - lireEvenement (&even, | |
184 | - &input, | |
185 | - NULL); | |
186 | - if (even == toucheBas) | |
187 | - { | |
188 | - action(&Ljoueur->entite, | |
189 | - input, | |
190 | - &ListeTires); | |
191 | - } | |
192 | - | |
193 | - //Deplacement des enemies tout les X tours de boucle | |
194 | - if (TourdeBoucle == VitesseDeplacementEnemie) | |
195 | - { | |
196 | - DeplacementEnemie(ListeEnemies, | |
197 | - &SensVague, | |
198 | - PasEnemie); | |
199 | - TourdeBoucle = 0; | |
200 | - } | |
201 | - | |
202 | - //Deplacement des Tires et Bombes | |
203 | - DeplacementTire(&ListeTires); | |
204 | - DeplacementBombe(&ListeBombes); | |
205 | - | |
206 | - //Supression si collision des Tires et Enemies | |
207 | - SupprimerEntitesEnCollision(&ListeTires, | |
208 | - hitboxmissileL, | |
209 | - hitboxmissileH, | |
210 | - &ListeEnemies, | |
211 | - hitboxenemieL, | |
212 | - hitboxenemieH); | |
213 | - | |
214 | - //Supression si collision des Bombes et Joueur | |
215 | - if (SupprimerEntitesEnCollision(&ListeBombes, | |
216 | - hitboxbombeL, | |
217 | - hitboxbombeH, | |
218 | - &Ljoueur, | |
219 | - hitboxcanonL, | |
220 | - hitboxcanonH) == 1) | |
221 | - { | |
222 | - mort = 1; | |
223 | - majSurface(); | |
224 | - SDL_Delay(Delai0_2s); | |
225 | - } | |
226 | - | |
227 | - //Supression si collision des Enemies et Joueur | |
228 | - if (SupprimerEntitesEnCollision(&ListeEnemies, | |
229 | - hitboxenemieL, | |
230 | - hitboxenemieH, | |
231 | - &Ljoueur, | |
232 | - hitboxcanonL, | |
233 | - hitboxcanonH) == 1) | |
234 | - { | |
235 | - pageGameOver(); | |
236 | - majSurface(); | |
237 | - SDL_Delay(Delai2s); | |
238 | - return 0; | |
239 | - } | |
240 | - | |
241 | - //Si il n'y a plus d'enemies, c'est une victoire !!! | |
242 | - if (ListeEnemies == NULL) | |
243 | - { | |
244 | - majSurface(); | |
245 | - SDL_Delay(Delai0_2s); | |
246 | - pageVictoire(); | |
247 | - majSurface(); | |
248 | - SDL_Delay(Delai2s); | |
249 | - return 0; | |
250 | - } | |
251 | - | |
252 | - | |
253 | - majSurface(); | |
254 | - | |
255 | - TourdeBoucle += 1; | |
256 | - CheckAlea += 1; | |
257 | - | |
258 | - SDL_Delay(VitesseTourdeBoucle); | |
259 | - | |
260 | - } | |
261 | - return 0; | |
262 | -} |
Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.c deleted
... | ... | @@ -1,103 +0,0 @@ |
1 | -#include <stdlib.h> | |
2 | -#include "../Graphique/libgraph.h" | |
3 | -#include "../ListeC/Liste.h" | |
4 | -#include "Monstre.h" | |
5 | - | |
6 | -#define TailleX 500 | |
7 | -#define TailleY 500 | |
8 | -#define ErreurHitbox 2 | |
9 | - | |
10 | -#define Taille1_10 (TailleX / 10) | |
11 | -#define Taille9_10 (9 * TailleX / 10) | |
12 | -#define TailleJump 30 | |
13 | - | |
14 | -//Sens = 1 -> Va vers la droite | |
15 | -//Sens = 0 -> Va vers la gauche | |
16 | -void DeplacementEnemie(struct liste_entite* Liste, | |
17 | - int* SensDeplacement, | |
18 | - int Pas) | |
19 | -{ | |
20 | - | |
21 | - int ind = 0; | |
22 | - struct liste_entite* pListe = Liste; | |
23 | - | |
24 | - while (pListe != NULL) | |
25 | - { | |
26 | - pListe->entite.posx += (*SensDeplacement == 1) ? Pas : -Pas; | |
27 | - if (pListe->entite.posx >= Taille9_10) | |
28 | - { | |
29 | - ind = 1; | |
30 | - } | |
31 | - | |
32 | - else if (pListe->entite.posx <= Taille1_10) | |
33 | - { | |
34 | - ind = 2; | |
35 | - } | |
36 | - | |
37 | - pListe = pListe->suivant; | |
38 | - } | |
39 | - | |
40 | - if (ind != 0) | |
41 | - { | |
42 | - *SensDeplacement = (ind == 1) ? 0 : 1; | |
43 | - struct liste_entite* p2Liste = Liste; | |
44 | - | |
45 | - while (p2Liste != NULL) | |
46 | - { | |
47 | - p2Liste->entite.posy += TailleJump; | |
48 | - p2Liste = p2Liste->suivant; | |
49 | - } | |
50 | - } | |
51 | -} | |
52 | - | |
53 | -//Création de lignes d'entités enemies dans la liste enemies | |
54 | -void LigneEnemie (struct liste_entite** ListeEnemie, | |
55 | - int nbr_enemies, | |
56 | - int nbr_rangee) | |
57 | -{ | |
58 | - | |
59 | - for (int j = 1; j <= nbr_rangee; j++) | |
60 | - { | |
61 | - int compteurY = j * Taille1_10; | |
62 | - int compteurX = TailleX / (nbr_enemies+1); | |
63 | - | |
64 | - for (int i = 0; i < nbr_enemies; i++) | |
65 | - { | |
66 | - if (j == nbr_rangee) | |
67 | - { | |
68 | - ajout_tete(ListeEnemie, | |
69 | - creer_entite(compteurX, | |
70 | - compteurY, | |
71 | - 1)); | |
72 | - compteurX += 2 * TailleX / (3 * nbr_enemies); | |
73 | - } | |
74 | - | |
75 | - else | |
76 | - { | |
77 | - ajout_tete(ListeEnemie, | |
78 | - creer_entite(compteurX, | |
79 | - compteurY, | |
80 | - 0)); | |
81 | - compteurX += 2 * TailleX / (3 * nbr_enemies); | |
82 | - } | |
83 | - } | |
84 | - } | |
85 | -} | |
86 | - | |
87 | -//Affichage des enemies centrés dans leur hitbox | |
88 | -void AfficherEnemie (struct liste_entite* Liste, | |
89 | - int lutin, | |
90 | - int Largeur, | |
91 | - int Hauteur) | |
92 | -{ | |
93 | - | |
94 | - struct liste_entite* pListe = Liste; | |
95 | - | |
96 | - while (pListe != NULL) | |
97 | - { | |
98 | - afficherLutin(lutin, | |
99 | - pListe->entite.posx - Largeur / 2 + ErreurHitbox, | |
100 | - pListe->entite.posy - Hauteur / 2 + ErreurHitbox); | |
101 | - pListe=pListe->suivant; | |
102 | - } | |
103 | -} |
Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.h deleted
... | ... | @@ -1,12 +0,0 @@ |
1 | -void DeplacementEnemie(struct liste_entite* Liste, | |
2 | - int* SensDeplacement, | |
3 | - int Pas); | |
4 | - | |
5 | -void LigneEnemie (struct liste_entite** ListeEnemie, | |
6 | - int nbr_enemies, | |
7 | - int nbr_rangee); | |
8 | - | |
9 | -void AfficherEnemie (struct liste_entite* Liste, | |
10 | - int lutin, | |
11 | - int Largeur, | |
12 | - int Hauteur); |
Space Invaders/Envahisseurs/Graphique/Lutins/Coeur.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_bombe.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_bouclier.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_canon.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_canon_ferraille.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_missile.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_monstre1_1.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_monstre1_2.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_monstre2_1.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_monstre2_2.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_monstre3_1.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_monstre3_2.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_monstre_bouillie.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/invader_ovni.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/millepatte_champi.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/millepatte_corps_bas.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/millepatte_corps_droite.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/millepatte_corps_gauche.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/millepatte_corps_haut.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/millepatte_tete_bas.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/millepatte_tete_droite.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/millepatte_tete_gauche.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/Lutins/millepatte_tete_haut.bmp deleted
No preview for this file type
Space Invaders/Envahisseurs/Graphique/src/Graphique/Makefile deleted
... | ... | @@ -1,29 +0,0 @@ |
1 | -# | |
2 | -# Makefile pour la bibliotheque graphique | |
3 | -# | |
4 | - | |
5 | -SOURCES = $(wildcard *.c) | |
6 | -OBJETS = $(SOURCES:.c=.o) | |
7 | -CIBLE = libgraph.a | |
8 | - | |
9 | -# | |
10 | -# Nom de la cible principale | |
11 | -# | |
12 | - | |
13 | -all: $(CIBLE) | |
14 | - | |
15 | -# | |
16 | -# Cible de nettoyage | |
17 | -# | |
18 | - | |
19 | -clean: | |
20 | - rm -f core *.o $(CIBLE) | |
21 | - | |
22 | -# | |
23 | -# Dependances pour la bibliotheque | |
24 | -# | |
25 | - | |
26 | -$(CIBLE): $(OBJETS) | |
27 | - $(AR) rs $@ $? | |
28 | - | |
29 | -$(CIBLE:.a=).o: $(CIBLE:.a=).c $(CIBLE:.a=).h |
Space Invaders/Envahisseurs/Graphique/src/Graphique/libgraph.c deleted
... | ... | @@ -1,239 +0,0 @@ |
1 | -/**** Bibliotheque graphique ****/ | |
2 | - | |
3 | -/** Fichiers d'inclusion **/ | |
4 | - | |
5 | -#include <SDL/SDL.h> | |
6 | -#include <SDL/SDL_ttf.h> | |
7 | -#include "libgraph.h" | |
8 | - | |
9 | -/** Types **/ | |
10 | - | |
11 | -typedef struct | |
12 | -{ | |
13 | - int r, v, b; | |
14 | -} couleur; | |
15 | - | |
16 | -/** Constantes **/ | |
17 | - | |
18 | -#define BITS_PAR_PIXEL 32 | |
19 | -#define TAILLE_POLICE 20 | |
20 | - | |
21 | -static const couleur couleurs[] = { { 255, 255, 255 }, { 0, 0, 0 }, { 255, 0, 0 }, | |
22 | - { 0, 255, 0 }, { 0, 0, 255 }, { 255, 105, 180 }, | |
23 | - { 150, 150, 150 }, { -1, -1, -1 } }; | |
24 | - | |
25 | -static const char policeDefaut[]="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; | |
26 | - | |
27 | -/** Variables globales **/ | |
28 | - | |
29 | -static SDL_Surface *surface; | |
30 | -TTF_Font* police; | |
31 | - | |
32 | -/** Fonctions **/ | |
33 | - | |
34 | -void choisirPolice(const char *chemin, int taille){ | |
35 | - police=TTF_OpenFont(chemin, taille); | |
36 | -} | |
37 | - | |
38 | -void initialiserTexte() { | |
39 | - TTF_Init(); | |
40 | - choisirPolice(policeDefaut, TAILLE_POLICE); | |
41 | -} | |
42 | - | |
43 | -/* Initialisation de la surface dessinable */ | |
44 | -unsigned char creerSurface (int largeur, int hauteur, char *titre) | |
45 | -{ | |
46 | - SDL_Init (SDL_INIT_VIDEO); | |
47 | - SDL_WM_SetCaption (titre, titre); | |
48 | - surface = SDL_SetVideoMode (largeur, hauteur, BITS_PAR_PIXEL, SDL_DOUBLEBUF); | |
49 | - initialiserTexte(); | |
50 | - | |
51 | - return (surface != NULL && police != NULL); | |
52 | -} | |
53 | - | |
54 | -/* Fermeture de la surface dessinable */ | |
55 | - | |
56 | -void fermerSurface (void) | |
57 | -{ | |
58 | - if (surface != NULL) SDL_FreeSurface (surface); | |
59 | - if (police != NULL) TTF_CloseFont(police); | |
60 | - TTF_Quit(); | |
61 | - SDL_Quit (); | |
62 | -} | |
63 | - | |
64 | -/* Creation d'une couleur */ | |
65 | - | |
66 | -static int creerCouleur (int ncouleur) | |
67 | -{ | |
68 | - couleur c = couleurs[ncouleur]; | |
69 | - return SDL_MapRGB (surface->format, c.r, c.v, c.b); | |
70 | -} | |
71 | - | |
72 | -/* Dessin d'un rectangle plein */ | |
73 | - | |
74 | -void rectanglePlein (int x, int y, int l, int h, int c) | |
75 | -{ | |
76 | - SDL_Rect rectangle = { x, y, l, h }; | |
77 | - SDL_FillRect (surface, &rectangle, creerCouleur (c)); | |
78 | - // SDL_Flip(surface); | |
79 | -} | |
80 | - | |
81 | -/* Manipulation de lutins */ | |
82 | - | |
83 | -static SDL_Surface *lutins[MAX_LUTINS]; | |
84 | -static int lutins_nb = 0; | |
85 | - | |
86 | -int lutinTexte(char* texte, int couleurTexte) { | |
87 | - couleur c=couleurs[couleurTexte]; | |
88 | - SDL_Color couleur={c.r, c.v, c.b}; | |
89 | - SDL_Surface* lutin=TTF_RenderText_Solid(police, texte, couleur); | |
90 | - if (lutin != NULL) | |
91 | - { | |
92 | - lutins[lutins_nb++] = lutin; | |
93 | - return lutins_nb - 1; | |
94 | - } | |
95 | - return -1; | |
96 | -} | |
97 | - | |
98 | -static void configurerLutin (SDL_Surface *lutin, int ncouleur) | |
99 | -{ | |
100 | - couleur c = couleurs[ncouleur]; | |
101 | - int fond = SDL_MapRGB (lutin->format, c.r, c.v, c.b); | |
102 | - SDL_SetColorKey (lutin, SDL_SRCCOLORKEY | SDL_RLEACCEL, fond); | |
103 | -} | |
104 | - | |
105 | -int chargerLutin (char *fichier, int couleur) | |
106 | -{ | |
107 | - if (lutins_nb >= MAX_LUTINS) return -2; | |
108 | - SDL_Surface *lutin = SDL_LoadBMP (fichier); | |
109 | - if (lutin != NULL) | |
110 | - { | |
111 | - lutins[lutins_nb++] = lutin; | |
112 | - if (couleur >= 0) configurerLutin (lutin, couleur); | |
113 | - return lutins_nb - 1; | |
114 | - } | |
115 | - return -1; | |
116 | -} | |
117 | - | |
118 | -void afficherLutin (int lutin, int x, int y) | |
119 | -{ | |
120 | - SDL_Rect position; | |
121 | - position.x = x; | |
122 | - position.y = y; | |
123 | - SDL_BlitSurface (lutins[lutin], NULL, surface, &position); | |
124 | -} | |
125 | - | |
126 | -int creerLutin (int x, int y, int largeur, int hauteur, int couleur) | |
127 | -{ | |
128 | - if (lutins_nb >= MAX_LUTINS) return -2; | |
129 | - int rmask, gmask, bmask, amask; | |
130 | -#if SDL_BYTEORDER == SDL_BIG_ENDIAN | |
131 | - rmask = 0xff000000; | |
132 | - gmask = 0x00ff0000; | |
133 | - bmask = 0x0000ff00; | |
134 | - amask = 0x000000ff; | |
135 | -#else | |
136 | - rmask = 0x000000ff; | |
137 | - gmask = 0x0000ff00; | |
138 | - bmask = 0x00ff0000; | |
139 | - amask = 0xff000000; | |
140 | -#endif | |
141 | - if (couleur < 0) amask = 0x00000000; | |
142 | - SDL_Surface *lutin = | |
143 | - SDL_CreateRGBSurface (0, largeur, hauteur, BITS_PAR_PIXEL, rmask, gmask, bmask, amask); | |
144 | - SDL_Rect fenetre; | |
145 | - fenetre.x = x; | |
146 | - fenetre.y = y; | |
147 | - fenetre.h = hauteur; | |
148 | - fenetre.w = largeur; | |
149 | - SDL_BlitSurface (surface, &fenetre, lutin, NULL); | |
150 | - lutins[lutins_nb++] = lutin; | |
151 | - if (couleur >= 0) configurerLutin (lutin, couleur); | |
152 | - return lutins_nb - 1; | |
153 | -} | |
154 | - | |
155 | -void tailleLutin (int lutin, int *largeur, int *hauteur) | |
156 | -{ | |
157 | - *largeur = lutins[lutin]->w; | |
158 | - *hauteur = lutins[lutin]->h; | |
159 | -} | |
160 | - | |
161 | -int sauverLutin (int lutin, char *nom) { return SDL_SaveBMP (lutins[lutin], nom); } | |
162 | - | |
163 | -/* Manipulation de copie de surface en BMP */ | |
164 | - | |
165 | -int sauverSurface (char *fichier) { return SDL_SaveBMP (surface, fichier); } | |
166 | - | |
167 | -unsigned char chargerSurface (char *fichier) | |
168 | -{ | |
169 | - SDL_Surface *image = SDL_LoadBMP (fichier); | |
170 | - if (image != NULL) | |
171 | - { | |
172 | - SDL_BlitSurface (image, NULL, surface, NULL); | |
173 | - SDL_Flip (surface); | |
174 | - } | |
175 | - return (image != NULL); | |
176 | -} | |
177 | - | |
178 | -void majSurface (void) { SDL_Flip (surface); } | |
179 | - | |
180 | -/* Trouver la couleur d'un pixel */ | |
181 | - | |
182 | -int couleurPixel (int x, int y) | |
183 | -{ | |
184 | - int bpp = surface->format->BytesPerPixel; | |
185 | - Uint32 *p = (Uint32 *)(surface->pixels + y * surface->pitch + x * bpp); | |
186 | - Uint8 r, v, b; | |
187 | - SDL_GetRGB (*p, surface->format, &r, &v, &b); | |
188 | - int i = 0; | |
189 | - while (1) | |
190 | - { | |
191 | - if (couleurs[i].r < 0) break; | |
192 | - if (r == couleurs[i].r && v == couleurs[i].v && b == couleurs[i].b) break; | |
193 | - i++; | |
194 | - } | |
195 | - if (couleurs[i].r < 0) | |
196 | - return -1; | |
197 | - else | |
198 | - return i; | |
199 | -} | |
200 | - | |
201 | -/* Fonction de traitement des événements */ | |
202 | - | |
203 | -void lireEvenement (evenement *evt, char *touche, void **detail) | |
204 | -{ | |
205 | - static SDL_keysym _detail; | |
206 | - SDL_Event event; | |
207 | - while (SDL_PollEvent (&event)) | |
208 | - { | |
209 | - if (event.type == SDL_QUIT) *evt = quitter; | |
210 | - if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) | |
211 | - { | |
212 | - *evt = (event.type == SDL_KEYDOWN) ? toucheBas : toucheHaut; | |
213 | - char *nom = SDL_GetKeyName (event.key.keysym.sym); | |
214 | - if (strlen (nom) == 1 && nom[0] >= 32 && nom[0] < 128) | |
215 | - *touche = nom[0]; | |
216 | - else | |
217 | - *touche = 0; | |
218 | - if (detail != NULL) | |
219 | - { | |
220 | - _detail = event.key.keysym; | |
221 | - *detail = &_detail; | |
222 | - } | |
223 | - break; | |
224 | - } | |
225 | - } | |
226 | -} | |
227 | - | |
228 | -void attendreEvenement (void) | |
229 | -{ | |
230 | - SDL_Event event; | |
231 | - while (SDL_WaitEvent (&event)) switch (event.type) | |
232 | - { | |
233 | - case SDL_QUIT: | |
234 | - exit (0); | |
235 | - case SDL_KEYDOWN: | |
236 | - case SDL_MOUSEBUTTONDOWN: | |
237 | - return; | |
238 | - } | |
239 | -} |
Space Invaders/Envahisseurs/Graphique/src/Graphique/libgraph.h deleted
... | ... | @@ -1,156 +0,0 @@ |
1 | -/**** Bibliotheque graphique (definitions) ****/ | |
2 | - | |
3 | -/** Constantes **/ | |
4 | - | |
5 | -#define COULEUR_BLANC 0 | |
6 | -#define COULEUR_NOIR 1 | |
7 | -#define COULEUR_ROUGE 2 | |
8 | -#define COULEUR_VERT 3 | |
9 | -#define COULEUR_BLEU 4 | |
10 | -#define COULEUR_ROSE 5 | |
11 | -#define COULEUR_GRIS 6 | |
12 | - | |
13 | -#define MAX_LUTINS 16 | |
14 | - | |
15 | -typedef enum {toucheBas, toucheHaut, quitter} evenement; | |
16 | - | |
17 | -/** Prototypes **/ | |
18 | - | |
19 | -/** | |
20 | - * @brief cree une fenetre 2D | |
21 | - * | |
22 | - * @param largeur en pixels de la fenetre | |
23 | - * @param hauteur en pixels de la fenetre | |
24 | - * @param titre de la fenetre (chaine de caractere) | |
25 | - */ | |
26 | -unsigned char creerSurface (int largeur, int hauteur, char *titre); | |
27 | - | |
28 | -/** | |
29 | - * @brief permet de charger un fichier image au format bmp (bitmap) | |
30 | - * | |
31 | - * @param fichier nom du fichier | |
32 | - */ | |
33 | -unsigned char chargerSurface (char *fichier); | |
34 | - | |
35 | - | |
36 | -/** | |
37 | - * @brief permet de sauvegarder une surface en image (format bmp) | |
38 | - * | |
39 | - * @param fichier nom du fichier | |
40 | - * @return 0 si OK, valeur negative sinon | |
41 | - */ | |
42 | -int sauverSurface (char *fichier); | |
43 | - | |
44 | -/** | |
45 | - * @brief met a jour la surface d'affichage | |
46 | - */ | |
47 | -void majSurface (void); | |
48 | - | |
49 | - | |
50 | -/** | |
51 | - * @brief libere la surface d'affichage | |
52 | - * a faire lors de la fermeture | |
53 | - * du programme | |
54 | - */ | |
55 | -void fermerSurface (void); | |
56 | - | |
57 | -/** | |
58 | - * @brief choisit la police de caractères à utiliser pour afficher du texte | |
59 | - * @param chemin nom du fichier de police (format .ttf, voir /usr/share/fonts/truetype) | |
60 | - * @param taille taille de la police | |
61 | - */ | |
62 | -void choisirPolice(const char *chemin, int taille); | |
63 | - | |
64 | -/** | |
65 | - * @brief dessine un rectange de taille (l,h) aux coordonnêes | |
66 | - * (x,y) et de couleur c | |
67 | - * | |
68 | - * @param x 0 <= x <= l_surface | |
69 | - * @param y 0 <= y <= h_surface | |
70 | - * @param l largeur en pixels | |
71 | - * @param h longueur en pixels | |
72 | - * @param c indice de couleur voir variable couleurs dans le fichier .c | |
73 | - */ | |
74 | -void rectanglePlein (int x, int y, int l, int h, int c); | |
75 | - | |
76 | - | |
77 | -/** | |
78 | - * @brief permet de determiner l'indice du tableau de couleur du | |
79 | - * pixel aux coordonnees (x,y) | |
80 | - * | |
81 | - * @param x 0 <= x <= l_surface | |
82 | - * @param y 0 <= y <= h_surface | |
83 | - * @return indice de couleur voire variable couleurs dans le fichier .c | |
84 | - */ | |
85 | -int couleurPixel (int x, int y); | |
86 | - | |
87 | -/** | |
88 | - * @brief crée un lutin à partir d'un texte | |
89 | - * | |
90 | - * @param texte le texte | |
91 | - * @param couleur indice de couleur du texte | |
92 | - * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS) | |
93 | - */ | |
94 | -int lutinTexte(char *texte, int couleur); | |
95 | - | |
96 | -/** | |
97 | - * @brief charge un lutin à partir du fichier | |
98 | - * | |
99 | - * @param fichier image bitmap du lutin à charger | |
100 | - * @param couleur indice de couleurs à charger | |
101 | - * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS) | |
102 | - */ | |
103 | -int chargerLutin (char *fichier, int couleur); | |
104 | - | |
105 | -/** | |
106 | - * @brief afficher un lutin aux coordonnées (x,y) | |
107 | - * | |
108 | - * @param lutin numero du lutin à afficher (< MAX_LUTINS) | |
109 | - * @param x abscisse de départ | |
110 | - * @param y ordonnée de départ | |
111 | - */ | |
112 | -void afficherLutin (int lutin, int x, int y); | |
113 | - | |
114 | -/** | |
115 | - * @brief creer un lutin de taille (l,h) aux coordonnées (x,y) | |
116 | - * | |
117 | - * @param x abscisse de départ | |
118 | - * @param y ordonnée de départ | |
119 | - * @param largeur largeur du lutin | |
120 | - * @param hauteur hauteur du lutin | |
121 | - * @param couleur indice de couleur à partir du tableau _couleurs_ | |
122 | - * @return indice du lutin dans le tableau global (< MAX_LUTINS) | |
123 | - */ | |
124 | -int creerLutin (int x, int y, int largeur, int hauteur, int couleur); | |
125 | - | |
126 | -/** | |
127 | - * @brief sauvegarde un lutin dans un fichier | |
128 | - * | |
129 | - * @param lutin numero de lutin à sauvegarder (< MAX_LUTINS) | |
130 | - * @param nom fichier pour la sauvegarde | |
131 | - * @return 0 si OK valeur négative sinon | |
132 | - */ | |
133 | -int sauverLutin (int lutin, char *nom); | |
134 | - | |
135 | -/** | |
136 | - * @brief calcule la taille (largeur,hauteur) d'un lutin | |
137 | - * | |
138 | - * @param lutin index du lutin (< MAX_LUTINS) | |
139 | - * @param largeur pointeur sur la largeur | |
140 | - * @param hauteur pointeur sur la hauteur | |
141 | - */ | |
142 | -void tailleLutin (int lutin, int *largeur, int *hauteur); | |
143 | - | |
144 | -/** | |
145 | - * @brief lire une touche au clavier | |
146 | - * | |
147 | - * @param evt pointeur sur evenement | |
148 | - * @param touche pointeur sur la touche pressée | |
149 | - * @param detail NULL ou keysim | |
150 | - */ | |
151 | -void lireEvenement (evenement *evt, char *touche, void **detail); | |
152 | - | |
153 | -/** | |
154 | - * @brief attente d'un evenement bouton, souris, fin de programme | |
155 | - */ | |
156 | -void attendreEvenement (void); |
Space Invaders/Envahisseurs/Graphique/src/Interactif/Interactif.c deleted
... | ... | @@ -1,375 +0,0 @@ |
1 | -#include <stdlib.h> | |
2 | -#include <string.h> | |
3 | - | |
4 | -#include "../Graphique/libgraph.h" | |
5 | -#include "../ListeC/Liste.h" | |
6 | -#include "Interactif.h" | |
7 | -#include "../Main/init.h" | |
8 | - | |
9 | -#define TailleX 500 | |
10 | -#define TailleY 500 | |
11 | -#define Sol 475 | |
12 | -#define ErreurHitbox 2 | |
13 | -#define TailleX9_10 (9 * TailleX / 10) | |
14 | -#define TailleX1_10 (TailleX / 10) | |
15 | - | |
16 | -#define ValeurDeplacementTire 5 | |
17 | -#define ValeurDeplacementJoueur 3 | |
18 | -#define ValeurDeplacementBombe 2 | |
19 | - | |
20 | - | |
21 | -//La fonction renvoie 1 si il y a collision | |
22 | -int CheckCollisionEntiteEntite (struct entite entite1, | |
23 | - int L1, | |
24 | - int H1, | |
25 | - struct entite entite2, | |
26 | - int L2, | |
27 | - int H2) | |
28 | -{ | |
29 | - //CheckX | |
30 | - int gauche1 = entite1.posx - L1/2 + ErreurHitbox; | |
31 | - int droite1 = entite1.posx + L1/2 - ErreurHitbox; | |
32 | - int gauche2 = entite2.posx - L2/2 + ErreurHitbox; | |
33 | - int droite2 = entite2.posx + L2/2 - ErreurHitbox; | |
34 | - //Tout les cas possibles de collision | |
35 | - int CheckX = (gauche1 >= gauche2 && gauche1 <= droite2) || | |
36 | - (droite1 >= gauche2 && droite1 <= droite2) || | |
37 | - (gauche1 >= gauche2 && droite1 <= droite2) || | |
38 | - (gauche2 >= gauche1 && droite2 <= droite1); | |
39 | - | |
40 | - //CheckY | |
41 | - int haut1 = entite1.posy - H1/2 + ErreurHitbox; | |
42 | - int bas1 = entite1.posy + H1/2 - ErreurHitbox; | |
43 | - int haut2 = entite2.posy - H2/2 + ErreurHitbox; | |
44 | - int bas2 = entite2.posy + H2/2 - ErreurHitbox; | |
45 | - int CheckY = (haut1 <= bas2 && haut1 >= haut2) || | |
46 | - (bas1 <= bas2 && bas1 >= haut2) || | |
47 | - (haut1 <= haut2 && bas1 >= bas2) || | |
48 | - (haut2 <= haut1 && bas2 >= bas1); | |
49 | - | |
50 | - | |
51 | - return CheckX && CheckY; | |
52 | -} | |
53 | - | |
54 | -//La fonction renvoie l'entite de la Liste1 si il y a collision | |
55 | -struct entite* CheckCollisionListeEntite (struct liste_entite* Liste1, | |
56 | - int L1, | |
57 | - int H1, | |
58 | - struct entite entite2, | |
59 | - int L2, | |
60 | - int H2) | |
61 | -{ | |
62 | - | |
63 | - struct liste_entite *pListe1 = Liste1; | |
64 | - while (pListe1 != NULL) | |
65 | - { | |
66 | - | |
67 | - if(CheckCollisionEntiteEntite (pListe1->entite, | |
68 | - L1, | |
69 | - H1, | |
70 | - entite2, | |
71 | - L2, | |
72 | - H2) == 1) | |
73 | - { | |
74 | - return &pListe1->entite; | |
75 | - } | |
76 | - | |
77 | - pListe1 = pListe1->suivant; | |
78 | - } | |
79 | - return NULL; | |
80 | -} | |
81 | - | |
82 | - | |
83 | - | |
84 | -//La fonction renvoie une liste d'entite avec les deux entites à supprimer | |
85 | -//Seulement si il y a collision | |
86 | -struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, | |
87 | - int L1, | |
88 | - int H1, | |
89 | - struct liste_entite* Liste2, | |
90 | - int L2, | |
91 | - int H2) | |
92 | -{ | |
93 | - | |
94 | - struct liste_entite *pListe2 = Liste2; | |
95 | - while (pListe2 != NULL) | |
96 | - { | |
97 | - | |
98 | - struct entite* collision = CheckCollisionListeEntite (Liste1, | |
99 | - L1, | |
100 | - H1, | |
101 | - pListe2->entite, | |
102 | - L2, | |
103 | - H2); | |
104 | - if (collision == NULL) | |
105 | - { | |
106 | - pListe2 = pListe2->suivant; | |
107 | - } | |
108 | - | |
109 | - else | |
110 | - { | |
111 | - // Création des structures pour les deux entités | |
112 | - struct liste_entite* Entite1 = malloc(sizeof(struct liste_entite)); | |
113 | - struct liste_entite* Entite2 = malloc(sizeof(struct liste_entite)); | |
114 | - | |
115 | - // Remplissage des structure avec les entités correspondantes | |
116 | - Entite1->entite = *collision; | |
117 | - Entite2->entite = pListe2->entite; | |
118 | - | |
119 | - // Relier les structures entre elles | |
120 | - Entite1->suivant = Entite2; | |
121 | - Entite2->suivant = NULL; | |
122 | - | |
123 | - return Entite1; | |
124 | - } | |
125 | - } | |
126 | - | |
127 | - return NULL; | |
128 | -} | |
129 | - | |
130 | -//Tire un missile, il ne peux y en avoir que un à la fois | |
131 | -void Tirer (struct entite joueur, | |
132 | - struct liste_entite** pl) | |
133 | -{ | |
134 | - if (*pl == NULL) | |
135 | - { | |
136 | - ajout_tete(pl, | |
137 | - creer_entite(joueur.posx, | |
138 | - joueur.posy, | |
139 | - -1)); | |
140 | - } | |
141 | -} | |
142 | - | |
143 | - | |
144 | -void DeplacementTire(struct liste_entite** Liste) | |
145 | -{ | |
146 | - struct entite* Entite = &(*Liste)->entite; | |
147 | - if (Entite != NULL) | |
148 | - { | |
149 | - | |
150 | - if (Entite->posy <= 0) | |
151 | - { | |
152 | - afficherLutin(bouillie, | |
153 | - Entite->posx - hitboxbouillieL/2 + ErreurHitbox, | |
154 | - Entite->posy); | |
155 | - SupprimerEntite(Liste, Entite); | |
156 | - } | |
157 | - | |
158 | - else | |
159 | - { | |
160 | - Entite->posy -= ValeurDeplacementTire; | |
161 | - //Je divise ErreurHitbox par 2 car l'erreur du missile | |
162 | - //est plus petite que pour les autres images | |
163 | - afficherLutin(missile, | |
164 | - Entite->posx - hitboxmissileL/2 + ErreurHitbox/2, | |
165 | - Entite->posy - hitboxmissileH/2 + ErreurHitbox/2); | |
166 | - } | |
167 | - } | |
168 | -} | |
169 | - | |
170 | - | |
171 | -//La fonction fait une action soit au joueur | |
172 | -//soit à la Liste des Tires selon la touche préssée | |
173 | -void action(struct entite* joueur, | |
174 | - char c, | |
175 | - struct liste_entite** tires) | |
176 | -{ | |
177 | - switch (c) | |
178 | - { | |
179 | - case 'd': | |
180 | - if (joueur->posx <= TailleX9_10) | |
181 | - { | |
182 | - joueur->posx += ValeurDeplacementJoueur; | |
183 | - } | |
184 | - break; | |
185 | - case 'q': | |
186 | - if (joueur->posx >= TailleX1_10) | |
187 | - { | |
188 | - joueur->posx -= ValeurDeplacementJoueur; | |
189 | - } | |
190 | - break; | |
191 | - case 't': | |
192 | - Tirer(*joueur, | |
193 | - tires); | |
194 | - break; | |
195 | - default: | |
196 | - break; | |
197 | - } | |
198 | -} | |
199 | - | |
200 | -/* | |
201 | -La fonction crée une liste de tout les enemies pouvant drop des bombes | |
202 | -Seulement ceux les plus bas de leur colonne repective | |
203 | -Puis ajoute à la liste bombe, | |
204 | -une bombe provenant d'un des enemies pouvant drop des bombes | |
205 | -Le choix de quel enemie drop la bombe est aléatoire | |
206 | -*/ | |
207 | -void MakeBombeDrop (struct liste_entite* enemies, | |
208 | - struct liste_entite** bombes) | |
209 | -{ | |
210 | - | |
211 | - struct liste_entite* pListe = enemies; | |
212 | - struct liste_entite* Dropable = NULL; | |
213 | - int taille = 0; | |
214 | - | |
215 | - while (pListe != NULL) | |
216 | - { | |
217 | - | |
218 | - if (pListe->entite.dropbombe == 1) | |
219 | - { | |
220 | - ajout_tete(&Dropable,pListe->entite); | |
221 | - taille += 1; | |
222 | - } | |
223 | - | |
224 | - pListe = pListe->suivant; | |
225 | - } | |
226 | - | |
227 | - if(Dropable == NULL) | |
228 | - { | |
229 | - return; | |
230 | - } | |
231 | - /* | |
232 | - On choisit une valeur aléatoire représentant l'enemie qui va drop la bombe | |
233 | - Il ya un warning comme quoi rand() à une limite | |
234 | - Mais on ne la dépassera jamais, taille ne pourra | |
235 | - jamais excédé une vingtaine d'enemies par ligne | |
236 | - */ | |
237 | - int randomIndex = rand() % taille-1; | |
238 | - struct liste_entite* pDropable = Dropable; | |
239 | - | |
240 | - for (int i = 0; i <= randomIndex; i++) | |
241 | - { | |
242 | - pDropable = pDropable->suivant; | |
243 | - } | |
244 | - | |
245 | - ajout_tete(bombes, | |
246 | - creer_entite(pDropable->entite.posx, | |
247 | - pDropable->entite.posy, | |
248 | - -1)); | |
249 | -} | |
250 | - | |
251 | - | |
252 | -void DeplacementBombe(struct liste_entite** Liste) | |
253 | -{ | |
254 | - struct liste_entite* pListe = *Liste; | |
255 | - | |
256 | - while (pListe != NULL) | |
257 | - { | |
258 | - | |
259 | - if (pListe->entite.posy + hitboxbombeH/2 - ErreurHitbox >= Sol) | |
260 | - { | |
261 | - struct entite* a_supprimer = &pListe->entite; | |
262 | - | |
263 | - pListe = pListe->suivant; | |
264 | - SupprimerEntite(Liste,a_supprimer); | |
265 | - } | |
266 | - | |
267 | - else | |
268 | - { | |
269 | - pListe->entite.posy += ValeurDeplacementBombe; | |
270 | - afficherLutin(bombe, | |
271 | - pListe->entite.posx - hitboxbombeL/2 + ErreurHitbox, | |
272 | - pListe->entite.posy - hitboxbombeH/2 + ErreurHitbox); | |
273 | - pListe = pListe->suivant; | |
274 | - } | |
275 | - } | |
276 | -} | |
277 | - | |
278 | -/* | |
279 | -Si un enemie est éliminé et qu'il etait le plus bas de sa colonne | |
280 | -(il pouvait drop des bombes) | |
281 | -Alors si il y en a un, l'enemie au dessus de lui (de la meme colonne) | |
282 | -peut maintenant drop des bombes | |
283 | -*/ | |
284 | -void NouveauDroppeurBombe (struct liste_entite** liste, | |
285 | - struct entite* entite) | |
286 | -{ | |
287 | - | |
288 | - int posx = entite->posx; | |
289 | - int posy = entite->posy; | |
290 | - struct liste_entite* pListe = *liste; | |
291 | - struct entite* entite_basse = NULL; | |
292 | - | |
293 | - // On parcourt la liste et on cherche | |
294 | - //l'entité la plus basse ayant la même position x | |
295 | - while (pListe != NULL) | |
296 | - { | |
297 | - //On ne regarde pas les enemies qui sont sur la meme ligne | |
298 | - if (pListe->entite.posy != posy) | |
299 | - { | |
300 | - //Si meme colonne et qu'il n'y a pas d'entite_basse | |
301 | - if (pListe->entite.posx == posx && | |
302 | - entite_basse == NULL) | |
303 | - { | |
304 | - entite_basse = &pListe->entite; | |
305 | - } | |
306 | - | |
307 | - //Si meme colonne mais qu'il y a deja une entite_basse | |
308 | - //On compare la hauteur de l'entite avec l'entite_basse | |
309 | - else if (pListe->entite.posx == posx && | |
310 | - pListe->entite.posy > entite_basse->posy) | |
311 | - { | |
312 | - entite_basse = &pListe->entite; | |
313 | - } | |
314 | - } | |
315 | - | |
316 | - pListe = pListe->suivant; | |
317 | - } | |
318 | - | |
319 | - // Si aucune entité n'est située plus bas que l'entité en question, | |
320 | - //On ne peut pas dropper la bombe | |
321 | - if (entite_basse == NULL) | |
322 | - { | |
323 | - return; | |
324 | - } | |
325 | - | |
326 | - entite_basse->dropbombe = 1; | |
327 | -} | |
328 | - | |
329 | - | |
330 | - | |
331 | -//Fonction Main qui supprime les entités rentrées en collision de leur liste | |
332 | -int SupprimerEntitesEnCollision (struct liste_entite** Liste1, | |
333 | - int L1, | |
334 | - int H1, | |
335 | - struct liste_entite** Liste2, | |
336 | - int L2, | |
337 | - int H2) | |
338 | -{ | |
339 | - | |
340 | - struct liste_entite* collision = CheckCollisionListeListe(*Liste1, | |
341 | - L1, | |
342 | - H1, | |
343 | - *Liste2, | |
344 | - L2, | |
345 | - H2); | |
346 | - if (collision != NULL) | |
347 | - { | |
348 | - // Récupération des entités impliquées | |
349 | - struct entite* Entite1 = &collision->entite; | |
350 | - struct entite* Entite2 = &collision->suivant->entite; | |
351 | - | |
352 | - if (Entite1->dropbombe == 1) | |
353 | - { | |
354 | - NouveauDroppeurBombe(Liste1,Entite1); | |
355 | - } | |
356 | - | |
357 | - if (Entite2->dropbombe == 1) | |
358 | - { | |
359 | - NouveauDroppeurBombe(Liste2,Entite2); | |
360 | - } | |
361 | - | |
362 | - // Suppression de l'entité 1 de la liste 1 | |
363 | - SupprimerEntite(Liste1, Entite1); | |
364 | - // Suppression de l'entité 2 de la liste 2 | |
365 | - SupprimerEntite(Liste2, Entite2); | |
366 | - | |
367 | - afficherLutin (bouillie, | |
368 | - Entite2->posx - hitboxbouillieL/2 + ErreurHitbox, | |
369 | - Entite2->posy - hitboxbouillieH/2 + ErreurHitbox); | |
370 | - return 1; | |
371 | - } | |
372 | - return 0; | |
373 | -} | |
374 | - | |
375 | - |
Space Invaders/Envahisseurs/Graphique/src/Interactif/Interactif.h deleted
... | ... | @@ -1,44 +0,0 @@ |
1 | -int CheckCollisionEntiteEntite (struct entite entite1, | |
2 | - int L1, | |
3 | - int H1, | |
4 | - struct entite entite2, | |
5 | - int L2, | |
6 | - int H2); | |
7 | - | |
8 | -struct entite* CheckCollisionListeEntite (struct liste_entite* Liste1, | |
9 | - int L1, | |
10 | - int H1, | |
11 | - struct entite entite2, | |
12 | - int L2, | |
13 | - int H2); | |
14 | - | |
15 | -struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, | |
16 | - int L1, | |
17 | - int H1, | |
18 | - struct liste_entite* Liste2, | |
19 | - int L2, | |
20 | - int H2); | |
21 | - | |
22 | -void Tirer (struct entite joueur, | |
23 | - struct liste_entite** pl); | |
24 | - | |
25 | -void DeplacementTire(struct liste_entite** Liste); | |
26 | - | |
27 | -void action(struct entite* joueur, | |
28 | - char c, | |
29 | - struct liste_entite** tires); | |
30 | - | |
31 | -void MakeBombeDrop (struct liste_entite* enemies, | |
32 | - struct liste_entite** bombes); | |
33 | - | |
34 | -void DeplacementBombe(struct liste_entite** Liste) ; | |
35 | - | |
36 | -void NouveauDroppeurBombe (struct liste_entite** liste, | |
37 | - struct entite* entite); | |
38 | - | |
39 | -int SupprimerEntitesEnCollision (struct liste_entite** Liste1, | |
40 | - int L1, | |
41 | - int H1, | |
42 | - struct liste_entite** Liste2, | |
43 | - int L2, | |
44 | - int H2); |
Space Invaders/Envahisseurs/Graphique/src/ListeC/Liste.c deleted
... | ... | @@ -1,80 +0,0 @@ |
1 | -#include <stdio.h> | |
2 | -#include <stdlib.h> | |
3 | -#include <string.h> | |
4 | - | |
5 | -#include "Liste.h" | |
6 | - | |
7 | -//Crée une entité | |
8 | -struct entite creer_entite (int x, | |
9 | - int y, | |
10 | - int candrop) | |
11 | -{ | |
12 | - struct entite e; | |
13 | - | |
14 | - e.posx = x; | |
15 | - e.posy = y; | |
16 | - e.dropbombe = candrop; | |
17 | - | |
18 | - return e; | |
19 | -} | |
20 | - | |
21 | - | |
22 | -//Ajout en tete une entité dans une liste | |
23 | -void ajout_tete (struct liste_entite** Liste, | |
24 | - struct entite x ) | |
25 | -{ | |
26 | - struct liste_entite *Listetmp=NULL; | |
27 | - | |
28 | - Listetmp = malloc(sizeof(struct liste_entite)); | |
29 | - Listetmp->entite = x; | |
30 | - Listetmp->suivant = *Liste; | |
31 | - | |
32 | - *Liste = Listetmp; | |
33 | -} | |
34 | - | |
35 | - | |
36 | -//Supprime une entite d'une liste | |
37 | -void SupprimerEntite (struct liste_entite** Liste, | |
38 | - struct entite* entite) | |
39 | -{ | |
40 | - struct liste_entite* courant = *Liste; | |
41 | - struct liste_entite* precedent = NULL; | |
42 | - //Ce pointeur precedent va garder en memoire l'entite precedente | |
43 | - //Initialisé à NULL car cela est utile dans le cas ou l'entite est la 1ere | |
44 | - | |
45 | - while (courant != NULL) | |
46 | - { | |
47 | - //Comparaison entre 2 entites | |
48 | - if (memcmp (&courant->entite, | |
49 | - entite, | |
50 | - sizeof(struct entite)) == 0) | |
51 | - { | |
52 | - //Si l'element est le premier | |
53 | - if (precedent == NULL) | |
54 | - { | |
55 | - *Liste = courant->suivant; | |
56 | - } | |
57 | - | |
58 | - else | |
59 | - { | |
60 | - precedent->suivant = courant->suivant; | |
61 | - } | |
62 | - | |
63 | - free(courant); | |
64 | - break; | |
65 | - } | |
66 | - | |
67 | - precedent = courant; | |
68 | - courant = courant->suivant; | |
69 | - } | |
70 | -} | |
71 | - | |
72 | - | |
73 | -//Desallouer une liste entiere | |
74 | -void DesallouerListe (struct liste_entite** Liste) | |
75 | -{ | |
76 | - while(*Liste != NULL) | |
77 | - { | |
78 | - SupprimerEntite(Liste,&((*Liste)->entite)); | |
79 | - } | |
80 | -} |
Space Invaders/Envahisseurs/Graphique/src/ListeC/Liste.h deleted
... | ... | @@ -1,29 +0,0 @@ |
1 | -//dropbombe concerne les entités enemies | |
2 | -//1 les enemies peuvent drop des bombes, 0 ils ne peuvent pas | |
3 | -//Les entites non concernées vallent ont un dropbombe = -1 | |
4 | -struct entite | |
5 | -{ | |
6 | - int posx; | |
7 | - int posy; | |
8 | - int dropbombe; | |
9 | -}; | |
10 | - | |
11 | - | |
12 | -struct liste_entite | |
13 | -{ | |
14 | - struct entite entite; | |
15 | - struct liste_entite *suivant; | |
16 | -}; | |
17 | - | |
18 | - | |
19 | -struct entite creer_entite (int x, | |
20 | - int y, | |
21 | - int bombe); | |
22 | - | |
23 | -void ajout_tete (struct liste_entite** Liste, | |
24 | - struct entite x ); | |
25 | - | |
26 | -void SupprimerEntite (struct liste_entite** Liste, | |
27 | - struct entite* entite); | |
28 | - | |
29 | -void DesallouerListe (struct liste_entite** Liste); |
Space Invaders/Envahisseurs/Graphique/src/Main/Makefile deleted
... | ... | @@ -1,37 +0,0 @@ |
1 | -CC=clang | |
2 | -TARGET=Jeu | |
3 | -CFLAGS=-g -W -Wall -Wextra | |
4 | -LDFLAGS=-I Graphique -l graph -L ../Graphique -l SDL -l SDL_ttf | |
5 | - | |
6 | -default: $(TARGET) | |
7 | - | |
8 | -Liste.o : ../ListeC/Liste.c ../ListeC/Liste.h | |
9 | - clang $(CFLAGS) -c ../ListeC/Liste.c | |
10 | - | |
11 | -Monstre.o : ../Monstre/Monstre.c ../Monstre/Monstre.h | |
12 | - clang $(CFLAGS) -c ../Monstre/Monstre.c | |
13 | - | |
14 | -Interactif.o : ../Interactif/Interactif.c ../Interactif/Interactif.h | |
15 | - clang $(CFLAGS) -c ../Interactif/Interactif.c | |
16 | - | |
17 | -init.o : init.c init.h | |
18 | - clang $(CFLAGS) -c init.c | |
19 | - | |
20 | -main.o : main.c | |
21 | - clang $(CFLAGS) -c main.c | |
22 | - | |
23 | - | |
24 | -$(TARGET): Liste.o main.o Monstre.o Interactif.o init.o | |
25 | - clang main.o Liste.o Monstre.o Interactif.o init.o -o $(TARGET) $(LDFLAGS) | |
26 | - | |
27 | -.PHONY: clean | |
28 | -clean: | |
29 | - rm -f *.o | |
30 | - rm -f $(TARGET) | |
31 | - | |
32 | -tidy : main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c | |
33 | - $(CC)-tidy main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c --checks="readability-*" -header-filter=.* | |
34 | - | |
35 | -format : | |
36 | - $(CC)-format -style='Microsoft' main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c | |
37 | - |
Space Invaders/Envahisseurs/Graphique/src/Main/init.c deleted
... | ... | @@ -1,244 +0,0 @@ |
1 | -#include <stdio.h> | |
2 | -#include "../Graphique/libgraph.h" | |
3 | -#include "../ListeC/Liste.h" | |
4 | -#include "../Interactif/Interactif.h" | |
5 | -#include "init.h" | |
6 | - | |
7 | -#define TailleX 500 | |
8 | -#define TailleY 500 | |
9 | -#define Sol 475 | |
10 | -#define ErreurHitbox 2 | |
11 | -#define PositionX_1 (TailleX / 2) | |
12 | -#define PositionY_1 (TailleY / 2) | |
13 | -#define PositionY_2 (TailleY / 4) | |
14 | - | |
15 | -#define JoueurX (TailleX / 2) | |
16 | -#define JoueurY (9 * TailleY / 10) | |
17 | - | |
18 | -#define Nom "Space Invaders" | |
19 | -#define TaillePolice1 (TailleX / 10) | |
20 | -#define TaillePolice2 (TailleX / 20) | |
21 | -#define TailleChaineMax 30 | |
22 | - | |
23 | -//Ces variables sont globales car utilisées dans plusieurs .c | |
24 | -//Toutes les hitbox sont initialisées 1 fois puis sont des constantes | |
25 | -struct entite joueur; | |
26 | - | |
27 | -static const char policeDefaut[]= | |
28 | -"/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; | |
29 | - | |
30 | -int canon = 0; | |
31 | -int missile = 0; | |
32 | -int enemie1_1 = 0; | |
33 | -int enemie1_2 = 0; | |
34 | -int bouillie = 0; | |
35 | -int bombe = 0; | |
36 | - | |
37 | -int hitboxcanonL = 0; | |
38 | -int hitboxcanonH = 0; | |
39 | -int hitboxmissileL = 0; | |
40 | -int hitboxmissileH = 0; | |
41 | -int hitboxenemieL = 0; | |
42 | -int hitboxenemieH = 0; | |
43 | -int hitboxbouillieL = 0; | |
44 | -int hitboxbouillieH = 0; | |
45 | -int hitboxbombeL = 0; | |
46 | -int hitboxbombeH = 0; | |
47 | - | |
48 | -//Initialisation des variables globales pour le main | |
49 | -void initialiser() | |
50 | -{ | |
51 | - canon = chargerLutin ("../../Lutins/invader_canon.bmp", | |
52 | - COULEUR_NOIR); | |
53 | - missile = chargerLutin ("../../Lutins/invader_missile.bmp", | |
54 | - COULEUR_NOIR); | |
55 | - enemie1_1 = chargerLutin ("../../Lutins/invader_monstre2_1.bmp", | |
56 | - COULEUR_NOIR); | |
57 | - enemie1_2 = chargerLutin ("../../Lutins/invader_monstre2_2.bmp", | |
58 | - COULEUR_NOIR); | |
59 | - bouillie = chargerLutin ("../../Lutins/invader_monstre_bouillie.bmp", | |
60 | - COULEUR_NOIR); | |
61 | - bombe = chargerLutin ("../../Lutins/invader_bombe.bmp", | |
62 | - COULEUR_NOIR); | |
63 | - | |
64 | - tailleLutin (canon, | |
65 | - &hitboxcanonL, | |
66 | - &hitboxcanonH); | |
67 | - | |
68 | - tailleLutin (missile, | |
69 | - &hitboxmissileL, | |
70 | - &hitboxmissileH); | |
71 | - //La taille des enemmies que j'utilise est la meme dans ces 2 variantes | |
72 | - tailleLutin (enemie1_1, | |
73 | - &hitboxenemieL, | |
74 | - &hitboxenemieH); | |
75 | - | |
76 | - tailleLutin (bouillie, | |
77 | - &hitboxbouillieL, | |
78 | - &hitboxbouillieH); | |
79 | - | |
80 | - tailleLutin (bombe, | |
81 | - &hitboxbombeL, | |
82 | - &hitboxbombeH); | |
83 | - | |
84 | -} | |
85 | - | |
86 | -//Initialisation des coordonnées du joueur pour le main | |
87 | -void initialiserjoueur() | |
88 | -{ | |
89 | - joueur.posx = JoueurX; | |
90 | - joueur.posy = JoueurY; | |
91 | - joueur.dropbombe = -1; | |
92 | -} | |
93 | - | |
94 | -//Page de démarage du jeu | |
95 | -char pagedemarrage() | |
96 | -{ | |
97 | - char input = '\0'; | |
98 | - evenement even = 0; | |
99 | - int Largeur = 0; | |
100 | - int Hauteur = 0; | |
101 | - char jouer[] = "Appuyer sur j pour Jouer"; | |
102 | - char quitter[] = "Appuyer ailleurs pour Quitter"; | |
103 | - | |
104 | - choisirPolice (policeDefaut, TaillePolice2); | |
105 | - int LutinJouer = lutinTexte (jouer, COULEUR_BLANC); | |
106 | - int LutinQuitter = lutinTexte (quitter, COULEUR_BLANC); | |
107 | - | |
108 | - choisirPolice (policeDefaut, TaillePolice1); | |
109 | - int LutinBienvenue = lutinTexte (Nom, COULEUR_VERT); | |
110 | - | |
111 | - rectanglePlein (0, | |
112 | - 0, | |
113 | - TailleX, | |
114 | - TailleY, | |
115 | - COULEUR_NOIR); | |
116 | - | |
117 | - tailleLutin (LutinBienvenue, | |
118 | - &Largeur, | |
119 | - &Hauteur); | |
120 | - afficherLutin (LutinBienvenue, | |
121 | - PositionX_1 - Largeur / 2, | |
122 | - PositionY_2 + Hauteur / 2); | |
123 | - | |
124 | - tailleLutin (LutinJouer, | |
125 | - &Largeur, | |
126 | - &Hauteur); | |
127 | - afficherLutin (LutinJouer, | |
128 | - PositionX_1 - Largeur / 2, | |
129 | - PositionY_1 - Hauteur / 2); | |
130 | - | |
131 | - tailleLutin (LutinQuitter, | |
132 | - &Largeur, | |
133 | - &Hauteur); | |
134 | - afficherLutin (LutinQuitter, | |
135 | - PositionX_1 - Largeur / 2, | |
136 | - PositionY_1 + Hauteur / 2); | |
137 | - | |
138 | - majSurface(); | |
139 | - attendreEvenement (); | |
140 | - | |
141 | - lireEvenement (&even, | |
142 | - &input, | |
143 | - NULL); | |
144 | - while (input == '\0') | |
145 | - { | |
146 | - lireEvenement (&even, | |
147 | - &input, | |
148 | - NULL); | |
149 | - } | |
150 | - return input; | |
151 | -} | |
152 | - | |
153 | -//Page en cas de mort dans le jeu | |
154 | -void pagemort (int nbr_vie) | |
155 | -{ | |
156 | - int Largeur = 0; | |
157 | - int Hauteur = 0; | |
158 | - char mort[] = "Vous etes mort"; | |
159 | - char vie[TailleChaineMax] = "\0"; | |
160 | - sprintf (vie, | |
161 | - "Nombre de vies restantes : %d", | |
162 | - nbr_vie); | |
163 | - /* | |
164 | - sprintf crée un warning mais celui-ci ne peut pas crée d'erreur car | |
165 | - TailleChaineMax ne pourra pas excéder 30 si le nombre de vie reste "normal" | |
166 | - sprintf_s ne fonctionne pas pour mon programme (invalid in C99) | |
167 | - */ | |
168 | - | |
169 | - choisirPolice (policeDefaut, TaillePolice1); | |
170 | - int LutinMort = lutinTexte(mort, COULEUR_ROUGE); | |
171 | - | |
172 | - choisirPolice (policeDefaut, TaillePolice2); | |
173 | - int LutinVie = lutinTexte(vie, COULEUR_BLANC); | |
174 | - | |
175 | - rectanglePlein (0, | |
176 | - 0, | |
177 | - TailleX, | |
178 | - TailleY, | |
179 | - COULEUR_NOIR); | |
180 | - | |
181 | - tailleLutin (LutinMort, | |
182 | - &Largeur, | |
183 | - &Hauteur); | |
184 | - afficherLutin (LutinMort, | |
185 | - PositionX_1 - Largeur / 2, | |
186 | - PositionY_2 + Hauteur / 2); | |
187 | - | |
188 | - tailleLutin (LutinVie, | |
189 | - &Largeur, | |
190 | - &Hauteur); | |
191 | - afficherLutin (LutinVie, | |
192 | - PositionX_1 - Largeur / 2, | |
193 | - PositionY_1 - Hauteur / 2); | |
194 | -} | |
195 | - | |
196 | -//Page de GameOver du jeu | |
197 | -void pageGameOver() | |
198 | -{ | |
199 | - int Largeur = 0; | |
200 | - int Hauteur = 0; | |
201 | - char fin[] = "GAME OVER"; | |
202 | - | |
203 | - choisirPolice(policeDefaut, TaillePolice1); | |
204 | - int LutinFin = lutinTexte(fin, COULEUR_ROUGE); | |
205 | - | |
206 | - rectanglePlein (0, | |
207 | - 0, | |
208 | - TailleX, | |
209 | - TailleY, | |
210 | - COULEUR_NOIR); | |
211 | - | |
212 | - tailleLutin (LutinFin, | |
213 | - &Largeur, | |
214 | - &Hauteur); | |
215 | - afficherLutin (LutinFin, | |
216 | - PositionX_1 - Largeur / 2, | |
217 | - PositionY_1 - Hauteur / 2); | |
218 | - | |
219 | -} | |
220 | - | |
221 | -//Page de Victoire du jeu | |
222 | -void pageVictoire() | |
223 | -{ | |
224 | - int Largeur = 0; | |
225 | - int Hauteur = 0; | |
226 | - char fin[] = "VICTOIRE"; | |
227 | - | |
228 | - choisirPolice(policeDefaut, TaillePolice1); | |
229 | - int LutinFin = lutinTexte(fin, COULEUR_VERT); | |
230 | - | |
231 | - rectanglePlein (0, | |
232 | - 0, | |
233 | - TailleX, | |
234 | - TailleY, | |
235 | - COULEUR_NOIR); | |
236 | - | |
237 | - tailleLutin (LutinFin, | |
238 | - &Largeur, | |
239 | - &Hauteur); | |
240 | - afficherLutin (LutinFin, | |
241 | - PositionX_1 - Largeur / 2, | |
242 | - PositionY_1 - Hauteur / 2); | |
243 | - | |
244 | -} |
Space Invaders/Envahisseurs/Graphique/src/Main/init.h deleted
... | ... | @@ -1,28 +0,0 @@ |
1 | -extern int canon; | |
2 | -extern int missile; | |
3 | -extern int enemie1_1; | |
4 | -extern int enemie1_2; | |
5 | -extern int bouillie; | |
6 | -extern int bombe; | |
7 | - | |
8 | -extern struct entite joueur; | |
9 | -extern char Nom[]; | |
10 | -extern char input; | |
11 | - | |
12 | -extern int hitboxcanonL; | |
13 | -extern int hitboxcanonH; | |
14 | -extern int hitboxmissileL; | |
15 | -extern int hitboxmissileH; | |
16 | -extern int hitboxenemieL; | |
17 | -extern int hitboxenemieH; | |
18 | -extern int hitboxbouillieL; | |
19 | -extern int hitboxbouillieH; | |
20 | -extern int hitboxbombeL; | |
21 | -extern int hitboxbombeH; | |
22 | - | |
23 | -void initialiser(); | |
24 | -void initialiserjoueur(); | |
25 | -char pagedemarrage(); | |
26 | -void pagemort(int nbr_vie); | |
27 | -void pageGameOver(); | |
28 | -void pageVictoire(); |
Space Invaders/Envahisseurs/Graphique/src/Main/main.c deleted
... | ... | @@ -1,267 +0,0 @@ |
1 | -#include <unistd.h> | |
2 | -#include <SDL/SDL.h> | |
3 | -#include "../Graphique/libgraph.h" | |
4 | -#include "../ListeC/Liste.h" | |
5 | -#include "../Monstre/Monstre.h" | |
6 | -#include "../Interactif/Interactif.h" | |
7 | -#include "init.h" | |
8 | - | |
9 | -#define TailleX 500 | |
10 | -#define TailleY 500 | |
11 | -#define Sol 475 | |
12 | -#define EpaisseurSol 2 | |
13 | -#define ErreurHitbox 2 | |
14 | - | |
15 | -#define Nom "Space Invader" | |
16 | -#define NombreEnemieParLigne 8 | |
17 | -#define NombreLigneEnemies 3 | |
18 | -#define NombreVie 3 | |
19 | - | |
20 | -#define BombeRandomFixe 50 | |
21 | -#define BombeRandomAlea 30 | |
22 | - | |
23 | -//Pour augmenter les deplacements des enemies, vous pouvez: | |
24 | -//Augmenter VitesseDeplacementEnemie | |
25 | -//Tout les VitesseDeplacementEnemie tours de boucle les enemies se déplace | |
26 | -#define VitesseDeplacementEnemie 2 | |
27 | -// Ou augmenter le PasEnemie (Ecart entre la position n et n+1) | |
28 | -#define PasEnemie 5 | |
29 | -#define AffichageImageEnemie 8 | |
30 | - | |
31 | -#define Delai0_2s 200 | |
32 | -#define Delai0_5s 500 | |
33 | -#define Delai2s 2000 | |
34 | - | |
35 | -#define VitesseTourdeBoucle 20 | |
36 | - | |
37 | -int main() | |
38 | -{ | |
39 | - creerSurface(TailleX,TailleY,Nom); | |
40 | - | |
41 | - initialiser(); | |
42 | - initialiserjoueur(); | |
43 | - | |
44 | - struct liste_entite* ListeEnemies = NULL; | |
45 | - struct liste_entite* ListeTires = NULL; | |
46 | - struct liste_entite* ListeBombes = NULL; | |
47 | - | |
48 | - //joueur est dans une liste afin d'utiliser des fonctions deja crée | |
49 | - struct liste_entite* Ljoueur = NULL; | |
50 | - ajout_tete(&Ljoueur,joueur); | |
51 | - | |
52 | - | |
53 | - LigneEnemie(&ListeEnemies, | |
54 | - NombreEnemieParLigne, | |
55 | - NombreLigneEnemies); | |
56 | - int SensVague = 1; | |
57 | - | |
58 | - char input = '\0'; | |
59 | - evenement even = 0; | |
60 | - | |
61 | - int TourdeBoucle = 0; | |
62 | - | |
63 | - int TimeAlea = 0; | |
64 | - int CheckAlea = 0; | |
65 | - | |
66 | - int mort = 0; | |
67 | - int nbr_vie = NombreVie; | |
68 | - int QuelMonstre = 0; | |
69 | - | |
70 | - int coeur = chargerLutin ("../../Lutins/Coeur.bmp", | |
71 | - COULEUR_NOIR); | |
72 | - int hitboxcoeurL = 0; | |
73 | - int hitboxcoeurH = 0; | |
74 | - tailleLutin (coeur, | |
75 | - &hitboxcoeurL, | |
76 | - &hitboxcoeurH); | |
77 | - | |
78 | - if ( pagedemarrage() != 'j') | |
79 | - { | |
80 | - return 0; | |
81 | - } | |
82 | - SDL_Delay(Delai0_5s); | |
83 | - | |
84 | - //Bouble principale | |
85 | - while(input!='m') | |
86 | - { | |
87 | - //Si le joueur est mort | |
88 | - if (mort == 1) | |
89 | - { | |
90 | - nbr_vie-=1; | |
91 | - //Si il lui reste des vies | |
92 | - if (nbr_vie > 0) | |
93 | - { | |
94 | - pagemort(nbr_vie); | |
95 | - majSurface(); | |
96 | - SDL_Delay(Delai2s); | |
97 | - mort = 0; | |
98 | - } | |
99 | - //Si il n'a plus de vie | |
100 | - else | |
101 | - { | |
102 | - pageGameOver(); | |
103 | - majSurface(); | |
104 | - SDL_Delay(Delai2s); | |
105 | - return 0; | |
106 | - } | |
107 | - //On ajoute de nouveau le joueur précedement supprimé à sa liste | |
108 | - ajout_tete(&Ljoueur,joueur); | |
109 | - //Desallocation dynamique des listes | |
110 | - DesallouerListe(&ListeTires); | |
111 | - DesallouerListe(&ListeBombes); | |
112 | - } | |
113 | - | |
114 | - //Affichage Rectangle Noir sur toute la page | |
115 | - rectanglePlein(0, | |
116 | - 0, | |
117 | - TailleX, | |
118 | - TailleY, | |
119 | - COULEUR_NOIR); | |
120 | - | |
121 | - //Affichage des coeurs de vie | |
122 | - for (int i = 1 ; i <= nbr_vie; i++) | |
123 | - { | |
124 | - afficherLutin(coeur, | |
125 | - TailleX - i * hitboxcoeurL, | |
126 | - Sol); | |
127 | - } | |
128 | - | |
129 | - //Affichage du Sol | |
130 | - rectanglePlein(0, | |
131 | - Sol, | |
132 | - TailleX, | |
133 | - EpaisseurSol, | |
134 | - COULEUR_VERT); | |
135 | - | |
136 | - //Affichage du joueur | |
137 | - afficherLutin(canon, | |
138 | - Ljoueur->entite.posx - hitboxcanonL/2 + ErreurHitbox, | |
139 | - Ljoueur->entite.posy); | |
140 | - | |
141 | - //Affichage des ListeEnemies | |
142 | - if (QuelMonstre > 2 * AffichageImageEnemie) | |
143 | - { | |
144 | - QuelMonstre = 0; | |
145 | - } | |
146 | - if (QuelMonstre <= AffichageImageEnemie) | |
147 | - { | |
148 | - AfficherEnemie (ListeEnemies, | |
149 | - enemie1_1, | |
150 | - hitboxenemieL, | |
151 | - hitboxenemieH); | |
152 | - QuelMonstre += 1; | |
153 | - } | |
154 | - else | |
155 | - { | |
156 | - AfficherEnemie (ListeEnemies, | |
157 | - enemie1_2, | |
158 | - hitboxenemieL, | |
159 | - hitboxenemieH); | |
160 | - QuelMonstre += 1; | |
161 | - } | |
162 | - /* | |
163 | - Systeme pour faire drop une bombe dans un temps aléatoire | |
164 | - Mise en place d'un timer | |
165 | - TimeAlea représente le nombre de tour de boucle à éffectuer | |
166 | - */ | |
167 | - if (TimeAlea == 0) | |
168 | - { | |
169 | - //50 tour de boucle minimum + une valeur de 0 à 31 | |
170 | - TimeAlea = rand() % BombeRandomAlea + BombeRandomFixe; | |
171 | - //Il y a un warning car rand() à une valeur limite | |
172 | - } | |
173 | - /* | |
174 | - CheckAlea est incrémenté de 1 à chaque tour de boucle | |
175 | - Lorsque celui ci vaut TimeAlea on peut drop une bombe | |
176 | - On reset à 0 le Timer et le Check aprés avoir Drop une bombe | |
177 | - */ | |
178 | - if (CheckAlea == TimeAlea) | |
179 | - { | |
180 | - MakeBombeDrop(ListeEnemies, | |
181 | - &ListeBombes); | |
182 | - TimeAlea=0; | |
183 | - CheckAlea=0; | |
184 | - } | |
185 | - | |
186 | - //Gestion des evenements clavier | |
187 | - //On ne peut appuyer que sur une seule touche à la fois | |
188 | - lireEvenement (&even, | |
189 | - &input, | |
190 | - NULL); | |
191 | - if (even == toucheBas) | |
192 | - { | |
193 | - action(&Ljoueur->entite, | |
194 | - input, | |
195 | - &ListeTires); | |
196 | - } | |
197 | - | |
198 | - //Deplacement des enemies tout les X tours de boucle | |
199 | - if (TourdeBoucle == VitesseDeplacementEnemie) | |
200 | - { | |
201 | - DeplacementEnemie(ListeEnemies, | |
202 | - &SensVague, | |
203 | - PasEnemie); | |
204 | - TourdeBoucle = 0; | |
205 | - } | |
206 | - | |
207 | - //Deplacement des Tires et Bombes | |
208 | - DeplacementTire(&ListeTires); | |
209 | - DeplacementBombe(&ListeBombes); | |
210 | - | |
211 | - //Supression si collision des Tires et Enemies | |
212 | - SupprimerEntitesEnCollision(&ListeTires, | |
213 | - hitboxmissileL, | |
214 | - hitboxmissileH, | |
215 | - &ListeEnemies, | |
216 | - hitboxenemieL, | |
217 | - hitboxenemieH); | |
218 | - | |
219 | - //Supression si collision des Bombes et Joueur | |
220 | - if (SupprimerEntitesEnCollision(&ListeBombes, | |
221 | - hitboxbombeL, | |
222 | - hitboxbombeH, | |
223 | - &Ljoueur, | |
224 | - hitboxcanonL, | |
225 | - hitboxcanonH) == 1) | |
226 | - { | |
227 | - mort = 1; | |
228 | - majSurface(); | |
229 | - SDL_Delay(Delai0_2s); | |
230 | - } | |
231 | - | |
232 | - //Supression si collision des Enemies et Joueur | |
233 | - if (SupprimerEntitesEnCollision(&ListeEnemies, | |
234 | - hitboxenemieL, | |
235 | - hitboxenemieH, | |
236 | - &Ljoueur, | |
237 | - hitboxcanonL, | |
238 | - hitboxcanonH) == 1) | |
239 | - { | |
240 | - pageGameOver(); | |
241 | - majSurface(); | |
242 | - SDL_Delay(Delai2s); | |
243 | - return 0; | |
244 | - } | |
245 | - | |
246 | - //Si il n'y a plus d'enemies, c'est une victoire !!! | |
247 | - if (ListeEnemies == NULL) | |
248 | - { | |
249 | - majSurface(); | |
250 | - SDL_Delay(Delai0_2s); | |
251 | - pageVictoire(); | |
252 | - majSurface(); | |
253 | - SDL_Delay(Delai2s); | |
254 | - return 0; | |
255 | - } | |
256 | - | |
257 | - | |
258 | - majSurface(); | |
259 | - | |
260 | - TourdeBoucle += 1; | |
261 | - CheckAlea += 1; | |
262 | - | |
263 | - SDL_Delay(VitesseTourdeBoucle); | |
264 | - | |
265 | - } | |
266 | - return 0; | |
267 | -} |
Space Invaders/Envahisseurs/Graphique/src/Monstre/Monstre.c deleted
... | ... | @@ -1,103 +0,0 @@ |
1 | -#include <stdlib.h> | |
2 | -#include "../Graphique/libgraph.h" | |
3 | -#include "../ListeC/Liste.h" | |
4 | -#include "Monstre.h" | |
5 | - | |
6 | -#define TailleX 500 | |
7 | -#define TailleY 500 | |
8 | -#define ErreurHitbox 2 | |
9 | - | |
10 | -#define Taille1_10 (TailleX / 10) | |
11 | -#define Taille9_10 (9 * TailleX / 10) | |
12 | -#define TailleJump 30 | |
13 | - | |
14 | -//Sens = 1 -> Va vers la droite | |
15 | -//Sens = 0 -> Va vers la gauche | |
16 | -void DeplacementEnemie(struct liste_entite* Liste, | |
17 | - int* SensDeplacement, | |
18 | - int Pas) | |
19 | -{ | |
20 | - //ind sert à savoir si je dois changer de sens ou non | |
21 | - int ind = 0; | |
22 | - struct liste_entite* pListe = Liste; | |
23 | - | |
24 | - while (pListe != NULL) | |
25 | - { | |
26 | - pListe->entite.posx += (*SensDeplacement == 1) ? Pas : -Pas; | |
27 | - if (pListe->entite.posx >= Taille9_10) | |
28 | - { | |
29 | - ind = 1; | |
30 | - } | |
31 | - | |
32 | - else if (pListe->entite.posx <= Taille1_10) | |
33 | - { | |
34 | - ind = 2; | |
35 | - } | |
36 | - | |
37 | - pListe = pListe->suivant; | |
38 | - } | |
39 | - | |
40 | - if (ind != 0) | |
41 | - { | |
42 | - *SensDeplacement = (ind == 1) ? 0 : 1; | |
43 | - struct liste_entite* p2Liste = Liste; | |
44 | - | |
45 | - while (p2Liste != NULL) | |
46 | - { | |
47 | - p2Liste->entite.posy += TailleJump; | |
48 | - p2Liste = p2Liste->suivant; | |
49 | - } | |
50 | - } | |
51 | -} | |
52 | - | |
53 | -//Création de lignes d'entités enemies dans la liste enemies | |
54 | -void LigneEnemie (struct liste_entite** ListeEnemie, | |
55 | - int nbr_enemies, | |
56 | - int nbr_rangee) | |
57 | -{ | |
58 | - | |
59 | - for (int j = 1; j <= nbr_rangee; j++) | |
60 | - { | |
61 | - int compteurY = j * Taille1_10; | |
62 | - int compteurX = TailleX / (nbr_enemies+1); | |
63 | - | |
64 | - for (int i = 0; i < nbr_enemies; i++) | |
65 | - { | |
66 | - if (j == nbr_rangee) | |
67 | - { | |
68 | - ajout_tete(ListeEnemie, | |
69 | - creer_entite(compteurX, | |
70 | - compteurY, | |
71 | - 1)); | |
72 | - compteurX += 2 * TailleX / (3 * nbr_enemies); | |
73 | - } | |
74 | - | |
75 | - else | |
76 | - { | |
77 | - ajout_tete(ListeEnemie, | |
78 | - creer_entite(compteurX, | |
79 | - compteurY, | |
80 | - 0)); | |
81 | - compteurX += 2 * TailleX / (3 * nbr_enemies); | |
82 | - } | |
83 | - } | |
84 | - } | |
85 | -} | |
86 | - | |
87 | -//Affichage des enemies centrés dans leur hitbox | |
88 | -void AfficherEnemie (struct liste_entite* Liste, | |
89 | - int lutin, | |
90 | - int Largeur, | |
91 | - int Hauteur) | |
92 | -{ | |
93 | - | |
94 | - struct liste_entite* pListe = Liste; | |
95 | - | |
96 | - while (pListe != NULL) | |
97 | - { | |
98 | - afficherLutin(lutin, | |
99 | - pListe->entite.posx - Largeur / 2 + ErreurHitbox, | |
100 | - pListe->entite.posy - Hauteur / 2 + ErreurHitbox); | |
101 | - pListe=pListe->suivant; | |
102 | - } | |
103 | -} |
Space Invaders/Envahisseurs/Graphique/src/Monstre/Monstre.h deleted
... | ... | @@ -1,12 +0,0 @@ |
1 | -void DeplacementEnemie(struct liste_entite* Liste, | |
2 | - int* SensDeplacement, | |
3 | - int Pas); | |
4 | - | |
5 | -void LigneEnemie (struct liste_entite** ListeEnemie, | |
6 | - int nbr_enemies, | |
7 | - int nbr_rangee); | |
8 | - | |
9 | -void AfficherEnemie (struct liste_entite* Liste, | |
10 | - int lutin, | |
11 | - int Largeur, | |
12 | - int Hauteur); |