init.c 6.5 KB
#include <stdio.h>
#include <stdlib.h>

#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 PositionX_1 (TailleX / 2)
#define PositionY_1 (TailleY / 2)
#define PositionY_2 (TailleY / 4)

#define JoueurX (TailleX / 2)
#define JoueurY (9 * TailleY / 10)

#define Nom "Space Invader"
#define TaillePolice1 (TailleX / 10)
#define TaillePolice2 (TailleX / 20)
#define TailleChaineMax 30

//Ces variables sont globales car utilisées dans plusieurs .c
//Toutes les hitbox sont initialisées 1 fois puis sont des constantes
struct entite joueur;

int  canon           = 0;
int  missile         = 0;
int  enemie          = 0;
int  bouillie        = 0;
int  bombe           = 0;

int  hitboxcanonL    = 0;
int  hitboxcanonH    = 0;
int  hitboxmissileL  = 0;
int  hitboxmissileH  = 0;
int  hitboxenemieL   = 0;
int  hitboxenemieH   = 0;
int  hitboxbouillieL = 0;
int  hitboxbouillieH = 0;
int  hitboxbombeL    = 0;
int  hitboxbombeH    = 0;

//Initialisation des variables globales pour le main
void initialiser()
{
    canon    = chargerLutin ("../../Lutins/invader_canon.bmp",
                             COULEUR_NOIR);
    missile  = chargerLutin ("../../Lutins/invader_missile.bmp",
                             COULEUR_NOIR);
    enemie    = 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 (enemie,
                 &hitboxenemieL,
                 &hitboxenemieH);
    
    tailleLutin (bouillie,
                 &hitboxbouillieL,
                 &hitboxbouillieH);
    
    tailleLutin (bombe,
                 &hitboxbombeL,
                 &hitboxbombeH);

}

//Initialisation des coordonnées du joueur pour le main
void initialiserjoueur()
{
    joueur.posx      = JoueurX;
    joueur.posy      = JoueurY;
    joueur.dropbombe = -1;
}

//Page de démarage du jeu
char pagedemarrage()
{
    static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
    char      input          = '\0';
    evenement even = 0;
    int       Largeur        = 0;
    int       Hauteur        = 0;
    char      jouer[]        = "Appuyer sur j pour Jouer";
    char      quitter[]      = "Appuyer ailleurs pour Quitter";
    
    choisirPolice (policeDefaut, TaillePolice2);
    int  LutinJouer     = lutinTexte (jouer, COULEUR_BLANC);
    int  LutinQuitter   = lutinTexte (quitter, COULEUR_BLANC);
    
    choisirPolice (policeDefaut, TaillePolice1);
    int  LutinBienvenue = lutinTexte (Nom, COULEUR_VERT);
    
    rectanglePlein (0,
                    0,
                    TailleX,
                    TailleY,
                    COULEUR_NOIR);
     
    tailleLutin   (LutinBienvenue,
                   &Largeur,
                   &Hauteur);
    afficherLutin (LutinBienvenue,
                   PositionX_1 - Largeur / 2,
                   PositionY_2 + Hauteur / 2);
    
    tailleLutin   (LutinJouer,
                   &Largeur,
                   &Hauteur);
    afficherLutin (LutinJouer,
                   PositionX_1 - Largeur / 2,
                   PositionY_1 - Hauteur / 2);
    
    tailleLutin   (LutinQuitter,
                   &Largeur,
                   &Hauteur);
    afficherLutin (LutinQuitter,
                   PositionX_1 - Largeur / 2,
                   PositionY_1 + Hauteur / 2);
   
    majSurface();
    attendreEvenement ();
    
    lireEvenement (&even,&input,NULL);
    while (input == '\0')
    {
        lireEvenement (&even,&input,NULL);
    }
    return input;
}

//Page en cas de mort dans le jeu
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[TailleChaineMax]   = "\0";
    sprintf(vie, "Nombre de vie restante : %d", nbr_vie);
    //sprint_f crée un warning mais celui-ci ne peut pas crée d'erreur
    
    choisirPolice (policeDefaut, TaillePolice1);
    int LutinMort  = lutinTexte(mort, COULEUR_ROUGE);
    
    choisirPolice (policeDefaut, TaillePolice2);
    int LutinVie   = lutinTexte(vie, COULEUR_BLANC);
    
    rectanglePlein (0,
                    0,
                    TailleX,
                    TailleY,
                    COULEUR_NOIR);

    tailleLutin   (LutinMort,
                   &Largeur,
                   &Hauteur);
    afficherLutin (LutinMort,
                   PositionX_1 - Largeur / 2,
                   PositionY_2 + Hauteur / 2);
    
    tailleLutin   (LutinVie,
                   &Largeur,
                   &Hauteur);
    afficherLutin (LutinVie,
                   PositionX_1 - Largeur / 2,
                   PositionY_1 - Hauteur / 2);
}

//Page de GameOver du jeu
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, TaillePolice1);
    int LutinFin = lutinTexte(fin, COULEUR_ROUGE);
    
    rectanglePlein (0,
                    0,
                    TailleX,
                    TailleY,
                    COULEUR_NOIR);
    
    tailleLutin   (LutinFin,
                   &Largeur,
                   &Hauteur);
    afficherLutin (LutinFin,
                   PositionX_1 - Largeur / 2,
                   PositionY_1 - Hauteur / 2);
    
}

//Page de Victoire du jeu
void pageVictoire()
{
    static const char policeDefaut[] = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
    int Largeur  = 0;
    int Hauteur  = 0;
    char fin[]   = "VICTOIRE";
    
    choisirPolice(policeDefaut, TaillePolice1);
    int LutinFin = lutinTexte(fin, COULEUR_VERT);
    
    rectanglePlein (0,
                    0,
                    TailleX,
                    TailleY,
                    COULEUR_NOIR);
    
    tailleLutin   (LutinFin,
                   &Largeur,
                   &Hauteur);
    afficherLutin (LutinFin,
                   PositionX_1 - Largeur / 2,
                   PositionY_1 - Hauteur / 2);
    
}