Dev - C++ - juego en C

 
Vista:

juego en C

Publicado por Nico (1 intervención) el 01/02/2011 22:35:34
/*El mazo era sin palos y de 40 cartas del 1 al 10.
Intervenian cuatro jugadores.
Se repartian 6 cartas a cada jugador y jugaba automaticamente sin intervencion del usuario.

Las condiciones para ganar eran:

Que la mano del jugador tuviera 2 cartas iguales y despues otras 4 iguales .
En este caso imprimia en pantallaque el jugador ha ganado con dosXcuatro
Que la mano del jugador tuviera 3 cartas iguales y otras 3 iguales.
En este caso imprimia en pantalla que el jugador habia ganado con tresXtres.
Que la mano del jugador tuviera tres pares de cartas iguales.
En este ultimo caso imprimia en pantalla que el jugador habia ganado con dosALAtres.

El juego se desarrollaba con las siguientes condiciones:

Cada jugador descartaba una carta que la debia colocar al final del mazo y recibia otra carta del mazo.
La carta que se descartaba tenia q ser alguna q no se repitiese.
En cada jugada tenia q imprimir las cartas que tenia el jugador, la que tiraba, y las que tenia depues
de tirarla.

se tiene que mezclar el mazo sino siempre descartan y optienen las mismas cartas
o se varia el numero de cartas. Paso a tener 48 (4X12)
---------------------------------------no termina nunca y no se porque...
*/


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<string.h>

#define CANT_CARTAS_MAZO 40
#define CANT_CARTAS_JUGADOR 6
#define JNADA 0
#define J2X2 1
#define J3X2 2
#define J4X2 3

