Jeu de Pareil candy en langage c

                                                  jeu de Pareil candy 


Fonctionnement

1. Le but du jeu est de faire disparaître tous les objets du tableau tout en faisant le
maximum de points.
2. Le jeu prend fin lorsque tous les objets ont disparu ou lorsqu'il devient
impossible de faire disparaître des objets.
3. Le joueur sélectionne un groupe d'au moins deux éléments en désignant l'un
d'eux.
4. Un groupe sélectionné est mis en évidence au niveau de l'affichage.
5. Sur confirmation du joueur, tous les éléments du groupes disparaissent.
◦ Les objets situés au dessus d'un trou (objet disparu) descendent dans
celui-ci en laissant un trou à leur emplacement initial.
◦ Les colonnes situées à droite d'une colonne ne comportant que des trous
sont déplacées vers la gauche.
6. Le total des points est mis à jour :
◦ L'élimination d'un groupe de n objets rapporte (n-1)*(n-2)/2 points.
7. On revient alors à la phase de sélection.



jeu-de-Pareil-candy-en-langage-c

jeu-de-Pareil-candy-en-langage-c

jeu-de-Pareil-candy-en-langage-c










#include <stdio.h>
#include <stdlib.h>
#include <time.h>

///fonction pour vide la grille
void vid_case(char (*t)[100],int l,int deb,int fin,int lig,int c)
{
    int i,j;
    ///pour deplace les valeurs de grille
    for(i=l-1;i>0;i--)
    {
        for(j=deb;j<=fin;j++)
        {
            t[i][j]=t[i-1][j];

        }
    }
    //////////////
    ///pour replace la fin de grille par vide
    for(j=deb;j<=fin;j++)
        {
            t[0][j]=' ';

        }

     affiche_table(t,lig,c);
}
///pour affiche le grille
void affiche_table(char (*t)[100],int lig,int col)
{
    int i,j;
   for(i=0;i<col;i++){printf("\t%d",i+1);}
           printf("\n----------------------------------------------------------------------\n");

    for(i=0;i<lig;i++){
 printf("%d\t",i+1);
    for(j=0;j<col;j++){
        printf("%c\t",t[i][j]);
    }
          printf("\n----------------------------------------------------------------------\n");
    }
}
///fonction qui return 0 si aucun Group de deux element  existe et 1 si au moins un group existe
int exist_group(char t[100][100],int lig,int col)
{
    int i,j;
    ///boucle sur le nombre de ligne de grille
    for(i=0;i<lig;i++)
    {
        ///boucle sur le nombre des colonnes
        for(j=0;j<col;j++)
        {  ///pour cherche un Group dans la grille
            if((t[i][j]==t[i][j+1])&&t[i][j]!=' ')return 1;
        }
    }
    return 0;
}
///un fonction qui return  debut et  fin de group  selection par le jeur
void is_group(char (*table)[100],char let,int lig_i,int coli,int col,int *deb,int *fin)
{
    int i,j;
    i=coli;
    j=coli;
    ///pour cherche  fin de group
    while((table[lig_i][i]==let)&&(i<col)&&(table[lig_i][i]!=' '))
    {
        *fin=i;
       i++;
    }
/// pour cherche debut de group
    while((table[lig_i][j]==let)&&(j>=0)&&(table[lig_i][i]!=' '))
    {
        *deb=j;
         j--;
    }

}
///pour cree grille
void charge_table(int lig,int col)
{
    char lettre[]={'X','O','H','A'};
    char let_post[100][100];
    int i,j,n;
    printf("\n\n\n\n");
    for(i=0;i<col;i++){printf("\t%d",i+1);}
           printf("\n----------------------------------------------------------------------\n");
            srand(time(NULL));
    for(i=0;i<lig;i++){
 printf("%d\t",i+1);
    for(j=0;j<col;j++){
             n= rand()%4;///fonction rand return 0 a 3
         let_post[i][j]=lettre[n];
        printf("%c\t",let_post[i][j]);
    }
          printf("\n----------------------------------------------------------------------\n");
    }
int score=0;
int l,c,deb,fin;
char let,but[2];
///jusqu'un la fin de jeu elle boucle
do{
    deb=0;
    fin=0;
    printf("Score: %d\n",score);
    printf("Selection ligne colonne: ");
    scanf("%d %d",&l,&c);///lire choix de jeur
    let=let_post[l-1][c-1];
    is_group(let_post,let_post[l-1][c-1],l-1,c-1,col,&deb,&fin);///avoir le debut zt la fin
    if((deb==fin)||(l>lig||c>col)){printf("c'est pas un group\n");}/// voir c'est un group de deux element existe
    else {

            printf("Groupe de %d de %c sur la ligne %d a %d et vaut %d points\n",(fin-deb)+1,let,deb,fin,((fin-deb+1)-1)*((fin-deb+1)-2));
            printf("confirmer (y/n) :");
            scanf("%1s",but);
            if(but[0]=='y'){
            vid_case(let_post,l,deb,fin,lig,col);///pour vide le grille
            score+=((fin-deb+1)-1)*((fin-deb+1)-2);///calcule le score
            }
    }

    }while(exist_group(let_post,lig,col));///fin de la boucle jusqu'un aucun group existe
    printf("\t\t Fin de partie ! Votre score %d",score);
    system("pause>null");
}
///fonction pour lire ligne et colonne
void lire_lig_col()
{
    int ligne,colonne;
    printf("Dimensions de la grille :\n");
    printf("Nombre de lignes : ");scanf("%d",&ligne);
    printf("Nombre de colonnes : ");scanf("%d",&colonne);
    charge_table(ligne,colonne);
}
int main()
{
    ///pour donne le titre
system("title Pareil");
lire_lig_col();


    return 0;
}