Commit 590ac30b4c9c25467e3b340ba0493ca2756de189

Authored by Martin CHAUVELIERE
1 parent 65adbf2e

Debut Collision

Collision/Collision.c 0 โ†’ 100644
... ... @@ -0,0 +1,40 @@
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +#include "../Main/init.h"
  4 +#include "../ListeC/Liste.h"
  5 +
  6 +int CheckCollision(struct entite enti1,int L1,int H1,struct entite enti2 ,int L2, int H2)
  7 +{
  8 + //CheckX
  9 + int gauche1 = enti1.posx-L1;
  10 + int droite1 = enti1.posx+L1;
  11 + int gauche2 = enti2.posx-L2;
  12 + int droite2 = enti2.posx+L2;
  13 + int CheckX=0;
  14 + if(gauche1 >= gauche2 && gauche1 <= droite2)
  15 + {
  16 + CheckX=1;
  17 + }
  18 + else if(droite1 >= gauche2 && droite1 <= droite2)
  19 + {
  20 + CheckX=1;
  21 + }
  22 +
  23 + //CheckY
  24 + int haut1 = enti1.posy-H1;
  25 + int bas1 = enti1.posy+H1;
  26 + int haut2 = enti2.posy-H2;
  27 + int bas2 = enti2.posy+H2;
  28 + int CheckY=0;
  29 + if(haut1 >= bas2 && haut1 <= haut2)
  30 + {
  31 + CheckY=1;
  32 + }
  33 + else if(bas1 >= bas2 && bas1 <= haut2)
  34 + {
  35 + CheckY=1;
  36 + }
  37 +
  38 + if(CheckX+CheckY==2){return 1;}
  39 + return 0;
  40 +}
... ...
Collision/Collision.h 0 โ†’ 100644
... ... @@ -0,0 +1,4 @@
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +
  4 +void CheckCollision();
... ...
Interactif/Interactif.c 0 โ†’ 100644
... ... @@ -0,0 +1,60 @@
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +#include "../Graphique/libgraph.h"
  4 +#include "../ListeC/Liste.h"
  5 +#include "Interactif.h"
  6 +
  7 +#define TailleX 500
  8 +#define TailleY 500
  9 +
  10 +void Tirer(struct entite joueur, struct liste_entite **pl)
  11 +{
  12 + struct liste_entite *ml=*pl;
  13 + if (ml==NULL)
  14 + {
  15 + ajout_tete(pl,creer_entite(joueur.posx+18,joueur.posy-5,0));
  16 + }
  17 +}
  18 +
  19 +
  20 +void DeplacementTire(int tire, int explo, struct liste_entite **l)
  21 +{
  22 + struct liste_entite *ml = *l;
  23 + while (ml != NULL)
  24 + {
  25 + if (ml->enti.posy <= 0)
  26 + {
  27 + *l = NULL;
  28 + afficherLutin(explo, ml->enti.posx-20, ml->enti.posy);
  29 + break;
  30 + }
  31 + else
  32 + {
  33 + ml->enti.posy -= 5;
  34 + afficherLutin(tire, ml->enti.posx, ml->enti.posy);
  35 + ml = ml->suivant;
  36 + }
  37 + }
  38 +}
  39 +
  40 +
  41 +char touche()
  42 +{
  43 + char touche;
  44 + evenement even;
  45 + lireEvenement (&even,&touche,NULL);
  46 + return touche;
  47 +}
  48 +
  49 +void action(struct entite *joueur,char c,struct liste_entite **tires)
  50 +{
  51 + if(c=='d')
  52 + {
  53 + if (joueur->posx<=9*TailleX/10) {joueur->posx+=3;}
  54 + }
  55 + if(c=='q')
  56 + {
  57 + if (joueur->posx>=TailleX/10) {joueur->posx-=3;}
  58 + }
  59 + if(c=='t'){Tirer(*joueur,tires);}
  60 +}
