diff --git a/Graphique/Makefile b/Graphique/Makefile deleted file mode 100644 index 5791d72..0000000 --- a/Graphique/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -# -# Makefile pour la bibliotheque graphique -# - -SOURCES = $(wildcard *.c) -OBJETS = $(SOURCES:.c=.o) -CIBLE = libgraph.a - -# -# Nom de la cible principale -# - -all: $(CIBLE) - -# -# Cible de nettoyage -# - -clean: - rm -f core *.o $(CIBLE) - -# -# Dependances pour la bibliotheque -# - -$(CIBLE): $(OBJETS) - $(AR) rs $@ $? - -$(CIBLE:.a=).o: $(CIBLE:.a=).c $(CIBLE:.a=).h diff --git a/Graphique/libgraph.c b/Graphique/libgraph.c deleted file mode 100644 index 99658e1..0000000 --- a/Graphique/libgraph.c +++ /dev/null @@ -1,239 +0,0 @@ -/**** Bibliotheque graphique ****/ - -/** Fichiers d'inclusion **/ - -#include -#include -#include "libgraph.h" - -/** Types **/ - -typedef struct -{ - int r, v, b; -} couleur; - -/** Constantes **/ - -#define BITS_PAR_PIXEL 32 -#define TAILLE_POLICE 20 - -static const couleur couleurs[] = { { 255, 255, 255 }, { 0, 0, 0 }, { 255, 0, 0 }, - { 0, 255, 0 }, { 0, 0, 255 }, { 255, 105, 180 }, - { 150, 150, 150 }, { -1, -1, -1 } }; - -static const char policeDefaut[]="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; - -/** Variables globales **/ - -static SDL_Surface *surface; -TTF_Font* police; - -/** Fonctions **/ - -void choisirPolice(const char *chemin, int taille){ - police=TTF_OpenFont(chemin, taille); -} - -void initialiserTexte() { - TTF_Init(); - choisirPolice(policeDefaut, TAILLE_POLICE); -} - -/* Initialisation de la surface dessinable */ -unsigned char creerSurface (int largeur, int hauteur, char *titre) -{ - SDL_Init (SDL_INIT_VIDEO); - SDL_WM_SetCaption (titre, titre); - surface = SDL_SetVideoMode (largeur, hauteur, BITS_PAR_PIXEL, SDL_DOUBLEBUF); - initialiserTexte(); - - return (surface != NULL && police != NULL); -} - -/* Fermeture de la surface dessinable */ - -void fermerSurface (void) -{ - if (surface != NULL) SDL_FreeSurface (surface); - if (police != NULL) TTF_CloseFont(police); - TTF_Quit(); - SDL_Quit (); -} - -/* Creation d'une couleur */ - -static int creerCouleur (int ncouleur) -{ - couleur c = couleurs[ncouleur]; - return SDL_MapRGB (surface->format, c.r, c.v, c.b); -} - -/* Dessin d'un rectangle plein */ - -void rectanglePlein (int x, int y, int l, int h, int c) -{ - SDL_Rect rectangle = { x, y, l, h }; - SDL_FillRect (surface, &rectangle, creerCouleur (c)); - // SDL_Flip(surface); -} - -/* Manipulation de lutins */ - -static SDL_Surface *lutins[MAX_LUTINS]; -static int lutins_nb = 0; - -int lutinTexte(char* texte, int couleurTexte) { - couleur c=couleurs[couleurTexte]; - SDL_Color couleur={c.r, c.v, c.b}; - SDL_Surface* lutin=TTF_RenderText_Solid(police, texte, couleur); - if (lutin != NULL) - { - lutins[lutins_nb++] = lutin; - return lutins_nb - 1; - } - return -1; -} - -static void configurerLutin (SDL_Surface *lutin, int ncouleur) -{ - couleur c = couleurs[ncouleur]; - int fond = SDL_MapRGB (lutin->format, c.r, c.v, c.b); - SDL_SetColorKey (lutin, SDL_SRCCOLORKEY | SDL_RLEACCEL, fond); -} - -int chargerLutin (char *fichier, int couleur) -{ - if (lutins_nb >= MAX_LUTINS) return -2; - SDL_Surface *lutin = SDL_LoadBMP (fichier); - if (lutin != NULL) - { - lutins[lutins_nb++] = lutin; - if (couleur >= 0) configurerLutin (lutin, couleur); - return lutins_nb - 1; - } - return -1; -} - -void afficherLutin (int lutin, int x, int y) -{ - SDL_Rect position; - position.x = x; - position.y = y; - SDL_BlitSurface (lutins[lutin], NULL, surface, &position); -} - -int creerLutin (int x, int y, int largeur, int hauteur, int couleur) -{ - if (lutins_nb >= MAX_LUTINS) return -2; - int rmask, gmask, bmask, amask; -#if SDL_BYTEORDER == SDL_BIG_ENDIAN - rmask = 0xff000000; - gmask = 0x00ff0000; - bmask = 0x0000ff00; - amask = 0x000000ff; -#else - rmask = 0x000000ff; - gmask = 0x0000ff00; - bmask = 0x00ff0000; - amask = 0xff000000; -#endif - if (couleur < 0) amask = 0x00000000; - SDL_Surface *lutin = - SDL_CreateRGBSurface (0, largeur, hauteur, BITS_PAR_PIXEL, rmask, gmask, bmask, amask); - SDL_Rect fenetre; - fenetre.x = x; - fenetre.y = y; - fenetre.h = hauteur; - fenetre.w = largeur; - SDL_BlitSurface (surface, &fenetre, lutin, NULL); - lutins[lutins_nb++] = lutin; - if (couleur >= 0) configurerLutin (lutin, couleur); - return lutins_nb - 1; -} - -void tailleLutin (int lutin, int *largeur, int *hauteur) -{ - *largeur = lutins[lutin]->w; - *hauteur = lutins[lutin]->h; -} - -int sauverLutin (int lutin, char *nom) { return SDL_SaveBMP (lutins[lutin], nom); } - -/* Manipulation de copie de surface en BMP */ - -int sauverSurface (char *fichier) { return SDL_SaveBMP (surface, fichier); } - -unsigned char chargerSurface (char *fichier) -{ - SDL_Surface *image = SDL_LoadBMP (fichier); - if (image != NULL) - { - SDL_BlitSurface (image, NULL, surface, NULL); - SDL_Flip (surface); - } - return (image != NULL); -} - -void majSurface (void) { SDL_Flip (surface); } - -/* Trouver la couleur d'un pixel */ - -int couleurPixel (int x, int y) -{ - int bpp = surface->format->BytesPerPixel; - Uint32 *p = (Uint32 *)(surface->pixels + y * surface->pitch + x * bpp); - Uint8 r, v, b; - SDL_GetRGB (*p, surface->format, &r, &v, &b); - int i = 0; - while (1) - { - if (couleurs[i].r < 0) break; - if (r == couleurs[i].r && v == couleurs[i].v && b == couleurs[i].b) break; - i++; - } - if (couleurs[i].r < 0) - return -1; - else - return i; -} - -/* Fonction de traitement des événements */ - -void lireEvenement (evenement *evt, char *touche, void **detail) -{ - static SDL_keysym _detail; - SDL_Event event; - while (SDL_PollEvent (&event)) - { - if (event.type == SDL_QUIT) *evt = quitter; - if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) - { - *evt = (event.type == SDL_KEYDOWN) ? toucheBas : toucheHaut; - char *nom = SDL_GetKeyName (event.key.keysym.sym); - if (strlen (nom) == 1 && nom[0] >= 32 && nom[0] < 128) - *touche = nom[0]; - else - *touche = 0; - if (detail != NULL) - { - _detail = event.key.keysym; - *detail = &_detail; - } - break; - } - } -} - -void attendreEvenement (void) -{ - SDL_Event event; - while (SDL_WaitEvent (&event)) switch (event.type) - { - case SDL_QUIT: - exit (0); - case SDL_KEYDOWN: - case SDL_MOUSEBUTTONDOWN: - return; - } -} diff --git a/Graphique/libgraph.h b/Graphique/libgraph.h deleted file mode 100644 index f518cff..0000000 --- a/Graphique/libgraph.h +++ /dev/null @@ -1,156 +0,0 @@ -/**** Bibliotheque graphique (definitions) ****/ - -/** Constantes **/ - -#define COULEUR_BLANC 0 -#define COULEUR_NOIR 1 -#define COULEUR_ROUGE 2 -#define COULEUR_VERT 3 -#define COULEUR_BLEU 4 -#define COULEUR_ROSE 5 -#define COULEUR_GRIS 6 - -#define MAX_LUTINS 16 - -typedef enum {toucheBas, toucheHaut, quitter} evenement; - -/** Prototypes **/ - -/** - * @brief cree une fenetre 2D - * - * @param largeur en pixels de la fenetre - * @param hauteur en pixels de la fenetre - * @param titre de la fenetre (chaine de caractere) - */ -unsigned char creerSurface (int largeur, int hauteur, char *titre); - -/** - * @brief permet de charger un fichier image au format bmp (bitmap) - * - * @param fichier nom du fichier - */ -unsigned char chargerSurface (char *fichier); - - -/** - * @brief permet de sauvegarder une surface en image (format bmp) - * - * @param fichier nom du fichier - * @return 0 si OK, valeur negative sinon - */ -int sauverSurface (char *fichier); - -/** - * @brief met a jour la surface d'affichage - */ -void majSurface (void); - - -/** - * @brief libere la surface d'affichage - * a faire lors de la fermeture - * du programme - */ -void fermerSurface (void); - -/** - * @brief choisit la police de caractères à utiliser pour afficher du texte - * @param chemin nom du fichier de police (format .ttf, voir /usr/share/fonts/truetype) - * @param taille taille de la police - */ -void choisirPolice(const char *chemin, int taille); - -/** - * @brief dessine un rectange de taille (l,h) aux coordonnêes - * (x,y) et de couleur c - * - * @param x 0 <= x <= l_surface - * @param y 0 <= y <= h_surface - * @param l largeur en pixels - * @param h longueur en pixels - * @param c indice de couleur voir variable couleurs dans le fichier .c - */ -void rectanglePlein (int x, int y, int l, int h, int c); - - -/** - * @brief permet de determiner l'indice du tableau de couleur du - * pixel aux coordonnees (x,y) - * - * @param x 0 <= x <= l_surface - * @param y 0 <= y <= h_surface - * @return indice de couleur voire variable couleurs dans le fichier .c - */ -int couleurPixel (int x, int y); - -/** - * @brief crée un lutin à partir d'un texte - * - * @param texte le texte - * @param couleur indice de couleur du texte - * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS) - */ -int lutinTexte(char *texte, int couleur); - -/** - * @brief charge un lutin à partir du fichier - * - * @param fichier image bitmap du lutin à charger - * @param couleur indice de couleurs à charger - * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS) - */ -int chargerLutin (char *fichier, int couleur); - -/** - * @brief afficher un lutin aux coordonnées (x,y) - * - * @param lutin numero du lutin à afficher (< MAX_LUTINS) - * @param x abscisse de départ - * @param y ordonnée de départ - */ -void afficherLutin (int lutin, int x, int y); - -/** - * @brief creer un lutin de taille (l,h) aux coordonnées (x,y) - * - * @param x abscisse de départ - * @param y ordonnée de départ - * @param largeur largeur du lutin - * @param hauteur hauteur du lutin - * @param couleur indice de couleur à partir du tableau _couleurs_ - * @return indice du lutin dans le tableau global (< MAX_LUTINS) - */ -int creerLutin (int x, int y, int largeur, int hauteur, int couleur); - -/** - * @brief sauvegarde un lutin dans un fichier - * - * @param lutin numero de lutin à sauvegarder (< MAX_LUTINS) - * @param nom fichier pour la sauvegarde - * @return 0 si OK valeur négative sinon - */ -int sauverLutin (int lutin, char *nom); - -/** - * @brief calcule la taille (largeur,hauteur) d'un lutin - * - * @param lutin index du lutin (< MAX_LUTINS) - * @param largeur pointeur sur la largeur - * @param hauteur pointeur sur la hauteur - */ -void tailleLutin (int lutin, int *largeur, int *hauteur); - -/** - * @brief lire une touche au clavier - * - * @param evt pointeur sur evenement - * @param touche pointeur sur la touche pressée - * @param detail NULL ou keysim - */ -void lireEvenement (evenement *evt, char *touche, void **detail); - -/** - * @brief attente d'un evenement bouton, souris, fin de programme - */ -void attendreEvenement (void); diff --git a/Interactif/Interactif.c b/Interactif/Interactif.c deleted file mode 100644 index d6d5c78..0000000 --- a/Interactif/Interactif.c +++ /dev/null @@ -1,273 +0,0 @@ -#include -#include -#include -#include "../Graphique/libgraph.h" -#include "../ListeC/Liste.h" -#include "Interactif.h" -#include "../Main/init.h" - -#define TailleX 500 -#define TailleY 500 -#define Sol 475 -#define ErreurHitbox 2 - - -int CheckCollisionEntiteEntite(struct entite entite1, int L1, int H1, struct entite entite2, int L2, int H2) -{ - //CheckX - int gauche1 = entite1.posx - L1/2 + ErreurHitbox; - int droite1 = entite1.posx + L1/2 - ErreurHitbox; - int gauche2 = entite2.posx - L2/2 + ErreurHitbox; - int droite2 = entite2.posx + L2/2 - ErreurHitbox; - int CheckX = (gauche1 >= gauche2 && gauche1 <= droite2) || (droite1 >= gauche2 && droite1 <= droite2); - - //CheckY - int haut1 = entite1.posy - H1/2 + ErreurHitbox; - int bas1 = entite1.posy + H1/2 - ErreurHitbox; - int haut2 = entite2.posy - H2/2 + ErreurHitbox; - int bas2 = entite2.posy + H2/2 - ErreurHitbox; - int CheckY = (haut1 <= bas2 && haut1 >= haut2) || (bas1 <= bas2 && bas1 >= haut2); - - return CheckX && CheckY; -} - - -struct entite* CheckCollisionListeEntite(struct liste_entite *Liste1,int L1,int H1,struct entite entite2, int L2, int H2) -{ - struct liste_entite *pL1=Liste1; - while (pL1 != NULL) - { - if(CheckCollisionEntiteEntite(pL1->entite,L1,H1,entite2,L2,H2) == 1) - { - return &pL1->entite; - } - pL1=pL1->suivant; - } - return NULL; -} - - - - -struct liste_entite* CheckCollisionListeListe(struct liste_entite *Liste1,int L1,int H1,struct liste_entite *Liste2,int L2, int H2) -{ - struct liste_entite *pL2=Liste2; - while (pL2 != NULL) - { - struct entite* collision = CheckCollisionListeEntite(Liste1,L1,H1,pL2->entite,L2,H2); - if (collision != NULL) - { - // Création des nœuds pour les deux entités - struct liste_entite* Entite1 = malloc(sizeof(struct liste_entite)); - struct liste_entite* Entite2 = malloc(sizeof(struct liste_entite)); - - // Remplissage des nœuds avec les entités correspondantes - Entite1->entite = *collision; - Entite2->entite = pL2->entite; - - // Relier les nœuds entre eux - Entite1->suivant = Entite2; - Entite2->suivant = NULL; - - return Entite1; - } - else - pL2=pL2->suivant; - } - return NULL; -} - - -void NouveauDroppeurBombe(struct liste_entite** liste, struct entite* ent) -{ - int posx = ent->posx; - int posy = ent->posy; - struct liste_entite* pListe = *liste; - struct entite* ent_bas = NULL; - - // On parcourt la liste et on cherche l'entité la plus basse ayant la même position x - while (pListe != NULL) - { - if (pListe->entite.posy != posy) - { - if (pListe->entite.posx == posx && ent_bas == NULL) - { - ent_bas = &pListe->entite; - } - else if (pListe->entite.posx == posx && pListe->entite.posy > ent_bas->posy) - { - ent_bas = &pListe->entite; - } - } - pListe = pListe->suivant; - } - - // Si aucune entité n'est située plus bas que l'entité en question, on ne peut pas dropper la bombe - if (ent_bas == NULL) - { - return; - } - - ent_bas->dropbombe = 1; -} - - - - - -int SupprimerEntitesEnCollision(struct liste_entite** Liste1, int L1, int H1, struct liste_entite** Liste2, int L2, int H2) -{ - struct liste_entite* collision = CheckCollisionListeListe(*Liste1, L1, H1, *Liste2, L2, H2); - - if (collision != NULL) { - // Récupération des entités impliquées - struct entite* entite1 = &collision->entite; - struct entite* entite2 = &collision->suivant->entite; - - if (entite1->dropbombe == 1) - { - NouveauDroppeurBombe(Liste1,entite1); - } - - if (entite2->dropbombe == 1) - { - NouveauDroppeurBombe(Liste2,entite2); - } - // Suppression de l'entité 1 de la liste 1 - SupprimerEntite(Liste1, entite1); - - // Suppression de l'entité 2 de la liste 2 - SupprimerEntite(Liste2, entite2); - - afficherLutin(bouillie, entite2->posx - hitboxbouillieL/2 + ErreurHitbox, entite2->posy - hitboxbouillieH/2 + ErreurHitbox); - - return 1; - } - return 0; -} - - - - - -void Tirer(struct entite joueur, struct liste_entite **pl) -{ - if (*pl==NULL) - { - ajout_tete(pl,creer_entite(joueur.posx,joueur.posy,-1)); - } -} - - -void DeplacementTire(int tire, struct liste_entite** l) -{ - struct entite* ml = &(*l)->entite; - if (ml != NULL) - { - if (ml->posy <= 0) - { - afficherLutin(bouillie, ml->posx - hitboxbouillieL/2 + ErreurHitbox, ml->posy); - SupprimerEntite(l, ml); - } - else - { - ml->posy -= 5; - //Je divise ErreurHitbox par 2 car l'erreur du missile est plus petite que pour les autres images - afficherLutin(tire, ml->posx - hitboxmissileL/2 + ErreurHitbox/2, ml->posy - hitboxmissileH/2 + ErreurHitbox/2); - } - } -} - - - - -char touche() -{ - char touche; - evenement even; - lireEvenement (&even,&touche,NULL); - return touche; -} - - - -void action(struct entite *joueur, char c, struct liste_entite **tires) -{ - switch (c) - { - case 'd': - if (joueur->posx <= 9*TailleX/10) - { - joueur->posx += 3; - } - break; - case 'q': - if (joueur->posx >= TailleX/10) - { - joueur->posx -= 3; - } - break; - case 't': - Tirer(*joueur, tires); - break; - default: - break; - } -} - - - -void MakeBombeDroppable(struct liste_entite* enemies, struct liste_entite** bombes) -{ - struct liste_entite* pL = enemies; - struct liste_entite* Dropable = NULL; - int taille = 0; - while (pL != NULL) - { - if (pL->entite.dropbombe == 1) - { - ajout_tete(&Dropable,pL->entite); - taille += 1; - } - pL=pL->suivant; - } - - if(Dropable == NULL) - { - return; - } - - int randomIndex = rand() % taille-1; - struct liste_entite* pLDropable = Dropable; - - for (int i = 0; i <= randomIndex; i++) - { - pLDropable = pLDropable->suivant; - } - ajout_tete(bombes,creer_entite(pLDropable->entite.posx,pLDropable->entite.posy,-1)); -} - - -void DeplacementBombe(int bombe, struct liste_entite** l) -{ - struct liste_entite* ml = *l; - struct liste_entite* precedent = NULL; - - while (ml != NULL) - { - if (ml->entite.posy + hitboxbombeH/2 - ErreurHitbox >= Sol) - { - struct entite* a_supprimer = &ml->entite; - ml = ml->suivant; - SupprimerEntite(l, a_supprimer); - } - else - { - ml->entite.posy += 2; - afficherLutin(bombe, ml->entite.posx - hitboxbombeL/2 + ErreurHitbox, ml->entite.posy - hitboxbombeH/2 + ErreurHitbox); - precedent = ml; - ml = ml->suivant; - } - } -} - diff --git a/Interactif/Interactif.h b/Interactif/Interactif.h deleted file mode 100644 index ad419a5..0000000 --- a/Interactif/Interactif.h +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - - -int CheckCollisionEntiteEntite(struct entite,int,int,struct entite,int,int); - -struct entite* CheckCollisionListeEntite(struct liste_entite*,int,int,struct entite,int,int); - -void NouveauDroppeurBombe(struct liste_entite**,struct entite*); - -struct liste_entite* CheckCollisionListeListe(struct liste_entite*,int,int,struct liste_entite*,int,int); - -void Tirer(struct entite, struct liste_entite**); - -void DeplacementTire(int,struct liste_entite**); - -int SupprimerEntitesEnCollision(struct liste_entite**,int,int,struct liste_entite**,int,int); - -char touche(); - -void action(struct entite*,char,struct liste_entite**); - -void MakeBombeDroppable(struct liste_entite*,struct liste_entite**); - -void DeplacementBombe(int,struct liste_entite**); diff --git a/ListeC/Liste.c b/ListeC/Liste.c deleted file mode 100644 index 07bc0cb..0000000 --- a/ListeC/Liste.c +++ /dev/null @@ -1,69 +0,0 @@ -#include -#include -#include - -#include "Liste.h" - - -struct entite creer_entite (int x, - int y, - int bombe) -{ - struct entite e; - - e.posx = x; - e.posy = y; - e.dropbombe = bombe; - - return e; -} - - - -void ajout_tete (struct liste_entite** Liste, - struct entite x ) -{ - struct liste_entite *Listetmp; - - Listetmp = malloc(sizeof(struct liste_entite)); - Listetmp->entite = x; - Listetmp->suivant = *Liste; - - *Liste = Listetmp; -} - - - -void SupprimerEntite (struct liste_entite** Liste, - struct entite* entite) -{ - struct liste_entite* courant = *Liste; - struct liste_entite* precedent = NULL; - - while (courant != NULL) - { - - if (memcmp (&courant->entite, - entite, - sizeof(struct entite)) == 0) - { - - if (precedent == NULL) - { - *Liste = courant->suivant; - } - - else - { - precedent->suivant = courant->suivant; - } - - free(courant); - break; - } - - precedent = courant; - courant = courant->suivant; - } -} - diff --git a/ListeC/Liste.h b/ListeC/Liste.h deleted file mode 100644 index d48387f..0000000 --- a/ListeC/Liste.h +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include - -//dropbombe concerne les entités enemies -//1 les enemies peuvent drop des bombes, 0 ils ne peuvent pas -//Celles non concernées vallent -1 -struct entite -{ - int posx; - int posy; - int dropbombe; -}; - - -struct liste_entite -{ - struct entite entite; - struct liste_entite *suivant; -}; - - -void ajout_tete(struct liste_entite**, struct entite); - -struct entite creer_entite(int,int,int); - -void SupprimerEntite(struct liste_entite**,struct entite*); - diff --git a/Main/.nfs00000000073b016100000009 b/Main/.nfs00000000073b016100000009 deleted file mode 100755 index fcde3f0..0000000 Binary files a/Main/.nfs00000000073b016100000009 and /dev/null differ diff --git a/Main/Makefile b/Main/Makefile deleted file mode 100644 index 90c2099..0000000 --- a/Main/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -CC=clang -TARGET=exec -CFLAGS=-g -W -Wall -Wextra -LDFLAGS=-I Graphique -l graph -L ../Graphique -l SDL -l SDL_ttf - -default: $(TARGET) - -Liste.o : ../ListeC/Liste.c ../ListeC/Liste.h - clang $(CFLAGS) -c ../ListeC/Liste.c - -Monstre.o : ../Monstre/Monstre.c ../Monstre/Monstre.h ../ListeC/Liste.h - clang $(CFLAGS) -c ../Monstre/Monstre.c - -Interactif.o : ../Interactif/Interactif.c ../Interactif/Interactif.h ../ListeC/Liste.h - clang $(CFLAGS) -c ../Interactif/Interactif.c - -init.o : init.c init.h ../ListeC/Liste.h - clang $(CFLAGS) -c init.c - -main.o : main.c ../ListeC/Liste.h - clang $(CFLAGS) -c main.c - - -$(TARGET): Liste.o main.o Monstre.o Interactif.o init.o - clang main.o Liste.o Monstre.o Interactif.o init.o -o $(TARGET) $(LDFLAGS) - -.PHONY: clean -clean: - rm -f *.o - rm -f $(TARGET) diff --git a/Main/init.c b/Main/init.c deleted file mode 100644 index 921cf79..0000000 --- a/Main/init.c +++ /dev/null @@ -1,218 +0,0 @@ -#include -#include - -#include "../Graphique/libgraph.h" -#include "../ListeC/Liste.h" -#include "../Interactif/Interactif.h" -#include "init.h" - -#define TailleX 500 -#define TailleY 500 -#define Sol 475 -#define ErreurHitbox 2 -#define JoueurX TailleX/2 -#define JoueurY 9*TailleY/10 - -struct entite joueur; - -int canon = 0; -int missile = 0; -int sbire = 0; -int bouillie = 0; -int bombe = 0; - -int hitboxcanonL = 0; -int hitboxcanonH = 0; -int hitboxmissileL = 0; -int hitboxmissileH = 0; -int hitboxsbireL = 0; -int hitboxsbireH = 0; -int hitboxbouillieL = 0; -int hitboxbouillieH = 0; -int hitboxbombeL = 0; -int hitboxbombeH = 0; - -char Nom[] = "Space Invader"; -char input = '\0'; - - -void initialiser() -{ - canon = chargerLutin ("../../Lutins/invader_canon.bmp", - COULEUR_NOIR); - missile = chargerLutin ("../../Lutins/invader_missile.bmp", - COULEUR_NOIR); - sbire = chargerLutin ("../../Lutins/invader_monstre1_1.bmp", - COULEUR_NOIR); - bouillie = chargerLutin ("../../Lutins/invader_monstre_bouillie.bmp", - COULEUR_NOIR); - bombe = chargerLutin ("../../Lutins/invader_bombe.bmp", - COULEUR_NOIR); - - tailleLutin (canon, - &hitboxcanonL, - &hitboxcanonH); - tailleLutin (missile, - &hitboxmissileL, - &hitboxmissileH); - tailleLutin (sbire, - &hitboxsbireL, - &hitboxsbireH); - tailleLutin (bouillie, - &hitboxbouillieL, - &hitboxbouillieH); - tailleLutin (bombe, - &hitboxbombeL, - &hitboxbombeH); - -} - - -void initialiserjoueur(struct entite* joueur) -{ - joueur->posx = JoueurX; - joueur->posy = JoueurY; - joueur->dropbombe = -1; -} - - -char pagedemarrage() -{ - static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; - int Largeur = 0; - int Hauteur = 0; - char jouer[] = "Appuyer sur j pour Jouer"; - char quitter[] = "Appuyer ailleurs pour Quitter"; - - choisirPolice (policeDefaut, TailleX / 20); - int LutinJouer = lutinTexte (jouer, COULEUR_BLANC); - int LutinQuitter = lutinTexte (quitter, COULEUR_BLANC); - - choisirPolice (policeDefaut,TailleX / 10); - int LutinBienvenue = lutinTexte (Nom, COULEUR_VERT); - - rectanglePlein (0, - 0, - TailleX, - TailleY, - COULEUR_NOIR); - - tailleLutin (LutinBienvenue, - &Largeur, - &Hauteur); - afficherLutin (LutinBienvenue, - TailleX / 2 - Largeur / 2, - TailleY / 4 + Hauteur / 2); - - tailleLutin (LutinJouer, - &Largeur, - &Hauteur); - afficherLutin (LutinJouer, - TailleX/2-Largeur/2, - TailleY/2-Hauteur/2); - - tailleLutin (LutinQuitter, - &Largeur, - &Hauteur); - afficherLutin (LutinQuitter, - TailleX / 2 - Largeur / 2, - TailleY / 2 + Hauteur / 2); - - attendreEvenement (); - - input = touche(); - while (input == '\0') - { - input = touche(); - } - return input; -} - - -void pagemort (int nbr_vie) -{ - static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; - int Largeur = 0; - int Hauteur = 0; - char mort[] = "Vous etes mort"; - char vie[30] = "\0"; - sprintf(vie, "Nombre de vie restante : %d", nbr_vie); - - choisirPolice (policeDefaut, TailleX / 10); - int LutinMort = lutinTexte(mort, COULEUR_ROUGE); - - choisirPolice (policeDefaut, TailleX / 20); - int LutinVie = lutinTexte(vie, COULEUR_BLANC); - - rectanglePlein (0, - 0, - TailleX, - TailleY, - COULEUR_NOIR); - - tailleLutin (LutinMort, - &Largeur, - &Hauteur); - afficherLutin (LutinMort, - TailleX / 2 - Largeur / 2, - TailleY / 4 + Hauteur / 2); - - tailleLutin (LutinVie, - &Largeur, - &Hauteur); - afficherLutin (LutinVie, - TailleX / 2 - Largeur / 2, - TailleY / 2 - Hauteur / 2); -} - - -void pageGameOver() -{ - static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; - int Largeur = 0; - int Hauteur = 0; - char fin[] = "GAME OVER"; - - choisirPolice(policeDefaut, TailleX / 10); - int LutinFin = lutinTexte(fin, COULEUR_ROUGE); - - rectanglePlein (0, - 0, - TailleX, - TailleY, - COULEUR_NOIR); - - tailleLutin (LutinFin, - &Largeur, - &Hauteur); - afficherLutin (LutinFin, - TailleX / 2 - Largeur / 2, - TailleY / 2 - Hauteur / 2); - -} - - -void pageVictoire() -{ - static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"; - int Largeur = 0; - int Hauteur = 0; - char fin[] = "VICTOIRE"; - - choisirPolice(policeDefaut, TailleX / 10); - int LutinFin = lutinTexte(fin, COULEUR_VERT); - - rectanglePlein (0, - 0, - TailleX, - TailleY, - COULEUR_NOIR); - - tailleLutin (LutinFin, - &Largeur, - &Hauteur); - afficherLutin (LutinFin, - TailleX / 2 - Largeur / 2, - TailleY / 2 - Hauteur / 2); - -} diff --git a/Main/init.h b/Main/init.h deleted file mode 100644 index c3a7d64..0000000 --- a/Main/init.h +++ /dev/null @@ -1,30 +0,0 @@ -#include -#include - -extern int canon; -extern int missile; -extern int sbire; -extern int bouillie; -extern int bombe; - -extern struct entite joueur; -extern char Nom[15]; -extern char input; - -extern int hitboxcanonL; -extern int hitboxcanonH; -extern int hitboxmissileL; -extern int hitboxmissileH; -extern int hitboxsbireL; -extern int hitboxsbireH; -extern int hitboxbouillieL; -extern int hitboxbouillieH; -extern int hitboxbombeL; -extern int hitboxbombeH; - -void initialiser(); -void initialiserjoueur(struct entite*); -char pagedemarrage(); -void pagemort(int); -void pageGameOver(); -void pageVictoire(); diff --git a/Main/main.c b/Main/main.c deleted file mode 100644 index 74eeb53..0000000 --- a/Main/main.c +++ /dev/null @@ -1,149 +0,0 @@ -#include -#include -#include -#include -#include "../Graphique/libgraph.h" -#include "../ListeC/Liste.h" -#include "../Monstre/Monstre.h" -#include "../Interactif/Interactif.h" -#include "init.h" - -#define TailleX 500 -#define TailleY 500 -#define Sol 475 -#define ErreurHitbox 2 - -int main() -{ - creerSurface(TailleX,TailleY,Nom); - - initialiser(); - initialiserjoueur(&joueur); - - struct liste_entite *enemies = NULL; - struct liste_entite *tires = NULL; - struct liste_entite *bombes = NULL; - //joueur est dans une liste pour que je puisse utiliser des fonctions deja créé - struct liste_entite* Ljoueur = NULL; - ajout_tete(&Ljoueur,joueur); - - - LigneSbire(&enemies,8,3); - int SensVague=1; - - int compteur=0; - int DropAlea=0; - int CheckAlea=0; - int mort = 0; - int nbr_vie = 3; - char Touchememoire = '\0'; - int compteurtouche = 0; - - if ( pagedemarrage() != 'j') - { - return 0; - } - SDL_Delay(500); - - //Bouble principale - while(input!='m') - { - if (mort == 1) - { - nbr_vie-=1; - if (nbr_vie > 0) - { - pagemort(nbr_vie); - majSurface(); - SDL_Delay(2000); - mort = 0; - } - else - { - pageGameOver(); - majSurface(); - SDL_Delay(2000); - return 0; - } - ajout_tete(&Ljoueur,joueur); - tires = NULL; - bombes = NULL; - } - - rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR); - rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT); - - afficherLutin(canon,Ljoueur->entite.posx - hitboxcanonL/2 + ErreurHitbox,Ljoueur->entite.posy); - AfficherSbire(enemies,sbire,hitboxsbireL,hitboxsbireH); - - if (DropAlea == 0) - { - DropAlea = rand() % 31 + 100; - } - if (CheckAlea == DropAlea) - { - MakeBombeDroppable(enemies,&bombes); - DropAlea=0; - CheckAlea=0; - } - - - input = touche(); - if (input != '\0') - { - Touchememoire = input; - compteurtouche += 1; - } - if (compteurtouche == 2) - { - Touchememoire = '\0'; - compteurtouche = 0; - } - else if (compteurtouche == 1) - { - action(&Ljoueur->entite,Touchememoire,&tires); - } - - - - if (compteur==10) - { - DeplacementSbire(enemies,&SensVague,1); - compteur=0; - } - - DeplacementTire(missile,&tires); - DeplacementBombe(bombe,&bombes); - - SupprimerEntitesEnCollision(&tires,hitboxmissileL,hitboxmissileH,&enemies,hitboxsbireL,hitboxsbireH); - - if (SupprimerEntitesEnCollision(&bombes,hitboxbombeL,hitboxbombeH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1) - { - mort = 1; - majSurface(); - SDL_Delay(200); - } - if (SupprimerEntitesEnCollision(&enemies,hitboxsbireL,hitboxsbireH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1) - { - pageGameOver(); - majSurface(); - SDL_Delay(2000); - return 0; - } - - if (enemies == NULL) - { - pageVictoire(); - majSurface(); - SDL_Delay(2000); - return 0; - } - - majSurface(); - SDL_Delay(20); - - compteur+=1; - CheckAlea+=1; - } - return 0; -} diff --git a/Monstre/Monstre.c b/Monstre/Monstre.c deleted file mode 100644 index fadf4fd..0000000 --- a/Monstre/Monstre.c +++ /dev/null @@ -1,99 +0,0 @@ -#include -#include - -#include "../Graphique/libgraph.h" -#include "../ListeC/Liste.h" -#include "Monstre.h" - -#define TailleX 500 -#define TailleY 500 -#define ErreurHitbox 2 - -//Sens = 1 -> Va vers la droite -void DeplacementSbire(struct liste_entite* Liste, - int* SensDeplacement, - int Vitesse) -{ - - int ind = 0; - struct liste_entite* pListe = Liste; - - while (pListe != NULL) - { - pListe->entite.posx += (*SensDeplacement == 1) ? Vitesse : -Vitesse; - - if (pListe->entite.posx >= 9 * TailleX / 10) - ind = 1; - - else if (pListe->entite.posx <= TailleX / 10) - ind = 2; - - pListe = pListe->suivant; - } - - if (ind != 0) - { - *SensDeplacement = (ind == 1) ? 0 : 1; - struct liste_entite* p2Liste = Liste; - - while (p2Liste != NULL) - { - p2Liste->entite.posy += 30; - p2Liste = p2Liste->suivant; - } - } -} - - -void LigneSbire (struct liste_entite** ListeSbire, - int nbr_enemies, - int nbr_rangee) -{ - - for (int j = 1; j <= nbr_rangee; j++) - { - int compteurY = j * TailleY / 10; - int compteurX = TailleX / nbr_enemies; - - for (int i = 0; i < nbr_enemies; i++) - { - if (j == nbr_rangee) - { - ajout_tete(ListeSbire, - creer_entite(compteurX, - compteurY, - 1) - ); - compteurX += 2 * TailleX / (3 * nbr_enemies); - } - - else - { - ajout_tete(ListeSbire, - creer_entite(compteurX, - compteurY, - 0) - ); - compteurX += 2 * TailleX / (3 * nbr_enemies); - } - } - } -} - - -void AfficherSbire (struct liste_entite* Liste, - int lutin, - int Largeur, - int Hauteur) -{ - - struct liste_entite* pListe = Liste; - - while (pListe != NULL) - { - afficherLutin(lutin, - pListe->entite.posx - Largeur / 2 + ErreurHitbox, - pListe->entite.posy - Hauteur / 2 + ErreurHitbox); - pListe=pListe->suivant; - } -} diff --git a/Monstre/Monstre.h b/Monstre/Monstre.h deleted file mode 100644 index f270bef..0000000 --- a/Monstre/Monstre.h +++ /dev/null @@ -1,8 +0,0 @@ -#include -#include - -void DeplacementSbire(struct liste_entite*,int*,int); - -void LigneSbire(struct liste_entite**,int,int); - -void AfficherSbire(struct liste_entite*,int,int,int); -- libgit2 0.21.2