Blame view

main.c 3.31 KB
2e6754df   mahmoudrabia   rapport finale
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
  #include "Graphique/libgraph.h"
  #include <unistd.h>
  #include <stdbool.h>
  #include <SDL/SDL.h>
  #include "liste.h"
  #define  TAILLE_X        700
  #define  TAILLE_Y        700
  #define  LARGEUR_MONS    30
  #define  HAUTEUR_MONS    30
  #define  LARGEUR_VAIS    35
  #define  M_SPEED         5
  #define  CADENCE_MISSILE 600
  #define  HAUTEUR_MONS    30
  #define  LARGEUR_MISS    5
  #define  HAUTEUR_MISS    10
  
  
  
  l_entite* create_l_entite (int x,int y,int speed,int image);
  entite    create_entite  (entite ent,int x,int y, int speed, int image);
  void      add_entite  (l_entite** head,int x,int y,int speed,int image);
  void      display_l_entite    (l_entite* mons);
  void      display_entite      (entite ent);
  void      moveMonster         (l_entite* monstre);
  void      addMissile    (l_entite** head, entite vaisseau,int image);
  void      moveMissile         (l_entite* msl);
  void      remove_missile      (l_entite **head, entite *karim);
  void      detecterCollisions  (l_entite* l_missile, l_entite* l_monstre);
  
  
  int main()
  {
  
    l_entite* W_monster = NULL;
    l_entite* B_monster = NULL;
    l_entite* l_missile = NULL;
    entite    vaisseau;
    entite    missile;
    entite    missile_ref;
    creerSurface(TAILLE_X,TAILLE_Y,"Space Invaders");
  
  
    
    int ZB=lutinTexte("Space invaders", COULEUR_BLEU);
    int M1=chargerLutin("Graphique/invader_monstre1_2.bmp", COULEUR_BLEU);
    int M2=chargerLutin("Graphique/invader_monstre2_1.bmp", COULEUR_BLEU);
    int V =chargerLutin("Graphique/invader_canon.bmp", COULEUR_BLEU);
    int MI =chargerLutin("Graphique/invader_missile.bmp", COULEUR_BLEU);
  
  
  
    W_monster   =create_l_entite(0,0,1,M1);
    B_monster   =create_l_entite(0,100,1,M2);
    vaisseau    =create_entite(vaisseau,0.5*TAILLE_X,0.95*TAILLE_Y,1,V);
    missile_ref =create_entite(missile_ref,vaisseau.x + (LARGEUR_VAIS/2),400,1,MI);
    l_missile   =create_l_entite( vaisseau.x + (LARGEUR_VAIS/2),(vaisseau).y,1,MI);
  
    int i=0;int a =60;
    for (i=0;i<4;i++)
       {  
         add_entite(&W_monster,((W_monster->ent).x)+a,(W_monster->ent).y,1,M1);
         add_entite(&B_monster,((B_monster->ent).x)+a,(B_monster->ent).y,1,M2);
         a+=60;
       }
  
  
      
    while(1)
      {
        evenement ev;
        char      touche;
         l_missile = NULL;
        lireEvenement(&ev,&touche,NULL);
        if(ev==quitter)
  	{break;
  	}
        rectanglePlein (0,0,TAILLE_X,TAILLE_Y,COULEUR_NOIR);
        display_l_entite(W_monster);
        display_l_entite(B_monster);
        display_entite(vaisseau);
        moveMonster( W_monster);
        moveMonster( B_monster);
        
       
         	if (ev == toucheBas && touche == 'm')
  	  {
  	    if( l_missile == NULL)
  	      {
  		 addMissile      (&l_missile, vaisseau,MI);
  	      }
  	    else if( l_missile->ent.y < CADENCE_MISSILE)
  	      {
  		addMissile               (&l_missile, vaisseau,MI);
  	       	
  	      }
  	  }
  	
  	display_l_entite(l_missile);
  	moveMissile(l_missile);
  
  	detecterCollisions( l_missile, B_monster);
         
         if (ev == toucheBas && touche=='d')
  	 {
  	   vaisseau.x=vaisseau.x + 10;
  	   if (vaisseau.x > TAILLE_X - LARGEUR_VAIS)
  	     {
  	       vaisseau.x = vaisseau.x - 10;
  	     }
  
  	 }
  
         if (ev == toucheBas && touche == 'q')
  	 {
  	    vaisseau.x=vaisseau.x - 10;
  	    if (vaisseau.x < 0)
  	     {
  	       vaisseau.x = vaisseau.x + 10;
  	     }
  	 }
       
         
  	   
  
         afficherLutin(ZB,400,400);
         majSurface();
         SDL_Delay(10);
      
      }
    return 0;
  }