#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct ficha {
int numder;
struct ficha *der;
int numizq;
struct ficha *izq;
};
typedef struct ficha FICHA;
typedef struct ficha *PTRFICHA;
FICHA Ficha[28];
PTRFICHA Jugador[4][7], Monton[28], cabeza, cola;
void InicializaFichas ()
{
int i, j;
for (i = 0; i < 7; i++)
for (j = i; j < 7; j++) {
int k, m;
for (k = m = 0; m < i; m++)
k += 7 - m;
Ficha[k + j - i].numder = i;
Ficha[k + j - i].numizq = j;
Ficha[k + j - i].der = Ficha[k + j - i].izq = NULL;
}
randomize ();
}
void NuevoJuego ()
{
int i, j;
for (i = 0; i < 28; i++) {
Ficha[i].der = Ficha[i].izq = NULL;
Monton[i] = Ficha + i;
}
for (i = 0; i < 4; i++)
for (j = 0; j < 7; j++)
Jugador[i][j] = NULL;
cabeza = cola = NULL;
}
PTRFICHA EscogeFicha ()
{
int i;
PTRFICHA p;
while (1) {
i = random (28);
if (Monton[i] != NULL) {
p = Monton[i];
Monton[i] = NULL;
return p;
}
}
}
void ReparteFichas (int numjugador)
{
int i;
for (i = 0; i < 7; i++)
Jugador[numjugador][i] = EscogeFicha ();
}
void ImprimeFichasJugador (int numjugador)
{
int i;
printf ("\n\n");
for (i = 0; i < 7; i++)
printf ("%d ", Jugador[numjugador][i]->numizq);
printf ("\n");
for (i = 0; i < 7; i++)
printf ("- ");
printf ("\n");
for (i = 0; i < 7; i++)
printf ("%d ", Jugador[numjugador][i]->numder);
}
int main ()
{
int i;
InicializaFichas ();
NuevoJuego ();
for (i = 0; i < 4; i++)
ReparteFichas (i);
for (i = 0; i < 4; i++)
ImprimeFichasJugador (i);
}