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.
#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; }