main.c 3.31 KB
#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;
}