Poker

Martínez Navarro, Erik
 
 
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;
int cambial ( const int * const , const int * const, int *, int *, int);
int revisar( const int *, const int *, const int *, const int *, int *);
int mano( int * , int * );
void barajar( int [][ 13 ] );
void repartir( const int [][ 13 ], int * , int *, int const * const, int);

int main()
{
int cambiarJ[5] = { 0 };
int cambiarJM[5] = { 0 };
int cambio = 0;
int desicion = 0;
int numeroJ = 0;
int numeroP = 0;
int numeroE = 0;
int cambiar = 0;
int ganador = 0;
int paloC[5] = { 0 };
int manoC[5] = { 0 };
int paloJ[5] = { 0 };
int manoJ[5] = { 0 };
int manoCambio[5] = { 0 };
int paloCambio[5] = { 0 };
int cartas[13] = { 1 , 2, 3, 4, 5, 6 , 7, 8, 9, 10 , 11, 12, 13};
const char *palo[ 4 ] = { "Corazones", "Diamantes", "Treboles", "Espadas" };

const char *cara[ 13 ] =
{ "As", "Dos", "Tres", "Cuatro",
"Cinco", "Seis", "Siete", "Ocho",
"Nueve", "Diez", "****", "Quina", "Rey" };
int baraja[ 4 ][ 13 ] = { 0 };
int swiche = 0;
for ( int juegos = 0; juegos < 20; juegos++, swiche = 0) {
system("cls");
srand( time( 0 ) );
for (int contador = 0, contador2 = 0; contador < 4; contador++)
for (contador2 = 0; contador2 < 13; contador2++)
baraja[contador][contador2] = 0;
barajar( baraja );
repartir( baraja, paloJ , manoJ, cartas, 1);
repartir( baraja, paloC , manoC, cartas, 6 );
repartir( baraja, paloCambio, manoCambio, cartas, 11);
repartir( baraja, cambiarJ, cambiarJM, cartas, 16 );
cout << "Su mano es: n";
for ( int contador = 0; contador < 5; contador++)
cout << "[ " << cara[manoJ[contador] – 1] << " ] ";
cout << endl << endl;
cout << "Desea cambiar alguna carta (1) (2): ";
cin >> desicion;

cout << endl;
switch ( desicion ) {
case 1:
cout << "Que cartas desea cambiar (9 para terminar): ";
for ( int contador = 0; contador < 5 && cambiar != 9 ; contador++) {
cin >> cambiar;
if ( cambiar > 5 )
continue;
else {
manoJ[ cambiar – 1 ] = cambiarJM[ cambiar – 1 ];
paloJ[ cambiar – 1 ] = cambiarJM[ cambiar – 1 ];
}
}
cout << endl << endl;
cout << "Su nueva mano es:n";
for (int contador = 0; contador < 5; contador++)
cout << "[ " << cara[manoJ[contador] – 1] << " ] ";
cout << endl << endl;
break;
case 2:
break;
}
ganador = revisar( paloJ, manoJ, paloC, manoC, &cambiar );
switch ( ganador ) {
case 0:

cambial( manoCambio, paloCambio, manoC, paloC, cambiar );
swiche = 1;
break;
case 1:
cout << "La mano de la pc es:n";
numeroP++;
for ( int contador = 0; contador < 5; contador++)
cout << "[ " << cara[manoC[contador] – 1] << " ] ";
cout << endl << endl;
cout << "La pc gano!n";
break;
case 3:
numeroE++;
cout << "La mano de la pc es:n";
for ( int contador = 0; contador < 5; contador++)
cout << "[ " << cara[manoC[contador] – 1 ] << " ] ";
cout << endl << endl;
cout << "Hubo un empate!n";
break;
}
if (swiche == 1) {
cout << "La mano de la pc es:n";
for ( int contador = 0; contador < 5; contador++)

cout << "[ " << cara[manoC[contador] – 1] << " ] ";
ganador = revisar( paloJ, manoJ, paloC, manoC, &cambiar);
cout << endl << endl;
switch ( ganador ) {
case 0:
numeroJ++;
cout << "El jugador gano!n" << endl;
break;
case 1:
numeroP++;
cout << "La pc ganon" << endl;
break;
case 3:
numeroE++;
cout << "La mano de la pc es:n";
for ( int contador = 0; contador < 5; contador++)
cout << "[ " << cara[manoC[contador] – 1] << " ] ";
cout << endl << endl;
cout << "Empate!n" << endl;

break;
}
}
system("pause");
}
system("cls");
cout << "La pc gano " << numeroP << " veces" << endl;
cout << "El jugador gano " << numeroJ << " veces" << endl;
cout << "Se empataron " << numeroE << " veces" << endl;
system("PAUSE");
return 0;
}
void barajar( int wBaraja[][ 13 ] )
{
int fila;
int columna;
for ( int carta = 1; carta <= 52; carta++ ) {
do {
fila = rand() % 4;
columna = rand() % 13;
} while( wBaraja[ fila ][ columna ] != 0 );
wBaraja[ fila ][ columna ] = carta;
}
}

