Buenas tardes espero me puedan ayudar,
Tengo que hacer un programa para poder jugar un juego de cartas sencillo donde se reparten 5 cartas a cada jugador y el primero en tener 3 pares (que haga el ultimo par con la carta que roba) gane.
Ya tengo una idea de como hacer la mayoría del código para que el programa funcione, solo que mi problema es que no se muy bien como barajar las cartas tengo una idea en mi código pero esta mal ya que tengo mal el random si alguien me podría decir como cambiarlo o que esta mal para poder barajar y meter las cartas a la pila se lo agradecería muchísimo ya que llevo horas y nada se me ocurre.
Soy estudiante de ingeniería desoftware y apenas es mi segundo cuatrimestre por lo tanto todavía no se mucho ni domino esto de la programación.
Gracias por su tiempo.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <alloc.h>
#include <conio.h>
#define tarjetas 5
/*elegimos usar 4 tipos diferetes de palos a la baraja normal ya que lo que es el corazon,
la espada, el trebol y el diamante no se pueden mostrar cuando se corre el programa.
printf("%i%c", mazo[10]);*/
struct c{
int x;
char signo;
};
void push(struct c *cartas, int *tope, struct c mazo);
struct c pop(struct c *cartas, int *tope);
int main (void)
{
char jugador1[tarjetas]={0};
char jugador2[tarjetas]={0};
char jugador3[tarjetas]={0};
char jugador4[tarjetas]={0};
struct c *cartas;
int a, b, i, tope=-1;
struct c mazo[52]={
{1,155},
{2,155},
{3,155},
{4,155},
{5,155},
{6,155},
{7,155},
{8,155},
{9,155},
{10,155},
{11,155},
{12,155},
{13,155},
{1,156},
{2,156},
{3,156},
{4,156},
{5,156},
{6,156},
{7,156},
{8,156},
{9,156},
{10,156},
{11,156},
{12,156},
{13,156},
{1,157},
{2,157},
{3,157},
{4,157},
{5,157},
{6,157},
{7,157},
{8,157},
{9,157},
{10,157},
{11,157},
{12,157},
{13,157},
{1,159},
{2,159},
{3,159},
{4,159},
{5,159},
{6,159},
{7,159},
{8,159},
{9,159},
{10,159},
{11,159},
{12,159},
{13,159}
};
cartas=malloc(sizeof(struct c)*52);
clrscr();
randomize();
for(i=0;i<52;i++)
{
b=mazo[random(52)];
if(mazo[i].x!=0)
push(cartas, &tope, b);
b=0;
}
printf("Cuantos jugadores seran: ");
scanf("%i", &a);
switch(a)
{
case 1:
gotoxy(20,2);
printf("Jugador 1");
break;
}
return 0;
}
void push(struct c *cartas, int *tope, struct c mazo)
{
(*tope)++;
if(*tope<52)
cartas[*tope]=mazo;
return;
}
struct c pop(struct c *cartas, int *tope)
{
struct c x;
x=cartas[*tope];
(*tope)--;
if(*tope==-1)
printf("Empate");
return x;
}