Red de conocimiento informático - Computadora portátil - Programación en lenguaje C: simulación de reparto y barajado de cartas, por favor ayuda

Programación en lenguaje C: simulación de reparto y barajado de cartas, por favor ayuda

#include

#include

#include

#include

#definir TRAJE 52

#define HALF 26

#define COLOR ((char)13)

// La codificación de los naipes es un conjunto de datos hexadecimales, numerados del 0 al 51.

//La función tell se utiliza para explicar el contenido de la codificación

int tell(char card, char * descripción)

{

char i=0, j=0;

char *suit[]={"Picas","Corazones","Tréboles","Diamantes"};

char * cara [] = {"A","2","3","4","5","6","7","8","9",

"10 " ,"Jack","Queen","King"};

//La pregunta es bastante extraña y requiere la deducción de 8 cartas ocultas, pero contiene el rey y el rey. La regla correcta debe ser descontar 8 cartas sin el rey o el rey, así cada persona tiene 11 cartas.

//De lo contrario, se deben descontar 10 cartas o 6 cartas, de lo contrario se repartirán cartas a cada persona. El número de cartas obtenidas no es el mismo (no es múltiplo de 4)

//Si es necesario, puedes definir JB=52, JA=53, SUIT=54, HALF=27.

//if (tarjeta > JB || tarjeta < 0 || !descripción) return 0;

//if (tarjeta == JB) { sprintf(descripción, "Grande Joker"); devolver 1; }

//if (tarjeta == JA) { sprintf(descripción, "Pequeño Joker"); devolver 1; }

i = tarjeta / COLOR; j = tarjeta % COLOR;

sprintf(descripción, "%s %s", traje[i], cara[j]);

devuelve 1;

}

//Inicializar cartas para formar una carta secuencial

int init(char *poker)

{

char i = 0;

if (!poker) devuelve 0;

for (i=0; i

srand((unsigned)time(0));

return 1;

}

// Baraja las cartas y divide las cartas actuales en Las partes superior e inferior se agrupan y luego se cruzan. Hay dos posibilidades: primero la mano derecha y primero la mano izquierda. Este es el método de intercambio primero de la mano 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

j = i * 2; //Primera mitad del grupo

boker[j ] = poker[i];

k = i + HALF; //La segunda mitad del grupo

boker[j+1]=poker[k];

}//siguiente i

memcpy(poker, boker, TRAJE);

return

}

// Mezcla las cartas actuales en dos grupos, superior e inferior, luego cruza, hay dos posibilidades: la mano derecha primero y la mano izquierda primero. Este es el método de intercambio primero de la mano derecha

//Ten en cuenta que. la diferencia en el orden de las manos izquierda y derecha radica en el cambio par-impar de la variable j

int wash_right_hand (char *poker)

{

char i=0, j=0, k=0;

char boker[TRAJE];

if(!poker) devuelve 0;

for( i=0; i

j = i * 2; //medio grupo superior

boker[j+1] = poker[i];

k = i + HALF; //La segunda mitad del grupo

boker[j]=poker[ k];

}//siguiente i

memcpy(poker, boker, SUIT);

return 1;

}

// Baraja las cartas una vez según la carta actual , utilizando principalmente la paridad de la función aleatoria para determinar si lavar con la mano izquierda o con la derecha

int wash_once(char *poker)

{

devolver rand()%2?wash_l

eft_hand(poker):wash_right_hand(poker);

}

//Baraja las cartas aleatoriamente varias veces según las cartas actuales, al menos 8 veces y hasta 18 veces

int wash_full(char *poker)

{

int i = 0, j = 0, k = 0;

i = rand () % 10 + 8;

printf("\nIntenta lavar %d veces.\n", i);

for (j=0; j < i ; j++ ) k+ =wash_once(póker);

return k;

}

int main(void)

{

elección de caracteres = 0, i = 0, j = 0; char poker[TRAJE], tarjeta[16];

init(poker);

hacer {

printf("\n\t¡Bienvenido a Mi juego de póquer!\n");

printf("\t0-Wash.\n");

printf (" \t1-Mostrar A.\n");

printf("\t2-Mostrar B.\n");

printf("\t3-Mostrar C. \n ");

printf("\t4-Show D.\n");

printf("\cualquier otro número-salir.\n");

printf("¿Tu elección?");

scanf("%d", &choice);

if(opción 4) break;

if(choice ==0) {

wash_full(poker);

continuar;

}//end if

i = (elección - 1) * 11; //Ten cuidado al usar 11 cartas y restar 8 cartas ocultas

printf("Su carta es...\n");

for( j = i; j

tell(poker[j], tarjeta);

printf("%s\t", tarjeta );

}//siguiente

printf("\n");

}mientras(1);

devuelve 0 ;

p>

}