Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: zkraven en 28 Abril 2018, 19:23 pm



Título: Juego de Bingo
Publicado por: zkraven en 28 Abril 2018, 19:23 pm
Hola, la duda que tengo es cómo generar los dos modos de juego; automático y manual. En el automático se lanzarían todos las bolas finalizaría cuando un cartón de los pedidos cantase bingo. El manual se ejecutaría bola a bola, pidiendo una intervención del usuario. Al finalizar se deben mostrar los cartones con linea cantada, bingo y los números que hayan salido a lo largo del juego.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void generar(int matriz[][9]);
  5. void imprimir(int matriz[][9]);
  6. void huecos(int matriz[][9], int fila);
  7.  
  8. typedef struct{
  9.    int numeros[3][9];
  10. }Carton;
  11.  
  12. typedef struct{
  13.    Carton * juego;
  14.    int numeroCartones;
  15. }Bingo;
  16.  
  17. typedef struct{
  18.    int bola;
  19. }Numeros;
  20.  
  21. void inicializarBingo(Bingo * miJuego)
  22. {
  23.    int i,j,k;
  24.    int filas;
  25.    int columnas;
  26.    int fila;
  27.    int matriz[3][9];
  28.  
  29.    printf("\nCuantos cartones desea generar: ");
  30.    scanf ("%d", &(miJuego->numeroCartones));
  31.    miJuego->juego=(Carton*)malloc(sizeof(Carton)*miJuego->numeroCartones);
  32.  
  33.    for(i=0;i<miJuego->numeroCartones;i++)
  34.    {
  35.    for(columnas=0;columnas<9;columnas++)
  36.    {
  37.    do{
  38.  
  39.        for(filas=0;filas<3;filas++)
  40.        {
  41.            switch (columnas)
  42.            {
  43.                case 0:
  44.                    matriz[filas][columnas] = 1 + rand() % (10 + 1 - 1);
  45.                    break;
  46.                case 1:
  47.                    matriz[filas][columnas] = 11 + rand() % (20 + 1 - 11);
  48.                    break;
  49.                case 2:
  50.                    matriz[filas][columnas] = 21 + rand() % (30 + 1 - 21);
  51.                    break;
  52.                case 3:
  53.                    matriz[filas][columnas] = 31 + rand() % (40 + 1 - 31);
  54.                    break;
  55.                case 4:
  56.                    matriz[filas][columnas] = 41 + rand() % (50 + 1 - 41);
  57.                    break;
  58.                case 5:
  59.                    matriz[filas][columnas] = 51 + rand() % (60 + 1 - 51);
  60.                    break;
  61.                case 6:
  62.                    matriz[filas][columnas] = 61 + rand() % (70 + 1 - 61);
  63.                    break;
  64.                case 7:
  65.                    matriz[filas][columnas] = 71 + rand() % (80 + 1 - 71);
  66.                    break;
  67.                case 8:
  68.                    matriz[filas][columnas] = 81 + rand() % (90 + 1 - 81);
  69.                    break;
  70.                }
  71.            }
  72.        }while((matriz[0][columnas]== matriz[1][columnas]) ||
  73.               (matriz[0][columnas]==matriz[2][columnas]) ||
  74.               (matriz[1][columnas]== matriz[2][columnas])||
  75.               (matriz[0][columnas]>matriz[1][columnas])||
  76.               (matriz[1][columnas]>matriz[2][columnas]));
  77.    }
  78.    huecos(matriz, 0);
  79.    huecos(matriz, 1);
  80.    huecos(matriz, 2);
  81.  
  82.    for(k=0;k<3;k++)
  83.        {
  84.            for(j=0;j<9;j++)
  85.            {
  86.                ((miJuego->juego)[i]).numeros[k][j] = matriz[k][j];
  87.            }
  88.        }
  89.    }
  90. }
  91.  
  92.  
  93. void mostrar(Bingo miJuego)
  94. {
  95.    int matriz[3][9];
  96.    int i = 0, j = 0, k = 0;
  97.    srand(time(NULL));
  98.    printf("\nTus cartones son los siguientes: ");
  99.    for(i=0;i<miJuego.numeroCartones;i++)
  100.    {
  101.        printf("\n\nCarton numero %d:",i+1);
  102.        printf("\n");
  103.        printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n"
  104.       ,201,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,
  105.       205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,
  106.       205,205,205,205,205,205,205,205,205,205,205,
  107.       205,205,205,205,205,205,205,205,205,187);
  108.    int filas;
  109.    for(filas=0;filas<3;filas++)
  110.    {
  111.    int columnas;
  112.        for(columnas=0;columnas<9;columnas++)
  113.        {
  114.            if (((miJuego.juego)[i]).numeros[filas][columnas]==-1)
  115.                printf("%c_%c%c_%c",186,176,176,186);
  116.  
  117.            else if (columnas == 0 && matriz[filas][0]!=10)
  118.                printf("%c__%i_%c", 186,((miJuego.juego)[i]).numeros[filas][columnas],186);
  119.  
  120.            else
  121.                printf("%c_%i_%c", 186,((miJuego.juego)[i]).numeros[filas][columnas],186);
  122.        }
  123.        printf("\n");
  124.    }
  125.    printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n"
  126.        ,200,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,
  127.       205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,
  128.       205,205,205,205,205,205,205,205,205,205,205,
  129.       205,205,205,205,205,205,205,205,205,188);
  130.    }
  131. }
  132.  
  133. void automatico(Bingo * miJuego)
  134. {
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141. }
  142.  
  143. void manual(Bingo * miJuego)
  144. {
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152. }
  153.  
  154.  
  155.  
  156.  
  157. int main()
  158. {
  159.    printf("\nBienvenidos a este maravilloso Bingo\n");
  160.    Bingo miBingo;
  161.    inicializarBingo(&miBingo);
  162.    mostrar(miBingo);
  163.    Bingo modoAutomatico;
  164.    Bingo modoManual;
  165.  
  166.    int opcion;
  167.        printf( "\n   Si desea jugar en modo automatico pulse 1: \n");
  168.        printf( "\n   Si desea jugar en modo Paso a Paso pulse 2: \n");
  169.        printf("\n\n   ");
  170.        scanf( "%d", &opcion );
  171.        switch ( opcion )
  172.        {
  173.            case 1: printf("\n Juego completo: \n");
  174.                    //system("cls");
  175.                    automatico(&modoAutomatico);
  176.  
  177.                break;
  178.  
  179.            case 2:printf("\n Juego paso a paso: \n");
  180.                    manual(&modoManual);
  181.                    //system("cls");
  182.                break;
  183.         }
  184.  
  185.    return 0;
  186. }
  187.  
  188.  
  189.  
  190.  
  191.  
  192. void huecos(int matriz[][9], int fila)         //funcion que genera los cuatro huecos por fila necesarios en el carton
  193. {
  194.  
  195.    int posicion=0,huecos=0;
  196.    while(huecos<4)
  197.    {
  198.        posicion=rand() % (8 + 1 - 0) + 0;
  199.        if (matriz[fila][posicion]!=-1)
  200.        {
  201.            matriz[fila][posicion]=-1;
  202.            huecos++;
  203.        }
  204.    }
  205. }
  206.  
  207.