Supprimer un élément d'une grille
KalenShiv
Messages postés
28
Statut
Membre
-
Dalfab Messages postés 720 Statut Membre -
Dalfab Messages postés 720 Statut Membre -
Bonjour,
Je suis actuellement en train de créer le jeu Bingo. J'ai réussi à faire afficher le tirage de la boule mais aussi une grille avec des nombres aléatoires. Cependant je ne sais pas comment à partir de ce programme enlever un élément de la grille si celui ci correspond au nombre tiré.
Règle du jeu bingo : le joueur dispose d'une grille sur laquelle sont notés divers numéros tirés aléatoirement. L'orateur énonce à voix haute les nombres parus à la sortie de l'urne et chaque joueur raye ou non le chiffre s'il apparaît dans sa propre grille. Le premier à avoir rayé tous les nombres d'une même ligne ou d'une même colonne crie « Bingo » pour annoncer qu'il vient de gagner.
PS : Je suis un débutant en C.
Merci d'avance!
Code:
Ce que le programme affiche :
Je suis actuellement en train de créer le jeu Bingo. J'ai réussi à faire afficher le tirage de la boule mais aussi une grille avec des nombres aléatoires. Cependant je ne sais pas comment à partir de ce programme enlever un élément de la grille si celui ci correspond au nombre tiré.
Règle du jeu bingo : le joueur dispose d'une grille sur laquelle sont notés divers numéros tirés aléatoirement. L'orateur énonce à voix haute les nombres parus à la sortie de l'urne et chaque joueur raye ou non le chiffre s'il apparaît dans sa propre grille. Le premier à avoir rayé tous les nombres d'une même ligne ou d'une même colonne crie « Bingo » pour annoncer qu'il vient de gagner.
PS : Je suis un débutant en C.
Merci d'avance!
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int *tirage(int nombre, int min, int max)
{
int *tabelems, *ret, i, indice, maxi = max - min;
if(min >= max || nombre > maxi + 1 || nombre < 1)
return NULL;
tabelems = malloc((maxi + 1) * sizeof(int));
ret = malloc(nombre * sizeof(int));
for(i = 0; i < maxi + 1; i++)
tabelems[i] = i + min;
for(i = 0; i < nombre; i++){
indice = rand() % (maxi + 1);
ret[i] = tabelems[indice];
tabelems[indice] = tabelems[maxi];
maxi--;
}
free(tabelems);
return ret;
}
int *tirage(int nombre, int min, int max);
int compare(int tabl[45], int nombre , int taille);
int main ()
{
int i,j,*tab;
int nb = 5;
int tableau[45];
int tire;
//On affiche la grille
printf("+----+----+----+----+----+\n");
srand(time(NULL));
for(j = 0; j < 5; j++)
{
printf("|");
if((tab = tirage(nb, 10, 45)))
{
for(i = 0; i < nb; i++)
printf(" %d |", tab[i]);
printf("\n+----+----+----+----+----+\n");
printf("\n");
free(tab);
}
}
//Initialisation de la semence
srand ( time(NULL) );
system("PAUSE");//fait une pause
for(i=10;i<45;i++) //boucle pour i de 0 à 45
{
do{
tire= 10+rand() % 45;
}while (compare(tableau,tire,i));
tableau[i] = tire;
printf ("Le nombre de la boule est : %d \n", tire);
system("PAUSE");
}
return 0;
}
int compare(int tabl[45], int nombre , int taille)
{
int res;
int j;
res = 0;
j=0 ;
do
{
if(tabl[j]==nombre){res=1;}
j++;
}while (res==0 && j<taille);
return res;
}
Ce que le programme affiche :
+----+----+----+----+----+ | 12 | 31 | 28 | 22 | 10 | +----+----+----+----+----+ | 33 | 20 | 45 | 16 | 28 | +----+----+----+----+----+ | 15 | 39 | 36 | 12 | 19 | +----+----+----+----+----+ | 15 | 13 | 14 | 38 | 27 | +----+----+----+----+----+ | 24 | 15 | 39 | 18 | 32 | +----+----+----+----+----+ Appuyez sur une touche pour continuer... Le nombre de la boule est : 48 Appuyez sur une touche pour continuer... Le nombre de la boule est : 41 Appuyez sur une touche pour continuer... Le nombre de la boule est : 30 Appuyez sur une touche pour continuer...
A voir également:
- Supprimer un élément d'une grille
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Impossible de supprimer un fichier - Guide
- Comment supprimer une application préinstallée sur android - Guide
- Supprimer pub youtube - Accueil - Streaming
Oui, il parait logique d'avoir une fonction qui vérifie la condition de gain. On pourrait associer un compteur à chaque ligne et colonne qui serait incrémenté quand un numéro est bon, un simple test indiquerait qu'il y a gain. Ou bien parcourir la ligne et la colonne pour voir s'il y a gain à chaque coup serait surement plus lisible.