... ...
Interactif/Interactif.h 0 โ†’ 100644
... ... @@ -0,0 +1,10 @@
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +
  4 +void Tirer(struct entite, struct liste_entite**);
  5 +
  6 +void DeplacementTire(int,int,struct liste_entite**);
  7 +
  8 +char touche();
  9 +
  10 +void action(struct entite*,char,struct liste_entite**);
... ...
Main/Makefile
... ... @@ -11,15 +11,18 @@ Liste.o : ../ListeC/Liste.c ../ListeC/Liste.h
11 11 Monstre.o : ../Monstre/Monstre.c ../Monstre/Monstre.h ../ListeC/Liste.h
12 12 clang $(CFLAGS) -c ../Monstre/Monstre.c
13 13  
14   -Missile.o : ../Missile/Missile.c ../Missile/Missile.h ../ListeC/Liste.h
15   - clang $(CFLAGS) -c ../Missile/Missile.c
  14 +Interactif.o : ../Interactif/Interactif.c ../Interactif/Interactif.h ../ListeC/Liste.h
  15 + clang $(CFLAGS) -c ../Interactif/Interactif.c
16 16  
  17 +init.o : init.c init.h ../ListeC/Liste.h
  18 + clang $(CFLAGS) -c init.c
  19 +
17 20 main.o : main.c ../ListeC/Liste.h
18 21 clang $(CFLAGS) -c main.c
19 22  
20 23  
21   -$(TARGET): Liste.o main.o Monstre.o Missile.o
22   - clang main.o Liste.o Monstre.o Missile.o -o $(TARGET) $(LDFLAGS)
  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)
23 26  
24 27 .PHONY: clean
25 28 clean:
... ...
Main/init.c 0 โ†’ 100644
... ... @@ -0,0 +1,52 @@
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +#include "../Graphique/libgraph.h"
  4 +#include "../ListeC/Liste.h"
  5 +#include "init.h"
  6 +
  7 +#define TailleX 500
  8 +#define TailleY 500
  9 +
  10 +int canon;
  11 +int missile;
  12 +int sbire;
  13 +int bouillie;
  14 +
  15 +struct liste_entite *enemies = NULL;
  16 +struct liste_entite *tires = NULL;
  17 +struct entite joueur;
  18 +
  19 +char Nom[20]="Space_Invader";
  20 +char input='\0';
  21 +
  22 +int hitboxcanonL;
  23 +int hitboxcanonH;
  24 +int hitboxmissileL;
  25 +int hitboxmissileH;
  26 +int hitboxsbireL;
  27 +int hitboxsbireH;
  28 +
  29 +void initialiser()
  30 +{
  31 + canon = chargerLutin("../../Lutins/invader_canon.bmp",COULEUR_NOIR);
  32 + missile = chargerLutin("../../Lutins/invader_missile.bmp",COULEUR_NOIR);
  33 + sbire = chargerLutin("../../Lutins/invader_monstre1_1.bmp",COULEUR_NOIR);
  34 + bouillie = chargerLutin("../../Lutins/invader_monstre_bouillie.bmp",COULEUR_NOIR);
  35 +
  36 + int* hitboxL=&hitboxcanonL;
  37 + int* hitboxH=&hitboxcanonH;
  38 + tailleLutin(canon,hitboxL,hitboxH);
  39 + hitboxL=&hitboxmissileL;
  40 + hitboxH=&hitboxmissileH;
  41 + tailleLutin(canon,hitboxL,hitboxH);
  42 + hitboxL=&hitboxsbireL;
  43 + hitboxH=&hitboxsbireH;
  44 + tailleLutin(sbire,hitboxL,hitboxH);
  45 +
  46 +#define JoueurX TailleX/2-hitboxcanonL/2
  47 +#define JoueurY 9*TailleY/10
  48 +
  49 + joueur.posx = JoueurX;
  50 + joueur.posy = JoueurY ;
  51 +}
  52 +
