diff --git a/Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.c b/Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.c index b7a788d..5b3a639 100644 --- a/Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.c +++ b/Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.c @@ -6,15 +6,18 @@ #include "Interactif.h" #include "../Main/init.h" -#define TailleX 500 -#define TailleY 500 -#define Sol 475 +#define TailleX 500 +#define TailleY 500 +#define Sol 475 #define ErreurHitbox 2 -#define ValeurDeplacementTire 5 +#define TailleX9_10 (9 * TailleX / 10) +#define TailleX1_10 (TailleX / 10) + +#define ValeurDeplacementTire 5 #define ValeurDeplacementJoueur 3 -#define ValeurDeplacementBombe 2 -#define TailleX9_10 9 * TailleX / 10 -#define TailleX1_10 TailleX / 10 +#define ValeurDeplacementBombe 2 + + int CheckCollisionEntiteEntite (struct entite entite1, int L1, @@ -97,7 +100,12 @@ struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, pListe2->entite, L2, H2); - if (collision != NULL) + if (collision == NULL) + { + pListe2 = pListe2->suivant; + } + + else { // Création des structures pour les deux entités struct liste_entite* Entite1 = malloc(sizeof(struct liste_entite)); @@ -113,9 +121,6 @@ struct liste_entite* CheckCollisionListeListe (struct liste_entite* Liste1, return Entite1; } - - else - pListe2 = pListe2->suivant; } return NULL; @@ -161,18 +166,7 @@ void DeplacementTire(struct liste_entite** Liste) } - -//La fonction renvoie la touche préssée -char touche() -{ - char touche; - evenement even; - lireEvenement (&even,&touche,NULL); - return touche; -} - - -//Fais une action soit au joueur soit aux tires selon la touche préssée +//La fonction fait une action soit au joueur soit aux tires selon la touche préssée void action(struct entite* joueur, char c, struct liste_entite** tires) @@ -201,9 +195,11 @@ void action(struct entite* joueur, } //La fonction crée une liste de tout les enemies pouvant drop des bombes -//Puis ajoute à la liste bombe, une bombe random provenant d'un des enemies pouvant drop des bombes -void MakeBombeDroppable (struct liste_entite* enemies, - struct liste_entite** bombes) +//Ceux les plus bas de leur colonne +//Puis ajoute à la liste bombe, une bombe provenant d'un des enemies pouvant drop des bombes +//Le choix de quel enemie drop la bombe est aléatoire +void MakeBombeDrop (struct liste_entite* enemies, + struct liste_entite** bombes) { struct liste_entite* pListe = enemies; @@ -226,9 +222,12 @@ void MakeBombeDroppable (struct liste_entite* enemies, { return; } - + //On choisit une valeur aléatoire qui représente l'enemie qui va drop la bombe + //Il ya un warning comme quoi rand() à une limite + //Mais on ne la dépassera jamais, taille ne pourra + //jamais excédé une vingtaine d'enemies par ligne int randomIndex = rand() % taille-1; - struct liste_entite* pDropable = Dropable; + struct liste_entite* pDropable = Dropable; for (int i = 0; i <= randomIndex; i++) { @@ -241,11 +240,10 @@ void MakeBombeDroppable (struct liste_entite* enemies, -1)); } -// + void DeplacementBombe(struct liste_entite** Liste) { struct liste_entite* pListe = *Liste; - struct liste_entite* precedent = NULL; while (pListe != NULL) { @@ -264,13 +262,13 @@ void DeplacementBombe(struct liste_entite** Liste) afficherLutin(bombe, pListe->entite.posx - hitboxbombeL/2 + ErreurHitbox, pListe->entite.posy - hitboxbombeH/2 + ErreurHitbox); - precedent = pListe; pListe = pListe->suivant; } } } - +//Si un enemie est éliminé et qu'il etait le plus bas de sa colonne (il pouvait drop des bombes) +//Alors si il y en a un l'enemie au dessus de lui (de la meme colonne) peut drop des bombes void NouveauDroppeurBombe (struct liste_entite** liste, struct entite* entite) { @@ -314,7 +312,7 @@ void NouveauDroppeurBombe (struct liste_entite** liste, - +//Fonction principale qui supprime les entités rentrées en collision de leur liste int SupprimerEntitesEnCollision (struct liste_entite** Liste1, int L1, int H1, diff --git a/Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.h b/Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.h index faa140b..e2cefbe 100644 --- a/Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.h +++ b/Space Invader/Envahisseurs/Graphique/src/Interactif/Interactif.h @@ -28,14 +28,12 @@ void Tirer (struct entite joueur, void DeplacementTire(struct liste_entite** Liste); -char touche(); - void action(struct entite* joueur, char c, struct liste_entite** tires); -void MakeBombeDroppable (struct liste_entite* enemies, - struct liste_entite** bombes); +void MakeBombeDrop (struct liste_entite* enemies, + struct liste_entite** bombes); void DeplacementBombe(struct liste_entite** Liste) ; diff --git a/Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.c b/Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.c index 2dc0257..1eb6800 100644 --- a/Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.c +++ b/Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.c @@ -67,3 +67,12 @@ void SupprimerEntite (struct liste_entite** Liste, } } + +//Desallouer une liste entiere +void DesallouerListe (struct liste_entite** Liste) +{ + while(*Liste != NULL) + { + SupprimerEntite(Liste,&((*Liste)->entite)); + } +} diff --git a/Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.h b/Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.h index 490bba6..ba7ef21 100644 --- a/Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.h +++ b/Space Invader/Envahisseurs/Graphique/src/ListeC/Liste.h @@ -29,3 +29,4 @@ void ajout_tete (struct liste_entite** Liste, void SupprimerEntite (struct liste_entite** Liste, struct entite* entite); +void DesallouerListe (struct liste_entite** Liste); diff --git a/Space Invader/Envahisseurs/Graphique/src/Main/Makefile b/Space Invader/Envahisseurs/Graphique/src/Main/Makefile index f209a83..60e8a23 100644 --- a/Space Invader/Envahisseurs/Graphique/src/Main/Makefile +++ b/Space Invader/Envahisseurs/Graphique/src/Main/Makefile @@ -30,5 +30,5 @@ clean: rm -f $(TARGET) tidy : main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c - $(CC)-tidy ../Interactif/Interactif.c --checks="readability-*" -header-filter=.* + $(CC)-tidy main.c ../ListeC/Liste.c ../Monstre/Monstre.c ../Interactif/Interactif.c init.c --checks="*" -header-filter=.* diff --git a/Space Invader/Envahisseurs/Graphique/src/Main/init.c b/Space Invader/Envahisseurs/Graphique/src/Main/init.c index 4b9d011..791f2fa 100644 --- a/Space Invader/Envahisseurs/Graphique/src/Main/init.c +++ b/Space Invader/Envahisseurs/Graphique/src/Main/init.c @@ -6,22 +6,21 @@ #include "../Interactif/Interactif.h" #include "init.h" -#define TailleX 500 -#define TailleY 500 -#define PositionX_1 TailleX / 2 -#define PositionY_1 TailleY / 2 -#define PositionY_2 TailleY / 4 - -#define Sol 475 +#define TailleX 500 +#define TailleY 500 +#define Sol 475 #define ErreurHitbox 2 -#define TailletexteMax 30 +#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 JoueurX (TailleX / 2) +#define JoueurY (9 * TailleY / 10) #define Nom "Space Invader" -#define TaillePolice1 TailleX / 10 -#define TaillePolice2 TailleX / 20 +#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 @@ -29,7 +28,7 @@ struct entite joueur; int canon = 0; int missile = 0; -int sbire = 0; +int enemie = 0; int bouillie = 0; int bombe = 0; @@ -37,8 +36,8 @@ int hitboxcanonL = 0; int hitboxcanonH = 0; int hitboxmissileL = 0; int hitboxmissileH = 0; -int hitboxsbireL = 0; -int hitboxsbireH = 0; +int hitboxenemieL = 0; +int hitboxenemieH = 0; int hitboxbouillieL = 0; int hitboxbouillieH = 0; int hitboxbombeL = 0; @@ -51,7 +50,7 @@ void initialiser() COULEUR_NOIR); missile = chargerLutin ("../../Lutins/invader_missile.bmp", COULEUR_NOIR); - sbire = chargerLutin ("../../Lutins/invader_monstre1_1.bmp", + enemie = chargerLutin ("../../Lutins/invader_monstre1_1.bmp", COULEUR_NOIR); bouillie = chargerLutin ("../../Lutins/invader_monstre_bouillie.bmp", COULEUR_NOIR); @@ -66,9 +65,9 @@ void initialiser() &hitboxmissileL, &hitboxmissileH); - tailleLutin (sbire, - &hitboxsbireL, - &hitboxsbireH); + tailleLutin (enemie, + &hitboxenemieL, + &hitboxenemieH); tailleLutin (bouillie, &hitboxbouillieL, @@ -81,22 +80,23 @@ void initialiser() } //Initialisation des coordonnées du joueur pour le main -void initialiserjoueur(struct entite* joueur) +void initialiserjoueur() { - joueur->posx = JoueurX; - joueur->posy = JoueurY; - joueur->dropbombe = -1; + 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'; - int Largeur = 0; - int Hauteur = 0; - char jouer[] = "Appuyer sur j pour Jouer"; - char quitter[] = "Appuyer ailleurs pour Quitter"; + 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); @@ -135,10 +135,10 @@ char pagedemarrage() majSurface(); attendreEvenement (); - input = touche(); + lireEvenement (&even,&input,NULL); while (input == '\0') { - input = touche(); + lireEvenement (&even,&input,NULL); } return input; } @@ -150,7 +150,7 @@ void pagemort (int nbr_vie) int Largeur = 0; int Hauteur = 0; char mort[] = "Vous etes mort"; - char vie[TailletexteMax] = "\0"; + 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 diff --git a/Space Invader/Envahisseurs/Graphique/src/Main/init.h b/Space Invader/Envahisseurs/Graphique/src/Main/init.h index dfdcd83..525eca4 100644 --- a/Space Invader/Envahisseurs/Graphique/src/Main/init.h +++ b/Space Invader/Envahisseurs/Graphique/src/Main/init.h @@ -3,7 +3,7 @@ extern int canon; extern int missile; -extern int sbire; +extern int enemie; extern int bouillie; extern int bombe; @@ -15,15 +15,15 @@ extern int hitboxcanonL; extern int hitboxcanonH; extern int hitboxmissileL; extern int hitboxmissileH; -extern int hitboxsbireL; -extern int hitboxsbireH; +extern int hitboxenemieL; +extern int hitboxenemieH; extern int hitboxbouillieL; extern int hitboxbouillieH; extern int hitboxbombeL; extern int hitboxbombeH; void initialiser(); -void initialiserjoueur(struct entite* joueur); +void initialiserjoueur(); char pagedemarrage(); void pagemort(int nbr_vie); void pageGameOver(); diff --git a/Space Invader/Envahisseurs/Graphique/src/Main/main.c b/Space Invader/Envahisseurs/Graphique/src/Main/main.c index deed538..a31d8ec 100644 --- a/Space Invader/Envahisseurs/Graphique/src/Main/main.c +++ b/Space Invader/Envahisseurs/Graphique/src/Main/main.c @@ -8,40 +8,58 @@ #include "../Interactif/Interactif.h" #include "init.h" -#define TailleX 500 -#define TailleY 500 -#define Sol 475 +#define TailleX 500 +#define TailleY 500 +#define Sol 475 +#define EpaisseurSol 2 #define ErreurHitbox 2 -#define Nom "Space Invader" +#define Nom "Space Invader" +#define NombreEnemieParLigne 8 +#define NombreLigneEnemies 3 +#define NombreVie 3 + +#define BombeRandomFixe 50 +#define BombeRandomAlea 30 + +#define VitesseTourdeBoucle 20 +#define VitesseDeplacementEnemie 2 + +#define Delai0_2s 200 +#define Delai0_5s 500 +#define Delai2s 2000 int main() { creerSurface(TailleX,TailleY,Nom); initialiser(); - initialiserjoueur(&joueur); + initialiserjoueur(); - 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* ListeEnemies = NULL; + struct liste_entite* ListeTires = NULL; + struct liste_entite* ListeBombes = NULL; + + //joueur est dans une liste afin d'utiliser des fonctions deja crée struct liste_entite* Ljoueur = NULL; ajout_tete(&Ljoueur,joueur); - LigneSbire(&enemies,8,3); + LigneEnemie(&ListeEnemies,NombreEnemieParLigne,NombreLigneEnemies); int SensVague=1; - char input = '\0'; - int compteur = 0; - int DropAlea = 0; - int CheckAlea = 0; - int mort = 0; - int nbr_vie = 3; + char input = '\0'; + int TourdeBoucle = 0; + int TimeAlea = 0; + int CheckAlea = 0; + int mort = 0; + int nbr_vie = NombreVie; + evenement even = 0; int coeur = chargerLutin ("../../Lutins/Coeur.bmp", COULEUR_NOIR); - int hitboxcoeurL,hitboxcoeurH; + int hitboxcoeurL = 0; + int hitboxcoeurH = 0; + tailleLutin (coeur, &hitboxcoeurL, &hitboxcoeurH); @@ -50,105 +68,151 @@ int main() { return 0; } - SDL_Delay(500); + SDL_Delay(Delai0_5s); //Bouble principale while(input!='m') { + //Si le joueur est mort if (mort == 1) { nbr_vie-=1; + //Si il lui reste des vies if (nbr_vie > 0) { pagemort(nbr_vie); majSurface(); - SDL_Delay(2000); + SDL_Delay(Delai2s); mort = 0; } + //Si il n'a plus de vie else { pageGameOver(); majSurface(); - SDL_Delay(2000); + SDL_Delay(Delai2s); return 0; } + //On ajoute de nouveau le joueur précedement supprimé à sa liste ajout_tete(&Ljoueur,joueur); - tires = NULL; - bombes = NULL; + DesallouerListe(&ListeTires); + DesallouerListe(&ListeBombes); } - rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR); + //Affichage Rectangle Noir sur toute la page + rectanglePlein(0, + 0, + TailleX, + TailleY, + COULEUR_NOIR); - if (nbr_vie == 3) - { - afficherLutin(coeur,Sol-2*hitboxcoeurL,Sol); - } - if (nbr_vie >= 2) + //Affichage des coeurs de vie + for (int i = 1 ; i <= nbr_vie; i++) { - afficherLutin(coeur,Sol-hitboxcoeurL,Sol); + afficherLutin(coeur, + TailleX - i * hitboxcoeurL, + Sol); } - afficherLutin(coeur,Sol,Sol); - rectanglePlein(0,Sol,TailleX,2,COULEUR_VERT); + //Affichage du Sol + rectanglePlein(0, + Sol, + TailleX, + EpaisseurSol, + COULEUR_VERT); + //Affichage du joueur + afficherLutin(canon, + Ljoueur->entite.posx - hitboxcanonL/2 + ErreurHitbox, + Ljoueur->entite.posy); - afficherLutin(canon,Ljoueur->entite.posx - hitboxcanonL/2 + ErreurHitbox,Ljoueur->entite.posy); - AfficherSbire(enemies,sbire,hitboxsbireL,hitboxsbireH); + //Affichage des ListeEnemies + AfficherEnemie(ListeEnemies, + enemie, + hitboxenemieL, + hitboxenemieH); - if (DropAlea == 0) + //Systeme pour faire drop une bombe dans un temps aléatoire + //Mise en place d'un timer + //TimeAlea représente le nombre de tour de boucle à éffectuer + if (TimeAlea == 0) { - DropAlea = rand() % 31 + 100; + //50 tour de boucle minimum + une valeur de 0 à 31 + TimeAlea = rand() % BombeRandomAlea + BombeRandomFixe; + //Il y a un warning car rand() à une valeur limite que l'on ne dépasse pas } - if (CheckAlea == DropAlea) + //CheckAlea est incrémenté de 1 à chaque tour de boucle + //Lorsque celui ci vaut TimeAlea on peut drop une bombe + //On reset à 0 le Timer et le Check aprés avoir Drop une bombe + if (CheckAlea == TimeAlea) { - MakeBombeDroppable(enemies,&bombes); - DropAlea=0; + MakeBombeDrop(ListeEnemies, + &ListeBombes); + TimeAlea=0; CheckAlea=0; } + //Gestion des evenements clavier + //On ne peut appuyer que sur une seule touche à la fois + lireEvenement (&even, + &input, + NULL); + if (even == toucheBas) + { + action(&Ljoueur->entite, + input, + &ListeTires); + } - input = touche(); - action(&Ljoueur->entite,input,&tires); - - - if (compteur==2) + //Deplacement des enemies tout les X tours de boucle + if (TourdeBoucle == VitesseDeplacementEnemie) { - DeplacementSbire(enemies,&SensVague,1); - compteur=0; + DeplacementEnemie(ListeEnemies, + &SensVague, + 1); + TourdeBoucle = 0; } - DeplacementTire(&tires); - DeplacementBombe(&bombes); + //Deplacement des Tires et Bombes + DeplacementTire(&ListeTires); + DeplacementBombe(&ListeBombes); - SupprimerEntitesEnCollision(&tires,hitboxmissileL,hitboxmissileH,&enemies,hitboxsbireL,hitboxsbireH); + //Supression si collision des Tires et Enemies + SupprimerEntitesEnCollision(&ListeTires,hitboxmissileL,hitboxmissileH,&ListeEnemies,hitboxenemieL,hitboxenemieH); - if (SupprimerEntitesEnCollision(&bombes,hitboxbombeL,hitboxbombeH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1) + //Supression si collision des Bombes et Joueur + if (SupprimerEntitesEnCollision(&ListeBombes,hitboxbombeL,hitboxbombeH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1) { mort = 1; majSurface(); - SDL_Delay(200); + SDL_Delay(Delai0_2s); } - if (SupprimerEntitesEnCollision(&enemies,hitboxsbireL,hitboxsbireH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1) + + //Supression si collision des Enemies et Joueur + if (SupprimerEntitesEnCollision(&ListeEnemies,hitboxenemieL,hitboxenemieH,&Ljoueur,hitboxcanonL,hitboxcanonH) == 1) { pageGameOver(); majSurface(); - SDL_Delay(2000); + SDL_Delay(Delai2s); return 0; } - if (enemies == NULL) + //Si il n'y a plus d'enemies, c'est une victoire !!! + if (ListeEnemies == NULL) { pageVictoire(); majSurface(); - SDL_Delay(2000); + SDL_Delay(Delai2s); return 0; } + majSurface(); - SDL_Delay(20); - compteur += 1; + TourdeBoucle += 1; CheckAlea += 1; + + SDL_Delay(VitesseTourdeBoucle); } return 0; diff --git a/Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.c b/Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.c index a285fca..d1f3d06 100644 --- a/Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.c +++ b/Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.c @@ -5,19 +5,19 @@ #include "../ListeC/Liste.h" #include "Monstre.h" -#define TailleX 500 -#define TailleY 500 +#define TailleX 500 +#define TailleY 500 #define ErreurHitbox 2 -#define Taille1_10 TailleX / 10 -#define Taille9_10 9 * TailleX / 10 +#define Taille1_10 (TailleX / 10) +#define Taille9_10 (9 * TailleX / 10) #define TailleJump 30 //Sens = 1 -> Va vers la droite //Sens = 0 -> Va vers la gauche -void DeplacementSbire(struct liste_entite* Liste, +void DeplacementEnemie(struct liste_entite* Liste, int* SensDeplacement, - int Vitesse) + int Pas) { int ind = 0; @@ -25,7 +25,7 @@ void DeplacementSbire(struct liste_entite* Liste, while (pListe != NULL) { - pListe->entite.posx += (*SensDeplacement == 1) ? Vitesse : -Vitesse; + pListe->entite.posx += (*SensDeplacement == 1) ? Pas : -Pas; if (pListe->entite.posx >= Taille9_10) { ind = 1; @@ -53,7 +53,7 @@ void DeplacementSbire(struct liste_entite* Liste, } //Création de lignes d'entités enemies dans la liste enemies -void LigneSbire (struct liste_entite** ListeSbire, +void LigneEnemie (struct liste_entite** ListeEnemie, int nbr_enemies, int nbr_rangee) { @@ -67,7 +67,7 @@ void LigneSbire (struct liste_entite** ListeSbire, { if (j == nbr_rangee) { - ajout_tete(ListeSbire, + ajout_tete(ListeEnemie, creer_entite(compteurX, compteurY, 1)); @@ -76,7 +76,7 @@ void LigneSbire (struct liste_entite** ListeSbire, else { - ajout_tete(ListeSbire, + ajout_tete(ListeEnemie, creer_entite(compteurX, compteurY, 0)); @@ -87,7 +87,7 @@ void LigneSbire (struct liste_entite** ListeSbire, } //Affichage des enemies centrés dans leur hitbox -void AfficherSbire (struct liste_entite* Liste, +void AfficherEnemie (struct liste_entite* Liste, int lutin, int Largeur, int Hauteur) diff --git a/Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.h b/Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.h index 4a8f800..cfd84ca 100644 --- a/Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.h +++ b/Space Invader/Envahisseurs/Graphique/src/Monstre/Monstre.h @@ -1,15 +1,15 @@ #include #include -void DeplacementSbire(struct liste_entite* Liste, +void DeplacementEnemie(struct liste_entite* Liste, int* SensDeplacement, - int Vitesse); + int Pas); -void LigneSbire (struct liste_entite** ListeSbire, +void LigneEnemie (struct liste_entite** ListeEnemie, int nbr_enemies, int nbr_rangee); -void AfficherSbire (struct liste_entite* Liste, +void AfficherEnemie (struct liste_entite* Liste, int lutin, int Largeur, int Hauteur); -- libgit2 0.21.2