APLICACIONES DE LAS ECUACIONES DIFERENCIALES DE PRIMER ORDEN A PROBLEMAS DE E...
Prototipo de un juego de poker "Programado en lenguaje C"
1. #include<stdio.h>
#include<stdlib.h>
#include<time.h>
//Variables Globales
int bitcoin=100,bet,win=0,lose=0;
void baraja(int [][13]);
void trato(int [][13], const char *[], const char *[]);
void bubble(int n[], int size);
main()
{
//El programa dejara de funcionar hasta que la variable Global "bitcoin" sea igual a 0
while (bitcoin>0){
system("color 4F"); // fondo Rojo, letra blanco brillante (F)
printf ("tt ***Esta jugando en POKERULSA.223***n");
printf ("tt***A comenzado el juego con 100 bitcoins***n");
//Utilizaremos variables semillas para realizar el juego completamente aleatorio
srand(time(NULL));
int i, j, mesa[4][13] = {0};
srand(time(NULL));
//Declaracion de constantes en el juego como lo es "suit=palo" y "faces=numeros"
const char *suit[4] = {"corazon", "Diamantes", "Trebol", "Espadas"};
const char *faces[13] = {"A", "2", "3", "4", "5", "6", "7",
"8", "9", "10", "J", "Q", "K"};
//Retorno de nuestros subprogramas o procedimientos
baraja(mesa);
trato(mesa, suit, faces);
system("cls");}
printf("nnnnttt***Gracias por jugar POKERULSA.223***");
getch();
}
/* Nuestro procedimiento shuffle o baraja en español
se encargara de almacenar en un array
bidimensional de 4 filas y 13 columnas
diferentes numeros aleatorios */
void baraja(int d[][13])
{
int row, column, card;
for (card = 1; card < 53; card++)
{
row = rand() % 4;
column = rand() % 13;
while (d[row][column] != 0)
{
row = rand() % 4;
column = rand() % 13;
}
d[row][column] = card;
}
}
// nuestro subprograma trato se encargara de repartir las cartas ya barajadas
void trato(int d[][13], const char *s[], const char *f[])
{ // realizamos declaraciones de variables y constantes que nos ayudaran a identificar nuestra mano en el juego
int deck2[4][13] = {0};
int row, column, card, pnt = 0, i;
int royalFlush(const int [][13]);
int straightFlush(const int [][13]);
int poker(const int [][13]);
int fullHouse(const int [][13]);
int flush(const int [][13]);
int straight(const int [][13]);
int threeOfAKind(const int [][13]);
int twoPair(const int [][13]);
int pair(const int [][13]);
int (*pokerArray[9])(const int) = {royalFlush, straightFlush, poker, fullHouse, flush,
straight, threeOfAKind, twoPair, pair};
/*Aqui realizamos la impresión
de las cartas de la casa o dealer
y la de nuestra mano tambien nos identificará
cual es nuestra jugada*/
void point(int);
int flag=1,flag1=0,flag2=0;
int apuesta=0,apuesta1=0,apuesta2=0;
2. int aux=0,aux1=0,aux2=0,aux3=0;
apuesta2=5;
bitcoin=bitcoin-apuesta2;
printf ("tttttttNumero de bitcoins=%dn", bitcoin);
if (bitcoin>999)
apuesta2=7;
if (bitcoin>1999)
apuesta2=8;
printf ("tttttttApuesta minima=%dn", apuesta2);
printf ("tttttttManos Ganadas=%dn", win);
printf ("tttttttManos Perdidas=%dn", lose);
printf ("tttTus cartas sonn");
for (card = 1; card < 8; card++)
{
for (row = 0; row < 4; row++)
{
for (column = 0; column < 13; column++)
{
if (d[row][column] == card)
{
if (card==3)
{ getch();
printf ("tttLas cartas del dealer sonn");
getch();
}
if (card==6)
{ getch();
printf ("t!!!1Aumente su apuesta o precione 0 si decea pasar=");
while (flag<2){
scanf("%d", &bet);
if ((bet>bitcoin)||(bet<=0)){
if (bet>bitcoin)
printf ("No puede apostar mas de sus bitcoinsn");
if (bet<0)
printf ("t$$$Por favor introduzca un numero mayor que 0$$$n");}
if ((bet<bitcoin)||(bet>=0)){
if (bet<=bitcoin){
if (bet>=0){
aux=aux+bet;
flag=3;
apuesta=apuesta+bet;
}}
}
else
{flag1=3;
apuesta=apuesta+bet;}
}
}
if (card==7)
{ printf ("nt!!!2Aumente su apuesta o precione 0 si decea pasar=");
while (flag1<2){
scanf("%d", &bet);
aux2=aux+bet;
printf ("%d", bet);
if ((aux2>bitcoin)||(bet<0)){
if (bet<0)
printf("introduzca un numero mayor que 0");
printf ("t$$$%d$$$n",aux2);
if (aux2<0)
printf ("t$$$Por favor introduzca un numero mayor que 0$$$n");
if (bet>bitcoin)
printf ("t$$$Introduzca un numero que no sobrepase sus bitcoins$$$$n");
}
else
flag1=3;
3. apuesta1=apuesta1+bet;
}
}
bet=apuesta+apuesta1+apuesta2;
printf("tt***%-6s de %-8s***n", f[column], s[row]);
deck2[row][column] = 1;
}
}
}
}
for (i = 0; i < 9; i++){
pnt = (*pokerArray[i])(deck2);
if (pnt != 0)
break;
}
getch();
point(pnt);
}
int royalFlush(const int d2[][13])
{
int i, j, k = 0, cont = 0, card[5],
royal[5] = {0, 9, 10, 11, 12};
if (flush(d2) == 5)
for (i = 0; i < 4; i++){
for (j = 0; j < 13; j++){
if (d2[i][j] == 1){
card[k] = j;
k++;
}
}
}
bubble(card, 5);
for (i = 0; i < 5; i++)
if (card[i] == royal[i])
cont++;
if (cont == 5)
return 1;
return 0;
}
int straightFlush(const int d2[][13])
{
if (flush(d2) == 5)
if (straight(d2) == 7)
return 2;
return 0;
}
int poker(const int d2[][13])
{
int i, j, incr, cont;
for (incr = 0; incr < 13; incr++){
cont = 0;
for (i = 0; i < 4; i++){
for (j = incr; j <= incr; j++){
if (d2[i][j] == 1)
cont++;
}
}
if (cont == 4)
return 3;
}
return 0;
}
int fullHouse(const int d2[][13])
{
if (threeOfAKind(d2) == 7)
if (pair(d2) == 9)
return 4;
return 0;
}
4. int flush(const int d2[][13])
{
int i, j, cont;
for (i = 0; i < 4; i++){
cont = 0;
for (j = 0; j < 13; j++){
if (d2[i][j] == 1)
cont++;}
if (cont == 5)
return 5;}
return 0;}
int straight(const int d2[][13])
{
int i, j, k = 0, temp, num[7];
for (i = 0; i < 5; i++){
for (j = 0; j < 13; j++){
if (d2[i][j] == 1){
num[k] = j;
k++;
}
}
}
bubble(num, 6);
temp = num[0];
for (i = 1; i < 5; i++){
if (num[i] != temp + 1)
return 0;
temp = num[i];
}
return 6;
}
int threeOfAKind(const int d2[][13])
{
int i, j, incr, cont;
for (incr = 0; incr < 13; incr++){
cont = 0;
for (i = 0; i < 4; i++){
for (j = incr; j <= incr; j++){
if (d2[i][j] == 1)
cont++;
}
}
if (cont == 3)
return 7;
}
return 0;
}
int twoPair(const int d2[][13])
{
int i, j, incr, cont, pairCont = 0;
for (incr = 0; incr < 13; incr++){
cont = 0;
for (i = 0; i < 4; i++){
for (j = incr; j <= incr; j++){
if (d2[i][j] == 1)
cont++;
}
}
if (cont == 2)
pairCont++;
}
if (pairCont == 2)
return 8;
5. return 0;
}
int pair(const int d2[][13])
{
int i, j, incr, cont;
for (incr = 0; incr < 13; incr++){
cont = 0;
for (i = 0; i < 4; i++){
for (j = incr; j <= incr; j++){
if (d2[i][j] == 1)
cont++;
}
}
if (cont == 2)
return 9;
}
return 0;
}
void point(int p)
{
char opcion = 'z';
int identificador;
printf ("Tu mano es=");
switch (p){
case 1:
printf("ESCALERA REALn");
bet=bet*10;
bitcoin=bitcoin+bet;
win=win+1;
break;
case 2:
printf("Escalera de colorn");
bet=bet*8;
bitcoin=bitcoin+bet;
win=win+1;
break;
case 3:
printf("POKERn");
bet=bet*7;
bitcoin=bitcoin+bet;
win=win+1;
break;
case 4:
printf("FULL HOUSEn");
bet=bet*6;
bitcoin=bitcoin+bet;
win=win+1;
break;
case 5:
printf("COLORn");
bet=bet*5;
bitcoin=bitcoin+bet;
win=win+1;
break;
case 6:
printf("ESCALERAn");
bet=bet*4;
bitcoin=bitcoin+bet;
win=win+1;
break;
case 7:
printf("Trion");
bet=bet*3;
bitcoin=bitcoin+bet;
win=win+1;
6. break;
case 8:
printf("DOBLE PARn");
bet=bet*2;
bitcoin=bitcoin+bet;
win=win+1;
break;
case 9:
printf("PARn");
bet=bet*1;
bitcoin=bitcoin-bet;
lose=lose+1;
break;
default:
printf("CARTA ALTAn");
bet=bet*2;
bitcoin=bitcoin-bet;
lose=lose+1;
break;
}
printf("Ahora tienes %d bitcoins", bitcoin);
if (bitcoin>0)
printf("nPresione 0 si desea salir en el juego o cualquier otra tecla para seguir: ");
fflush(stdin);
opcion = getchar();
if (opcion=='0') {
bitcoin=-1;
system ("cls");
printf("nnnnttt***Gracias por jugar POKERULSA.223***");
}
getch();
}
void bubble(int n[], int size)
{
int i, j, temp;
for (i = 0; i < size - 1; i++){
for (j = i + 1; j < size; j++){
if (n[i] > n[j]){
temp = n[i];
n[i] = n[j];
n[j] = temp;
}
}
}
}