[::: Poker en c :::]

emigidio

Bovino Milenario
#1
Primero que nada buenas compañeros bakunos, pues bien les planteo mi problema:

Resulta que tengo que hacer un programa que simule el juego del poker en un baraja inglesa y calcular las diferentes convinaciones que me salen en cada partida, el problema lo entiendo a la perfeccion y ya tengo un avance en mi codigo que les presento a continuacion:

Código:
#include <conio.h>
#include <stdio.h>

#define MAX_CAR         52
#define MAX_PLAYER      5
#define MAX_CAR_PLAYER  10

typedef enum PaloTAG
     {
          corazones,
          diamantes,
          picas,
          treboles,
     }TPalo;
     
typedef struct CartasTAG
     {
          TPalo palo;
          int carta;
     }TCarta;
     
typedef TCarta Baraja[MAX_CAR];

char preguntar ( char *pregunta );
void jugar ( void );
void barajear ( Baraja baraja );
void intercambiar (TCarta *pos_01, TCarta *pos_02);
void mostrarC( TCarta carta );
void mostrarB ( Baraja baraja );

int main(void)
     {
          char comenzar;
          comenzar = preguntar("Estas listo para jugar[S/N]?: ");
          if(comenzar =='s' || comenzar == 'S')
               {
                      jugar();
                      //printf("comienza el juego");
                      getch();       
               }
          //salir();
          printf("termina el juego");
          getch();
          return;
     }

char preguntar (char *pregunta)
     {
          char res;
          printf("%s ", pregunta);
          scanf("%c",&res);          
                  
          return res;
     }

void jugar ( void )
     {
           Baraja baraja;
           
           barajear(baraja);
           mostrar(baraja);
           //convinacion();
     }
     
void barajear ( Baraja baraja )
     {
          int barajear, pos_01, pos_02;
          int i, cambio;
          
          /*printf("Numero de veces a barajear la carta: ");          
          scanf("%i",&barajear);*/
          srand(time(NULL));
          cambio = 20+(rand() % 1000);
          
          for(i=0; i<cambio; i++)
               {
                       pos_01 = rand() % MAX_CAR;
                       pos_02 = rand() % MAX_CAR;
                       
                       intercambiar( &(baraja[pos_01]), &(baraja[pos_02]) );
               }
     }
     
void intercambiar (TCarta *pos_01, TCarta *pos_02)
     {
           TCarta aux;
           
           aux = *pos_01;
           *pos_01 = *pos_02;
           *pos_02 = aux;    
     }
     
void mostrarC( TCarta cartas )
     {
          //TCarta cartas;
          switch(cartas.carta)
               {
                    case 1:
                         printf("As de ");
                         break;
                    case 11:
                         printf("Jack (J) de ");
                         break;
                    case 12:
                         printf("Reina (Q) de ");
                         break;
                    case 13:
                         printf("Rey (K) de ");
                         break;
                    default:
                         printf("%i de ",cartas.carta);
                                                                  
               }
          switch(cartas.palo)
               {
                    case corazones:
                         printf("corazones\n");
                         break;
                    case diamantes:
                         printf("diamantes\n");
                         break;
                    case picas:
                         printf("picas\n");
                         break;
                    default:
                         printf("treboles\n");
                         
               }
     }
     
void mostrarB ( Baraja baraja )
     {
          int i,j;
          
          for (i=1; i<=MAX_PLAYER; i++)
              {
                    printf("Cartas de jugador_0%\n\n",i);
                    for(j=1; j<=MAX_CAR_PLAYER; j++)
                         {
                              mostrarC(baraja[j]);
                         }
              }
     }
