Espectáculo de cerdo
#incluye
#incluye
#incluye
#definir conjunto 52
#definir mitad 26
#Definir color ((char)13)
//El código de los naipes es un conjunto de datos en base 13, del 0 al 51.
//La función tell se utiliza para explicar el contenido codificado.
int tell(char tarjeta, char * descripción)
{
char i=0, j = 0;
char * palo[]={ "pica", "corazón", "trébol", "diamante" };
char *cara[] = {"A", "2", "3", " 4 ", " 5 ", " 6 ", " 7 ", " 8 ", " 9 ",
"10", "Jota", "Reina", "Rey"};
p>//La pregunta es muy extraña. Es necesario descontar 8 cartas, pero incluyendo rey y rey. La regla correcta debería ser que si no hay rey o rey, se descontarán 8 cartas y cada jugador recibirá 11 cartas.
//En caso contrario se descontarán 18 cartas o 6 cartas, en caso contrario el número de cartas repartidas a cada persona es diferente (no múltiplo de 4).
//Si es necesario, puede definir JB=52, JA=53, SUIT=54, HALF=27.
//if (tarjeta & gt; JB || tarjeta & lt0 || ! descripción) devuelve 0
//if (tarjeta == JB) { sprintf (descripción, "Gran comodín"); return 1; }
//if (card == JA) { sprintf (descripción, "Pequeño comodín"); i = tarjeta/color; j = tarjeta % color;
sprintf(descripción, "%s %s", traje[i], cara[j]); ;
}
//Inicializar tarjetas para formar tarjetas secuenciales.
int init(char *poker)
{
char I = 0;
si (!poker) devuelve 0;
for(I = 0;i<suit;i++)poker[I]=I;
srand((unsigned)time(0));
Devolver 1 ;
}
//Barajar: Divide las cartas actuales en dos grupos y luego crúzalas. Hay dos posibilidades: primero la mano derecha, primero la mano izquierda. Este es el primer método de sustitución de la izquierda.
int wash_left_hand(char *poker)
{
char i=0, j=0, k = 0;
char boker[traje];
if(!poker) return 0;
for(i = 0;i<half;i++) {
j = I * 2 ; //mitad grupo superior
boker[j]= poker[I];
k = i + mitad; //mitad grupo inferior
boker[ j+1]= poker[k];
}//Siguiente I
memcpy(poker,boker,suit);
Devuelve 1; p>
}
//Barajar: Divide las cartas actuales en dos grupos y luego crúzalas. Hay dos posibilidades: primero la mano derecha, primero la mano izquierda. Este es el primer método de intercambio de la mano derecha.
//Tenga en cuenta que la diferencia entre el orden de la mano izquierda y derecha radica en los cambios pares e impares de la variable j.
int wash_right_hand(char *poker)
{
char i=0, j=0, k = 0;
char boker[traje];
if(!poker) return 0;
for(i = 0;i<half;i++) {
j = I * 2 ; //mitad grupo superior
boker[j+1]= poker[I];
k = i + mitad; //mitad grupo inferior
boker[j]= poker[k];
}//Siguiente I
memcpy(poker,boker,suit);
Devuelve 1; p>
}
// Baraja las cartas según la carta actual, utilizando principalmente la paridad de la función aleatoria para decidir si barajar con la mano izquierda o la derecha.
int wash_once(char *poker)
{
¿Devolver rand()%2? wash_left_hand(poker):wash_right_hand(poker);
}
//Baraja las cartas aleatoriamente varias veces según la carta actual, al menos 8 veces y como máximo 18 veces.
int wash_full(char *póker)
{
int i = 0, j = 0, k = 0
I; = rand()% 18;
printf("\nIntento limpiar %d veces.\n", I);
for(j = 0; j & lt i;j++) k+=wash_once(poker);
return k;
}
int main(void)
{
elección de caracteres = 0, i = 0, j = 0; char poker [palo], carta [16];
init (póquer); {
printf("\n\t¡Bienvenido a mi juego de póquer!\n");
printf("\t0-Wash.\n");
p>
printf("\t 1-Mostrar a.\n ");
printf("\T2-Mostrar b.\n"); printf( "\T3-Show c.\n");
printf("\T4-Show d.\n");
printf("\cualquier otro número - salir .\n ");
printf("¿Tu elección?");
scanf("%d ", & amp selección);
if (Opción 4)descanso;
if(opción ==0) {
wash_full(poker);
Continuar;
} //Finalizar si
I =(choice-1)* 11; //Concéntrate en 11 cartas y resta 8 cartas.
printf("Su tarjeta de presentación es...\ n ");
for(j = I; j & ltI+11; j++) {
decir(poker[j], cartas);
printf("%s\t ", carta);
}//Siguiente
printf ( "\n");
} mientras(1
Devuelve 0;