Programme jeu Bingo en C.

Fermé
KalenShiv Messages postés 27 Date d'inscription mercredi 23 novembre 2016 Statut Membre Dernière intervention 20 avril 2017 - Modifié le 28 mars 2017 à 17:33
KalenShiv Messages postés 27 Date d'inscription mercredi 23 novembre 2016 Statut Membre Dernière intervention 20 avril 2017 - 31 mars 2017 à 19:05
Bonjour,

J'aimerai réaliser le jeu Bingo en C. Je tiens d'abord à préciser que je suis débutant en c. J'aimerai savoir comment créer une grille avec les numeros par carte s'il vous plaît. J'ai commencé pour l'instant à coder le tirage de "la boule" pour l'instant.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>   // pour rand

int main(void){

    srand(time(NULL));
    int tirage=rand()%90+1;    //entre 1-9
    printf("%d\n",tirage);
    return 0;
}


Merci de bien vouloir m'aider.

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
Modifié le 28 mars 2017 à 18:51
Bonjour,

Dans une grille, il y a 5 numéro par ligne, et il ne peut y avoir 2 numéro dans la même dizaine pour une ligne, d'où :
void fillGrid( unsigned char grid[2][5] ) {
   for ( int j = 0 ; j < 2 ; ++j ) {     // pour chaque ligne
      for ( int i = 0 ; i < 5 ; ++i ) {  // pour chaque numero de la ligne
         for (;;) {                 // trouver un unique dans sa dizaine
            unsigned char numero = rand()%90+1;
            unsigned char dizaine = numero==90 ? 8 : numero / 10;
            int k;
            for ( k = 0 ;  k < i ; ++k ) { // chercher parmi les precedents
               unsigned char diz = grid[j][k]==90 ? 8 : grid[j][k] / 10;
               if ( diz == dizaine )
                  break;        // dans la même dizaine, pas bon
            }
            if ( k >= i )       // on a tout vérifie sans voir de probleme
               break;           // le numero tire est valide
            // sinon en chercher un autre
         }
         grid[j][i] = numero;
      } // fin chaque numero de la ligne
   } // fin chaque ligne
}
0
KalenShiv Messages postés 27 Date d'inscription mercredi 23 novembre 2016 Statut Membre Dernière intervention 20 avril 2017
28 mars 2017 à 19:03
Bonjour,

Merci infiniment pour ta réponse ! Cependant lorsque j'essaie de compiler avec gcc ça me met comme message d'erreur :

bingo.c: In function ‘fillGrid’:
bingo.c:5:36: warning: implicit declaration of function ‘rand’ [-Wimplicit-function-declaration]
unsigned char numero = rand()%90+1;
^
bingo.c:17:23: error: ‘numero’ undeclared (first use in this function)
grid[j][i] = numero;
^
bingo.c:17:23: note: each undeclared identifier is reported only once for each function it appears in
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101 > KalenShiv Messages postés 27 Date d'inscription mercredi 23 novembre 2016 Statut Membre Dernière intervention 20 avril 2017
28 mars 2017 à 19:35
Mea culpa, numero doit être déclarée avant le for(;;) et initialisée dans le for(;;)
0
Utilisateur anonyme
28 mars 2017 à 19:42
4 for imbriqués, ce code venant directement des enfers
0
KalenShiv Messages postés 27 Date d'inscription mercredi 23 novembre 2016 Statut Membre Dernière intervention 20 avril 2017 > Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023
28 mars 2017 à 20:20
Marche toujours pas, ou alors j'ai pas bien compris l'erreur
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101 > KalenShiv Messages postés 27 Date d'inscription mercredi 23 novembre 2016 Statut Membre Dernière intervention 20 avril 2017
28 mars 2017 à 22:32
#include <stdlib.h>
void fillGrid( unsigned char grid[3][5] ) {
for ( int j = 0 ; j < 3 ; ++j ) {
for ( int i = 0 ; i < 5 ; ++i ) {
unsigned char numero;
for (;;) {
numero = rand()%90+1;
...
0