Ahora el problema es que no me corre el problema y no tengo ningun problema de sintaxtis y solo me arroga el error siguiente:
[Linker error] undefined reference to `mostrar'

Y la verdad no entiendo muy bien el error así que recurro a ustedes para que me digan cual es el error y que debo hacer para solucionarlo.

Espero me puedan ayudar, gracias! :D
 

50C1

Bovino adicto
#2
En tu funcion de jugar() tienes una llamada a la funcion mostrar, que no esta definida en ninguna parte.

Creo que eso es. Saludos.
 

F3rN@nD0

Bovino maduro
#6
Esque cuando en la funcion jugar llamas a la funcion mostrar la cual no definiste en ningun lado, solo tienes definidas mostrarB y mostrarC
 

animatrix92

Bovino adolescente
#7
jaja ya le avance un poquito XD
HTML:
#include <conio.h>
#include <stdio.h>
#include <time.h>

#define MAX_CAR         52
#define MAX_PLAYER      5
#define MAX_CAR_PLAYER  10

typedef enum PaloTAG
     {
          corazones,
          diamantes,
          picas,
          treboles,
     }TPalo;
//   tenemos una variable tipo enum llamada PaloTag al cual lo combertimos
//   en un tipo definido llamado TPalo, que puede tomar 4 valores:
//     (0)corazones,(1)diamantes,(2)picas,(3)treboles
     
typedef struct CartasTAG
     {
          TPalo palo;
          int carta;
     }TCarta;
     
typedef TCarta Baraja[MAX_CAR];
        

char preguntar ( char *pregunta );
void jugar ( void );
void barajear ( Baraja baraja );
void intercambiar (TCarta *pos_01, TCarta *pos_02);
void mostrarC( TCarta carta );
void mostrarB ( Baraja baraja );
void inicializar(Baraja baraja);

int main(void)
     {
          char comenzar;//variable tipo char
          comenzar = preguntar("Estas listo para jugar[S/N]?: ");
          if(comenzar =='s' || comenzar == 'S')
               {
                      srand(time(NULL));//funcion srand
                      jugar();
                      //printf("comienza el juego");
                      getch();       
               }
          //salir();
          printf("termina el juego");
          getch();
          return 0;
     }

char preguntar (char *pregunta)
     {
          char res;//variable char
          printf("%s ", pregunta);//muestra en pantalla el texto que recibes como argumento
          scanf("%c",&res);          //lees un valor y se lo pasas a res
                  
          return res;//regresas el valor recibido
     }

void jugar ( void )
     {
           Baraja baraja;// variable tipo Baraja
           inicializar(baraja);
           barajear(baraja);//llamada a la funcion barajear(con la variable antes declarada)
           mostrarB(baraja);//llamada a la funcion mostrarB(con la variable antes declarada)
           //combinacion();
     }
     
void barajear ( Baraja baraja )
     {
          int barajear, pos_01, pos_02;//declara 3 variables tipo entero
          int i, cambio;// declara 2 variables 
          
          /*printf("Numero de veces a barajear la carta: ");          
          scanf("%i",&barajear);*/
          
          cambio = 20+(rand() % 1000);//a cambio se le da un valor de 20 a 999
          
          for(i=0; i<cambio; i++)
               {
                       pos_01 = rand() % MAX_CAR;
                       pos_02 = rand() % MAX_CAR;
                       
                       intercambiar( &(baraja[pos_01]), &(baraja[pos_02]) );
               }
     }
     
void intercambiar (TCarta *pos_01, TCarta *pos_02)
     {
           TCarta aux;
           
           aux = *pos_01;
           *pos_01 = *pos_02;
           *pos_02 = aux;    
     }
     
void mostrarC( TCarta cartas )
     {
          //TCarta cartas;
          switch(cartas.carta)
               {
                    case 1:
                         printf("As de ");
                         break;
                    case 11:
                         printf("Jack (J) de ");
                         break;
                    case 12:
                         printf("Reina (Q) de ");
                         break;
                    case 13:
                         printf("Rey (K) de ");
                         break;
                    default:
                         printf("%i de ",cartas.carta);
                                                                  
               }
          switch(cartas.palo)
               {
                    case corazones:
                         printf("corazones\n");
                         break;
                    case diamantes:
                         printf("diamantes\n");
                         break;
                    case picas:
                         printf("picas\n");
                         break;
                    default:
                         printf("treboles\n");
                         
               }
     }
     
void mostrarB ( Baraja baraja )
     {
          int i,j;
          
          for (i=1; i<=MAX_PLAYER; i++)
              {
                    printf("Cartas de jugador_0%\n\n",i);
                    for(j=1; j<=MAX_CAR_PLAYER; j++)
                         {
                              mostrarC(baraja[j]);
                         }
              }
     }
void inicializar(Baraja baraja){
     int i=0,b=0;
     while(i<MAX_CAR){
                       b=i/13;
                       switch(b){
                                        case 0:baraja[i].palo=corazones;
                                             baraja[i].carta=(i%13)+1;break;
                                        case 1:baraja[i].palo=diamantes;
                                             baraja[i].carta=(i%13)+1;break;
                                        case 2:baraja[i].palo=picas;
                                             baraja[i].carta=(i%13)+1;break;
                                        case 3:baraja[i].palo=treboles;
                                             baraja[i].carta=(i%13)+1;break;
                                        default:break;
                                        }
                       
                       i++;
                       }
    
     }
 

Javocst

Bovino adicto
#8
no bro del primer codigo hay un error en que tienes como dos muestras de la baraja y en el main solo uno y no especificas cual es
 
Arriba