... ...
Main/init.h 0 โ†’ 100644
... ... @@ -0,0 +1,21 @@
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +
  4 +extern int canon;
  5 +extern int missile;
  6 +extern int sbire;
  7 +extern int bouillie;
  8 +extern struct liste_entite *enemies;
  9 +extern struct liste_entite *tires;
  10 +extern struct entite joueur;
  11 +extern char Nom[20];
  12 +extern char input;
  13 +extern int hitboxcanonL;
  14 +extern int hitboxcanonH;
  15 +extern int hitboxmissileL;
  16 +extern int hitboxmissileH;
  17 +extern int hitboxsbireL;
  18 +extern int hitboxsbireH;
  19 +
  20 +void initialiser();
  21 +
... ...
Main/main.c
1 1 #include <stdio.h>
  2 +#include <stdlib.h>
2 3 #include <unistd.h>
3 4 #include <SDL/SDL.h>
4 5 #include "../Graphique/libgraph.h"
5 6 #include "../ListeC/Liste.h"
6 7 #include "../Monstre/Monstre.h"
7   -#include "../Missile/Missile.h"
  8 +#include "../Interactif/Interactif.h"
  9 +#include "init.h"
8 10  
9 11 #define TailleX 500
10 12 #define TailleY 500
11   -//clang Try.c -I Graphique -l graph -L Graphique -l SDL -l SDL_ttf
  13 +#define Sol 475
12 14  
13   -
14   -char touche()
  15 +int CheckCollision(struct entite enti1,int L1,int H1,struct entite enti2 ,int L2, int H2)
15 16 {
16   - char touche;
17   - evenement even;
18   - lireEvenement (&even,&touche,NULL);
19   - return touche;
  17 + //CheckX
  18 + int gauche1 = enti1.posx-L1;
  19 + int droite1 = enti1.posx+L1;
  20 + int gauche2 = enti2.posx-L2;
  21 + int droite2 = enti2.posx+L2;
  22 + int CheckX=0;
  23 + if(gauche1 >= gauche2 && gauche1 <= droite2)
  24 + {
  25 + CheckX=1;
  26 + }
  27 + else if(droite1 >= gauche2 && droite1 <= droite2)
  28 + {
  29 + CheckX=1;
  30 + }
  31 +
  32 + //CheckY
  33 + int haut1 = enti1.posy-H1;
  34 + int bas1 = enti1.posy+H1;
  35 + int haut2 = enti2.posy-H2;
  36 + int bas2 = enti2.posy+H2;
  37 + int CheckY=0;
  38 + if(haut1 >= bas2 && haut1 <= haut2)
  39 + {
  40 + CheckY=1;
  41 + }
  42 + else if(bas1 >= bas2 && bas1 <= haut2)
  43 + {
  44 + CheckY=1;
  45 + }
  46 +
  47 + if(CheckX+CheckY==2){return 1;}
  48 + return 0;
20 49 }
21 50  
22   -void action(struct entite *joueur,char c,struct liste_entite **tires)
  51 +int main()
23 52 {
24   - if(c=='d'){joueur->posx+=3;}
25   - if(c=='q'){joueur->posx-=3;}
26   - if(c=='t'){Tirer(*joueur,tires);}
27   -}
  53 + creerSurface(TailleX,TailleY,Nom);
28 54  
  55 + initialiser();
29 56  
30   -int main()
31   -{
32   - struct liste_entite *enemies = NULL;
33   - creer_liste(enemies);
34   - ajout_tete(&enemies,creer_entite(50,50,0));
35   - ajout_tete(&enemies,creer_entite(150,50,0));
36   - ajout_tete(&enemies,creer_entite(250,50,0));
37   - imprimer_liste(enemies);
38   - int sens=1;
39   - int *psens=&sens;
  57 + char texte[15]="SCORE : ";
  58 + int Score = lutinTexte(texte,COULEUR_ROUGE);
40 59  
41   - struct entite joueur;
42   - joueur.posx=225;
43   - joueur.posy=470;
44   - int canon = chargerLutin("../../Lutins/invader_canon.bmp",COULEUR_NOIR);
45   -
46   - struct liste_entite *tires = NULL;
  60 + creer_liste(enemies);
47 61 creer_liste(tires);
48   - //Tirer(joueur,&tires);
49   - //imprimer_liste(tires);
50   - int missile = chargerLutin("../../Lutins/invader_missile.bmp",COULEUR_NOIR);
51 62  
52   - char Nom[20]="PremiereFenetre";
53   - creerSurface(TailleX,TailleY,Nom);
54   - int lulu = chargerLutin("../../Lutins/invader_monstre1_1.bmp",COULEUR_NOIR);
  63 + Ligne_Monstre(&enemies,5);
  64 + int SensVague=1;
  65 + int *psens=&SensVague;
  66 +
  67 + printf("%d",hitboxcanonL);
  68 + printf("%d",hitboxsbireL);
  69 + printf("%d",hitboxmissileL);
55 70  
56   - while(1)
  71 + while(input!='m')
57 72 {
  73 + rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR);
  74 + rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT);
  75 +