void repartir( const int wBaraja[][ 13 ], int *palo, int *mano, int const * const cartas, int carta)
{
int contador = 0;
for ( int limite = carta + 4 ; carta <= limite; carta++ , contador++)
for ( int fila = 0; fila <= 3; fila++ )

for ( int columna = 0; columna <= 12; columna++ )
if ( wBaraja[ fila ][ columna ] == carta ) {
*( palo + contador ) = fila;
*( mano + contador ) = cartas[columna];
}
}

int revisar( const int *paloJ, const int *manoJ, const int *paloC, const int *manoC, int *carta) {
int jugador = 1; /*Se usa para establecer que mano tiene el jugador (par, trio, poker, mierdalechuda)*/
int pc = 1; /*Igual que jugador, establece que mano tiene la pc*/
int repeticion = 0; /*Se usa para contar el numero de veces que se repite una carta*/
int masJ = 0; /*La carta mas alta del jugador*/
int masPC = 0; /*Carta mas alta de la pc*/
int cartaRJ = 0; /*Estblece cual es la carta que se repite*/
int cartaRC = 0; /*Igual que la anterior pero para la PC*/
int escaleraJ = 0; /*Se usa para saber si hay escalera*/
int escaleraPC = 0; /*Igual que la anterior*/
/*Fase de analisis*/

/*Jugador*/
/*Analiza las cartas del jugador, saca la mas alta y el numero de repeticiones de cada una*/
for (int contador = 0; contador < 5; contador++, repeticion = 0) {
for (int contador2 = 0; contador2 < 5; contador2++) {
if ( manoJ[contador] == manoJ[contador2] )
repeticion++;
}
if ( manoJ[contador] > masJ )
masJ = manoJ[contador];
if ( repeticion > jugador ) {
jugador = repeticion;
cartaRJ = manoJ[contador];
}
}
/*Analiza las cartas del jugador en busca de escalera*/
for (int contador = 0; contador < 4; contador++)
if (paloJ[contador] == paloJ[contador + 1])
escaleraJ++;
/*PC*/
/*Analiza las cartas de la pc, saca la mas alta y el numero de repeticiones de cada una*/
for (int contador = 0; contador < 5; contador++, repeticion = 0) {
for (int contador2 = 0; contador2 < 5; contador2++) {

for (int contador2 = 0; contador2 < 5; contador2++) {
if ( manoC[contador] == manoC[contador2] )
repeticion++;
}
if ( manoC[contador] > masPC )
masPC = manoC[contador];
if ( repeticion > pc ) {
pc = repeticion;
cartaRC = manoC[contador];
}
}
*carta = cartaRC;
/*Analiza las cartas del jugador en busca de escalera*/
for (int contador = 0; contador < 4; contador++)
if (paloC[contador] == paloC[contador + 1])
escaleraPC++;
/*Fin de fase de analisis*/
/*Comienzo de decisiones*/
if ( escaleraJ == 5 )
return 0;
if ( escaleraPC == 5 )
return 1;
if ( jugador > pc )
return 0;
if ( pc > jugador )
return 1;
if ( pc == jugador ) {
if ( cartaRC > cartaRJ )
return 1;
if ( cartaRJ > cartaRC )
return 0;
if ( cartaRJ == cartaRC )
return 3;
}
}
}

int cambial( const int * const manoC, const int * const paloC, int *mano, int *palo, int carta)
{
 for(int contador = 0; contador < 5; contador++)
   if (mano[contador] != carta)
   {
    mano[contador] = manoC[contador];
    palo[contador] = paloC[contador];
   }
}

Esta entrada fue publicada en Sin categoría. Guarda el enlace permanente.

2 respuestas a Poker

  1. Ricardo dijo:

    Aquí tienes el ‘programita’ libre de errores..Ahora debes comprobar si hace bien lo que querías que hiciese, y en su caso, modificar el código para ello..un saludo,Ric.

  2. Ricardo dijo:

    gracias ricardo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s