//------------------------------------------------------------------------------
int jugar(int turno,int jugador[],int mazo[]);
int juego3X3(int frecu[]);
int juego2X2(int frecu[]);
int juego2X4(int frecu[]);
void generar_mazo(int mazo[]);
void mezclar_mazo(int mazo[]);
void ponerUnaCarta(int mazo[],int carta);
int dameUnaCarta(int mazo[]);
void repartir(int mazo[],int j1[],int j2[],int j3[],int j4[]);
int dameTurno(int t);
void mostrarMazo(char cartelito[],int mazo[]);
void mostrarJugador(char cartelito[],int mazo[]);

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int main()
{ srand(time(NULL));
int t=0;
int resultado;
int ganar=0;
int mazo[CANT_CARTAS_MAZO+1];
int j1[CANT_CARTAS_JUGADOR];
int j2[CANT_CARTAS_JUGADOR];
int j3[CANT_CARTAS_JUGADOR];
int j4[CANT_CARTAS_JUGADOR];


generar_mazo(mazo);
mezclar_mazo(mazo);
mostrarMazo("MAZO",mazo);
repartir(mazo,j1,j2,j3,j4);
mostrarJugador("MANO JUGADOR 1",j1);
mostrarJugador("MANO JUGADOR 2",j2);
mostrarJugador("MANO JUGADOR 3",j3);
mostrarJugador("MANO JUGADOR 4",j4);

while(ganar==0)
{
t=dameTurno(t);
switch(t)
{
case 1 :
resultado = jugar(t,j1,mazo);
break;
case 2 :
resultado = jugar(t,j2,mazo);
break;
case 3 :
resultado = jugar(t,j3,mazo);
break;
case 4 :
resultado = jugar(t,j4,mazo);
break;

}
if(resultado != JNADA)
{
ganar = 1;
printf("GANA EL JUGADOR: %d CON %d ",t,resultado);

}
}

return 0;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void mostrarMazo(char cartelito[],int mazo[])
{
int i;

printf("\n%s : ",cartelito);
for(i=0;i<mazo[CANT_CARTAS_MAZO];i++)
{
printf("%d,",mazo[i]);
}

}
//------------------------------------------------------------------------------
void mostrarJugador(char cartelito[],int mazo[])
{
int i;

printf("\n%s : ",cartelito);
for(i=0;i<6;i++)
{
printf("%d,",mazo[i]);
}

}
//------------------------------------------------------------------------------
int jugar(int turno,int jugador[],int mazo[])
{
int i,frecu[10];
int carta;
int h;

printf("\n\n\nJUEGA EL JUGADOR %d",turno);
mostrarJugador("MANO: ",jugador);
for(i=0;i<10;i++)frecu[i] = 0;//PONGO LA FRECUENCIA EN CERO
for(i=0;i<CANT_CARTAS_JUGADOR;i++)frecu[jugador[i]]++;

if(juego2X2(frecu)==1)
{
return J2X2;
}
if(juego2X4(frecu)==1)
{
return J4X2;
}
if(juego3X3(frecu)==1)
{
return J3X2;
}

i=0;while(i<10&&frecu[i]!=1)i++;//BUSCAR UNA CARTA CON FREC. 1
carta = i;
printf("\nSE DESCARTA EL JUGADOR %d CARTA: %d",turno,carta);
i=0;while(i<10&&jugador[i]!=carta)i++;//BUSCAR LA CARTA A ELIMINAR EN EL JUGADOR
for(h=i;h<CANT_CARTAS_JUGADOR-1;h++)
{
jugador[h]=jugador[h+1];// CORRER TODAS LAS CARTAS A LA IZQ DEL JUGADOR
}
ponerUnaCarta(mazo,carta);//
carta = dameUnaCarta(mazo);//
mezclar_mazo(mazo);
jugador[CANT_CARTAS_JUGADOR-1] = carta;
printf("\nTOMA UNA CARTA DEL MAZO EL JUGADOR %d CARTA: %d",turno,carta);
for(i=0;i<10;i++)frecu[i] = 0;//PONGO LA FRECUENCIA EN CERO
for(i=0;i<CANT_CARTAS_JUGADOR;i++)frecu[jugador[i]]++;//CALCULAR LA FRECUENCIA

if(juego2X2(frecu)==1)
{
return J2X2;
}
if(juego2X4(frecu)==1)
{
return J4X2;
}
if(juego3X3(frecu)==1)
{
return J3X2;
}
return JNADA;

}
//------------------------------------------------------------------

int juego3X3(int frecu[])
{
int i;
int hayTres;

for(i=0;i<10;i++)
{
if(frecu[i]==3)
{
hayTres ++;
}
}
if(hayTres==2)
{
return 1;
}
return 0;//false
}

//------------------------------------------------------------------------------
int juego2X2(int frecu[])
{
int i;
int hayDos;

for(i=0;i<10;i++)
{
if(frecu[i]==2)
{
hayDos ++;
}
}
if(hayDos==3)
{
return 1;
}
return 0;//false
}
//------------------------------------------------------------------------------
int juego2X4(int frecu[])
{
int i;
int hayDos,hayCuatro;

for(i=0;i<10;i++)
{
if(frecu[i]==2)
{
hayDos ++;
}
if(frecu[i]==4)
{
hayCuatro ++;
}
}
if(hayDos==1&&hayCuatro==1)
{
return 1;
}
return 0;//false
}
//------------------------------------------------------------------------------
void generar_mazo(int mazo[])
{
int i,j,k=0;

for(i=1;i<=4;i++)
{
for(j=1;j<=10;j++)
{
mazo[k]=j;
k++;
}
}
mazo[CANT_CARTAS_MAZO] = CANT_CARTAS_MAZO;
}
//------------------------------------------------------------------------------
void mezclar_mazo(int mazo[])
{
int i,j,k,aux;

for(k=0;k<500;k++)
{
i=rand()%mazo[CANT_CARTAS_MAZO];
j=rand()%mazo[CANT_CARTAS_MAZO];
aux=mazo[i];
mazo[i]=mazo[j];
mazo[j]=aux;
}
}
//------------------------------------------------------------------------------
void ponerUnaCarta(int mazo[],int carta)
{
int p = mazo[CANT_CARTAS_MAZO];

mazo[p]=carta;
mazo[CANT_CARTAS_MAZO]++;
}
//------------------------------------------------------------------------------
int dameUnaCarta(int mazo[])
{
int sale = mazo[0];
int i;

for(i=0;i<mazo[CANT_CARTAS_MAZO]-1;i++)
{
mazo[i] = mazo[i+1];
}
mazo[CANT_CARTAS_MAZO]--;
return sale;
}
//------------------------------------------------------------------------------
void repartir(int mazo[],int j1[],int j2[],int j3[],int j4[])
{
int i;

for(i=0;i<6;i++)
{
j1[i] = dameUnaCarta(mazo);
j2[i] = dameUnaCarta(mazo);
j3[i] = dameUnaCarta(mazo);
j4[i] = dameUnaCarta(mazo);
}
}
//------------------------------------------------------------------------------
int dameTurno(int t)
{
if(t==1)
{
return 2;
}
if(t==2)
{
return 3;
}
if(t==3)
{
return 4;
}

return 1;
}
//------------------------------------------------------------------------------
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder