Programación de póquer
#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 (card gt; JB || card lt0 || ! descripción) devuelve 0;
//if (card == JB) { sprintf (descripción, "grande Joker"); devolver 1; }
//if (tarjeta == JA) { sprintf (descripción, "Pequeño Joker"); devolver 1; }
i = Tarjeta/ color; j = color de la tarjeta;
sprintf(descripción, "s s", palo[i], cara[j]); }
//Inicializar tarjetas para formar tarjetas secuenciales.
int init(char *poker)
{
char I = 0;
si (!poker) devuelve 0;
for(I = 0;iltsuit;i)poker[I]=I;
srand((unsigned)time(0));
Devolver 1 ;
}
//Baraja las cartas: 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) devuelve 0;
for(I = 0;ilthalf;i) {
j = I * 2 ; //La mitad superior del grupo
boker[j]= poker[I];
k = i half; //La mitad inferior del grupo
boker[j 1]= poker[k];
}//Siguiente I
memcpy(poker, boker, palo);
Regresar 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 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) devuelve 0;
for(I = 0;ilthalf;i) {
j = I * 2 ; //La mitad superior del grupo
boker[j 1]= poker[I];
k = i half; //La mitad inferior del grupo
boker[j]= poker[k];
}//Siguiente I
memcpy(poker, boker, palo);
Regresar 1;
}
// 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() 10 8;
printf("\nIntento limpiar d veces.\n", I);
for(j = 0;j lti;j) k =wash_once(poker);
Return k;
}
int main(void)
{
char elección = 0, i = 0, j = 0; char poker [palo], tarjeta [16]
init(poker);
printf("\n\t¡Bienvenido a mi juego de póquer!\n");
printf("\t0-Wash.\n");
printf(" \t 1-Mostrar a.\n ");
printf("\T2-Mostrar b.\n");
printf("\T3-Mostrar c.\ n ");
printf(" \ T4 - Mostrar d . \ n ");
printf(" \ tCualquier otro número - salir.\n " );
printf("¿Tu elección?");
scanf("d ", selección de amplificador
if(seleccione 4)
if(choice ==0) {
wash_full(poker);
Continuar
}//finalizar si p>
I =(elección-1)* 11; //Sigue 11 cartas y resta 8 cartas.
printf("Su tarjeta de presentación es...\ n ");
for(j = I; j ltI 11; j ) {
decir (Póker[j], naipes);
printf("s\t ", tarjeta);
}//Siguiente
printf(" \ n ");
} mientras(1);
Devuelve 0;
}