Juego de Poker hecho por mi! Denle una probada!

1 05 2008

Bueno, siguiendo con mis estudios de C++ llegue a un ejercicio (Todavia en el capitulo de los apuntadores^^) donde te dicen que hagas un juego de poker, claro, que es dificil, pero bueno, lo resolvi y lo pongo aqui por si alguien quiere echarle una mirada o mejorarlo. Tengan en cuenta que el codigo es bastante “newbie”. AVISO: El juego paso a la pagina Juego de Poker, esta version del codigo es muy mala y no esta comentada, recomiendo que vayan a “Juego de Poker” en vez de esta, aun asi, no tiene errores (Al menos con el G++ que tengo).

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
void despliega( const char *[] , const char *[] , int const *, int const * );
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 *);
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] = { 0 , 1, 2, 3, 4, 5 , 6,  7, 8, 9 , 10, 11, 12};
const char *palo[ 4 ] =  { "Corazones", "Diamantes", "Treboles ", "Espadas   " };
const char *cara[ 13 ] =
{ "As", "Dos", "Tres", "Cuatro",
"Cinco", "Seis", "Siete", "Ocho",
"Nueve", "Diez", "Joto", "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, 0);
repartir( baraja, paloC , manoC, cartas, 5 );
repartir( baraja, paloCambio, manoCambio, cartas, 10);
repartir( baraja, cambiarJ, cambiarJM, cartas, 15 );
cout << "Su mano es: \n";
despliega( cara, palo, manoJ, paloJ );
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 ] = cambiarJ[ cambiar - 1 ];
}
}
system("cls");
cout << "Su nueva mano es:\n";
despliega( cara, palo, manoJ, paloJ );
printf("\n\n");
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++;
despliega( cara, palo, manoC, paloC );
cout << "La pc gano!\n";
break;
case 3:
numeroE++;
despliega( cara, palo, manoC, paloC);
cout << endl << endl;
cout << "Hubo un empate!\n";
break;
}
if (swiche == 1) {
cout << "La mano de la pc es:\n";
despliega( cara, palo, manoC, paloC );
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 gano\n" << endl;
break;
case 3:
numeroE++;
cout << "Empate!\n" << endl;
break;
}
}
system("pause");
}
system("cls");
cout << setw( 10 ) << "La pc gano " << numeroP << " veces" << endl;
cout << setw( 10 ) << "El jugador gano " << numeroJ << " veces" << endl;
cout << setw ( 10 ) << "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  + 5 ; 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++) {
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 desiciones*/
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];
}

}
void despliega( const char *cara[], const char *palo[],  int const *mano,  int  const *palom ) {
int contador = 0;
for ( contador = 0; contador < 20; contador++ )
printf("/");
printf("\n");
for ( contador = 0; contador < 5 ; contador++ )
printf("%s de %s\n", cara[mano[contador]], palo[palom[contador]]  );
for ( contador = 0; contador < 20; contador++)
printf("/");
printf("\n");
}

Acciones

Información

3 respuestas a “Juego de Poker hecho por mi! Denle una probada!”

1 05 2008
Juego de Poker hecho por mi! Denle una probada! (15:36:22) :

[...] apprendre le poker gratuites wrote an interesting post today onHere’s a quick excerptBueno, siguiendo con mis estudios de C++ llegue a un ejercicio (Todavia en el capitulo de los apuntadores^^) donde te dicen que hagas un juego de poker, claro, que es dificil, pero bueno, lo resolvi y lo pongo aqui por si alguien quiere echarle una mirada o mejorarlo. Tengan en cuenta que el codigo es bastante “newbie” (Aunque no tiene errores) y que por eso no tiene funcion para apuestas. Buennno el codigo es este: [...]

9 07 2008
Javier (05:17:22) :

Tiene varios errores en la compilacion!

11 07 2008
debianusr (16:58:58) :

Si? Que extraño… yo estoy usando el g++ 3.4.2, quizas sea porque cuando uno postea el codigo, algunas comillas salen mal y otras cosas tambien (Si, aunque no lo creas, postear un codigo fuente que salga bien es dificil :S). De todos modos, este codigo esta un poco mal ademas de que no esta comentado. Si ves, en la barra que esta despues de la cabecera, veras que ademas de “Pagina principal” y “about” hay una que dice “Juego de Poker”, alli esta el codigo, mejor estructurado y comentado. Ademas de que tiene colores ^^.

Aun asi me gustaria que pusieras los errores que te da… que compilador usas y que sistema operativo, para probarlo a ver que ocurre.

Deja un comentario

Puedes usar estas etiquetas : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>