Commit 0c17227fc17c9557d48b7dcf71df85c2910a00c0

Authored by Martin CHAUVELIERE
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);