58 76 afficherLutin(canon,joueur.posx,joueur.posy);
59   - DeplacementLutin(lulu,enemies,psens,1);
  77 + DeplacementLutin(sbire,enemies,psens,1);
  78 +
  79 +
  80 + input = touche();
  81 + action(&joueur,input,&tires);
  82 +
  83 + DeplacementTire(missile,bouillie,&tires);
60 84  
61   - char c = touche();
62   - action(&joueur,c,&tires);
  85 + /* Test
  86 + struct entite missile1 = &tires->enti;
  87 +
  88 + struct liste_entite *p;
  89 + p = enemies;
  90 + while (p != NULL)
  91 + {
  92 + int ok = CheckCollision(missile1,hitboxmissileL,hitboxmissileH,p->enti,hitboxsbireL,hitboxsbireH);
  93 + printf("%d \n",ok);
  94 + p=p->suivant;
  95 + }
  96 + */
  97 + afficherLutin(Score,0,Sol);
63 98  
64   - DeplacementTire(missile,tires);
65   -
66 99 majSurface();
67   - rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR);
  100 +
68 101 SDL_Delay(20);
69 102 }
70 103 return 0;
... ...
Monstre/Monstre.c
... ... @@ -4,6 +4,9 @@
4 4 #include "../ListeC/Liste.h"
5 5 #include "Monstre.h"
6 6  
  7 +#define TailleX 500
  8 +#define TailleY 500
  9 +
7 10 //sens 1 = Va vers la droite
8 11 void DeplacementLutin(int lutin,struct liste_entite *l, int *psens, int speed)
9 12 {
... ... @@ -14,13 +17,13 @@ void DeplacementLutin(int lutin,struct liste_entite *l, int *psens, int speed)
14 17 if (*psens==1)
15 18 {
16 19 ml->enti.posx+=speed;
17   - if(ml->enti.posx>=450)ind=1;
  20 + if(ml->enti.posx>=9*TailleX/10)ind=1;
18 21 afficherLutin(lutin,ml->enti.posx,ml->enti.posy);
19 22 }
20 23 else
21 24 {
22 25 ml->enti.posx-=speed;
23   - if(ml->enti.posx<=50)ind=2;
  26 + if(ml->enti.posx<=TailleX/10)ind=2;
24 27 afficherLutin(lutin,ml->enti.posx,ml->enti.posy);
25 28 }
26 29 ml=ml->suivant;
... ... @@ -47,3 +50,14 @@ void DeplacementLutin(int lutin,struct liste_entite *l, int *psens, int speed)
47 50 }
48 51 }
49 52  
  53 +
  54 +void Ligne_Monstre(struct liste_entite **enemies,int nbr_enemies)
  55 +{
  56 + int compteurY=TailleY/10;
  57 + int compteurX=TailleX/nbr_enemies;
  58 + for (int i=1; i<=nbr_enemies; i++)
  59 + {
  60 + ajout_tete(enemies,creer_entite(compteurX,compteurY,0));
  61 + compteurX +=2*TailleX/(3*nbr_enemies);
  62 + }
  63 +}
... ...
Monstre/Monstre.h
... ... @@ -2,3 +2,5 @@
2 2 #include <stdlib.h>
3 3  
4 4 void DeplacementLutin(int,struct liste_entite*,int*,int);
  5 +
  6 +void Ligne_Monstre(struct liste_entite**,int);
... ...