main.c 2.72 KB
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <SDL/SDL.h>
#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;

    if (pagedemarrage() != 'j')
    {
        return 0;
    }
    
    //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();
        action(&Ljoueur->entite,input,&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);
        }
        
        majSurface();
        SDL_Delay(20);
        
        compteur+=1;
        CheckAlea+=1;
    }
    return 0;
}