• Viernes 15 de Noviembre de 2024, 03:07

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - belen_scare

Páginas: [1]
1
C/C++ / Re: Domino
« en: Martes 1 de Junio de 2004, 19:39 »
Cita de: "belen_scare"
Gracias
Gracias

2
C/C++ / Re: Lae
« en: Martes 1 de Junio de 2004, 01:52 »
Vete a esta pagina aqui vas a encontrar Diseño estructurado de algoritmos, a lo mejor puedes enconttrar aqui lo que buscas :comp:

http://www.itlp.edu.mx/publica/tutors.htm

3
C/C++ / Domino
« en: Lunes 31 de Mayo de 2004, 21:39 »
hola buenas tardes acabo e terminar un domino con grafos pero crece hacia arriba y no se como hacerle para que en igual de que creesca hacia arriba cresca para los lados me gustaria saber si me pueden ayudar por favor me urge de verdad  mi correo es belen_scare@yahoo.com.mx
de verdad me urge ojala me puedan ayudar por que ahora si que ya no se que hacer

aqui les mando el codigo del domino que tengo  :comp:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <graphics.h>
#include <dos.h>

            /* Estructuras */

/* Estructura para determinar donde estan puestas las fichas */

struct posf
{
int izq;
int der;
int arr;
int ab;
};

typedef struct posf POSFICHA;

/* Estructura de Directorios */

struct NodoDir
{
char vert[3];
int fichas;
int tipo;
/* cordenadas de la ficha */
int x;
int y;
int sent;
POSFICHA fpos;
struct NodoLy *lady;
struct NodoDir *sig;
};

/* Estructura de la Lista */

struct NodoLy
{
struct NodoDir *ptrv;
struct NodoLy *sig;
};

/* Variables Globales */

struct NodoDir *MulaActiva = NULL;
struct NodoDir *UltimaFicha = NULL;

int Pmula=0;
int ancho = 30;
int alto = 10;
int pfposx = 100;
int pfposy = 250;
int Retardo = 2000;

/* Dibuja la ficha en la pantalla */

void Dficha(int x,int y,char d1,char d2,int sentido)
{
char dt[256];

delay(Retardo);
/* Dibuja la ficha Horizontal */
setcolor(WHITE);
if(sentido == 0)
  {
   setcolor(DARKGRAY);
   bar(x,y,x+ancho,y+alto);
   setfillstyle(SOLID_FILL,WHITE);
   rectangle(x,y,x+ancho,y+alto);
   setcolor(DARKGRAY);
   line(x+ancho/2+3,y+2,x+ancho/2+3,y+alto-2);
   setcolor(LIGHTGRAY);
   line(x+ancho/2+2,y+2,x+ancho/2+2,y+alto-2);
   line(x,y,x,y+alto);
   line(x,y,x+ancho,y);
   setcolor(BROWN);
    sprintf(dt,"%c",d1);
   outtextxy(x+ancho/4,y+2,dt);
    sprintf(dt,"%c",d2);
   outtextxy(x+(ancho/4)*3,y+2,dt);
  }
  /* Dibuja la ficha Vertical */
else
  {
   setcolor(DARKGRAY);
   bar(x,y,x+alto,y+ancho);
   setfillstyle(SOLID_FILL,WHITE);
   rectangle(x,y,x+alto,y+ancho);
   setcolor(DARKGRAY);
   line(x+2,y+ancho/2+3,x+alto-2,y+ancho/2+3);
   setcolor(LIGHTGRAY);
    line(x+2,y+ancho/2+2,x+alto-2,y+ancho/2+2);
    line(x,y,x+alto,y);
    line(x,y,x,y+ancho);
   setcolor(BROWN);
    sprintf(dt,"%c",d1);
   outtextxy(x+2,y+ancho/4,dt);
    sprintf(dt,"%c",d2);
   outtextxy(x+2,y+(ancho/4)*3,dt);
  }
}

/* Determina la posicion de la ficha */

void PonerFicha(struct NodoDir *fant,struct NodoDir *fnueva,char Dt)
{
int cx=0,cy=0,sentido=0,fp=0;
int Bandera = 0;
char C1='\0';
char C2='\0';

if(fant->tipo == 0)
  {
   if(fant->sent == 0)
    {
     if(fnueva->tipo == 0)
      {
       if(fant->fpos.izq == 0 && fant->fpos.der == 0)
        {
         fant->fpos.der = 1;
         goto IZQ;
        }
       if(fant->fpos.izq == 1)
        {
         IZQ:
         cx = fant->x+ancho+1;
         cy = fant->y;
         fp = 0;
         sentido = 0;
         if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
         else
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
        }
       if(fant->fpos.der == 1)
   {
    cx = fant->x-(ancho+1);
    cy = fant->y;
    sentido = 0;
    fp = 1;
    if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
         else
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
   }
      }
     if(fnueva->tipo == 1)
      {
       if(fant->fpos.izq == 0 && fant->fpos.der == 0)
   {
    fant->fpos.der = 1;
    Bandera = 1;
    goto IZQM;
   }
       if(fant->fpos.izq == 1)
   {
    IZQM:
    cx = fant->x+ancho+1;
    sentido = 1;
    cy = fant->y-(ancho-alto)/2;
    fp=0;
    C1 = fnueva->vert[0];
    C2 = fnueva->vert[1];
   }
       if(fant->fpos.der == 1 && Bandera == 0)
   {
    cx = fant->x-(alto+1);
    sentido = 1;
    cy = fant->y-(ancho-alto)/2;
    fp = 1;
    C1 = fnueva->vert[0];
    C2 = fnueva->vert[1];
   }
      }
    }
   if(fant->sent == 1)
    {
     if(fnueva->tipo == 0)
      {
       if(fant->fpos.ab == 1)
   {
    cx = fant->x;
    sentido = 1;
    cy = fant->y-(ancho+1);
    fp = 3;
    if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
         else
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
   }
       if(fant->fpos.arr == 1)
   {
    cx = fant->x;
    sentido = 1;
    fp = 2;
    cy = fant->y+(ancho+1);
    if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
         else
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
   }
      }
     if(fnueva->tipo == 1)
      {
       if(fant->fpos.ab == 1)
   {
    cx = fant->x-(ancho-alto)/2;
    sentido = 0;
    fp = 3;
    cy = fant->y-(alto+1);
    C1 = fnueva->vert[0];
    C2 = fnueva->vert[1];
   }
       if(fant->fpos.arr == 1)
   {
    cx = fant->x-(ancho-alto)/2;
    sentido = 0;
    fp = 2;
    cy = fant->y+(ancho+1);
    C1 = fnueva->vert[0];
    C2 = fnueva->vert[1];
   }
      }
    }
  }
if(fant->tipo == 1)
  {
   if(fant->sent == 1)
    {
     if(fant->fpos.izq == 0)
      {
       cx = fant->x-(ancho+1);
       cy = fant->y+(ancho-alto)/2;
       sentido = 0;
       fp = 1;
       fant->fpos.izq = 1;
       Bandera = 1;
       if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
         else
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
      }
     if(fant->fpos.izq == 1 && fant->fpos.ab == 0 && Bandera == 0)
      {
       cx = fant->x;
       cy = fant->y+(ancho+1);
       sentido = 1;
       fp = 2;
       fant->fpos.ab = 1;
       Bandera = 1;
       if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
         else
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
      }
     if(fant->fpos.izq == 1 && fant->fpos.ab == 1 && fant->fpos.der == 0 && Bandera == 0)
      {
       cx = fant->x+(alto+1);
       cy = fant->y+(ancho-alto)/2;
       sentido = 0;
       fp = 0;
       fant->fpos.der = 1;
       Bandera = 1;
       if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
         else
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
      }
     if(fant->fpos.izq == 1 && fant->fpos.ab == 1 && fant->fpos.der == 1 && fant->fpos.arr == 0 && Bandera == 0)
      {
       cx = fant->x;
       cy = fant->y-(ancho+1);
       sentido = 1;
       fp = 3;
       fant->fpos.arr = 1;
       Bandera = 1;
       if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
         else
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
      }
    }
   if(fant->sent == 0)
    {
     if(fant->fpos.izq == 0)
      {
       cx = fant->x-(ancho+1);
       cy = fant->y;
       sentido = 0;
       fp = 1;
       fant->fpos.izq = 1;
       Bandera = 1;
       if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
         else
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
      }
     if(fant->fpos.izq == 1 && fant->fpos.ab == 0 && Bandera == 0)
      {
       cx = fant->x+(ancho-alto)/2;
       cy = fant->y+alto+1;
       sentido = 1;
       fp = 2;
       fant->fpos.ab = 1;
       Bandera = 1;
       if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
         else
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
      }
     if(fant->fpos.izq == 1 && fant->fpos.ab == 1 && fant->fpos.der == 0 && Bandera == 0)
      {
       cx = fant->x+ancho+1;
       cy = fant->y;
       sentido = 0;
       fp = 0;
       fant->fpos.der = 1;
       Bandera = 1;
       if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
         else
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
      }
     if(fant->fpos.izq == 1 && fant->fpos.ab == 1 && fant->fpos.der == 1 && fant->fpos.arr == 0 && Bandera == 0)
      {
       cx = fant->x+(ancho-alto)/2;
       cy = fant->y-(ancho+1);
       sentido = 1;
       fp = 3;
       fant->fpos.arr = 1;
       Bandera = 1;
       if(fnueva->vert[0] == Dt)
          {
           C1 = fnueva->vert[1];
           C2 = fnueva->vert[0];
          }
         else
          {
           C1 = fnueva->vert[0];
           C2 = fnueva->vert[1];
          }
      }
    }
  }
fnueva->x = cx;
fnueva->y = cy;
fnueva->sent = sentido;
if(fp == 0)
  fnueva->fpos.izq = 1;
else
  if(fp == 1)
   fnueva->fpos.der = 1;
  else
   if(fp == 2)
    fnueva->fpos.arr = 1;
   else
    if(fp == 3)
     fnueva->fpos.ab = 1;
Dficha(cx,cy,C1,C2,sentido);
}

/* Regresa la direccion del Vertice */

struct NodoDir *direccion(struct NodoDir *G,char dato[2])
{
char dt[3];
struct NodoDir *b=NULL,*c=NULL;

dt[0]=dato[1];
dt[1]=dato[0];
dt[2]='\0';

c=G;
while(b == NULL && c != NULL)
  {
   if(strcmp(c->vert,dato) == 0 || strcmp(c->vert,dt) == 0)
    b=c;
   else
    c=c->sig;
  }
return (B);
}

/* Determina si existe un arco de v a v1 */
/* Regresa */
/* -1 = Alguno de los Nodos No existe */
/*  0 = No hay Arco de v a v1 */
/*  1 = Si hay arco de v a v1 */

int adyacente(struct NodoDir *G,char v[2],char v1[2])
{
struct NodoDir *i=NULL,*j=NULL;
struct NodoLy *k=NULL;
int sw=0;

i=direccion(G,v);
j=direccion(G,v1);
if(i != NULL && j != NULL)
  if(i != NULL && sw == 0)
   {
    k=i->lady;
    while(k != NULL && sw == 0)
     {
      if(k->ptrv == j)
       sw=1;
      else
       {
        sw=0;
        k=k->sig;
       }
     }
    return(sw);
   }
  else
   return(0);
else
  return(-1);
}

/* Crea Vertice */

struct NodoDir *crearvt(char dato[2])
{
struct NodoDir *v=NULL;

v = malloc(sizeof(struct NodoDir));
strcpy(v->vert,dato);
if(v->vert[0]==v->vert[1])
  v->tipo = 1;
else
  v->tipo = 0;
v->fichas = 0;
v->sent = 0;
v->x = 0;
v->y = 0;
v->fpos.arr = 0;
v->fpos.ab = 0;
v->fpos.izq = 0;
v->fpos.der = 0;
v->lady=NULL;
v->sig=NULL;
return(v);
}

/* Regresa la direccion del ultimo nodo en el directorio */

struct NodoDir *ultimo_dir(struct NodoDir * G)
{
if(G != NULL)
  while(G->sig != NULL)
   G = G->sig;
return(G);
}

/* Agrega Nuevo vertice al grafo y regresa un apuntardor
   al principio de la lista */

struct NodoDir *nuevo_vertice(struct NodoDir *G,char dato[2])
{
struct NodoDir *a=NULL;

if(G != NULL)
  {
   a = ultimo_dir(G);
   a->sig = crearvt(dato);
  }
else
  {
   G = crearvt(dato);
   return(G);
  }
}


/* Crea el Nodo Adyacente */

struct NodoLy *creanodoady(struct NodoDir *e)
{
struct NodoLy *d=NULL;

d = malloc(sizeof(struct NodoLy));
d->ptrv = e;
d->sig = NULL;
return(d);
}

/* Regresa la direccion del ultimo nodo en la lista adyacente */

struct NodoLy *ultimo_ver(struct NodoLy *lista)
{
if(lista != NULL)
   while(lista -> sig != NULL)
    lista  = lista -> sig;
return (lista);
}

/* Crea arco o camino entre v1 y v2 */

void unionver(struct NodoDir *G,char v1[2],char v2[2])
{
struct NodoDir *f=NULL,*g=NULL;
struct NodoLy *h=NULL;

f=direccion(G,v1);
g=direccion(G,v2);
if(f != NULL && g != NULL)
  {
   if(f->lady == NULL)
     f->lady = creanodoady(g);
   else
    {
     h=ultimo_ver(f->lady);
     h->sig = creanodoady(g);
    }
   f->fichas+=1;
  }
else
  {
   clrscr();
   printf("Alguno de los Nodos Dados No existe.");
   getch();
  }

}

/* Crea Las fichas de domino y regresa el principio de la lista*/

struct NodoDir *CrearFichas(struct NodoDir *Grafo)
{
char *dato,aux[256],aux2[256];
int cont=0,cont2;

while(cont <= 6 )
  {
   for(cont2=cont;cont2<=6;cont2++)
    {
     sprintf(aux,"%d",cont);
     sprintf(aux2,"%d",cont2);
     dato = strcat(aux,aux2);
     if(Grafo == NULL)
      Grafo = nuevo_vertice(Grafo,dato);
     else
      nuevo_vertice(Grafo,dato);
      aux[0]='\0';
      aux2[0]='\0';
    }
    cont++;
  }
return(Grafo);
}

/* Dibuja la lista de Adyacencia */

void DibujaAdy(struct NodoLy *l,int posx,int posy)
{
while(l != NULL)
  {
   setcolor(RED);
   setfillstyle(SOLID_FILL,WHITE);
   bar(posx,posy,posx+25,posy+11);
   rectangle(posx,posy,posx+25,posy+11);
   setcolor(BLUE);
   outtextxy(posx+2,posy+2,l->ptrv->vert);
   if(l->sig != NULL)
    {
     setcolor(RED);
     line(posx+26,posy+6,posx+36,posy+6);
     rectangle(posx+20,posy,posx+25,posy+11);
    }
   else
    {
     setfillstyle(SOLID_FILL,RED);
     bar(posx+20,posy,posx+25,posy+11);
    }
   posx+=35;
   l=l->sig;
  }
}

/* Dibuja la lista de Directorio */

void DibujarDir(struct NodoDir *G)
{
int x=5,y=5;
int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"");
setbkcolor(LIGHTGRAY);
setcolor(BLUE);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,2);
outtextxy(420,200,"G R A F O S");
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(400,250,"Lista de Adyacencia");
outtextxy(340,270,"Todas las mulas pueden tener 4 fichas");
while(G != NULL)
  {
   setcolor(RED);
   setfillstyle(SOLID_FILL,GREEN);
   bar(x,y,x+25,y+11);
   rectangle(x,y,x+25,y+11);
   setcolor(WHITE);
   outtextxy(x+2,y+2,G->vert);
   if(G->lady == NULL)
    {
     setfillstyle(SOLID_FILL,RED);
     bar(x+20,y,x+25,y+11);
    }
   else
    {
     setcolor(RED);
     line(x+26,y+6,x+36,y+6);
     rectangle(x+20,y,x+25,y+11);
     DibujaAdy(G->lady,x+35,y);
    }
   if(G->sig != NULL)
    {
     setcolor(RED);
     line(x+12,y+12,x+12,y+16);
    }
   y+=17;
   G=G->sig;
  }
}
/* Inicio del juegos */

void inicio(struct NodoDir *G)
{
char n1,n2;
char ficha1[3];
char ficha2[3];
int gdriver=DETECT,gmode;
struct NodoDir *First;
struct NodoDir *Sec;

inicio:
clrscr();
gotoxy(1,1);printf(" <- Ficha Inicial -> ");
gotoxy(1,9); printf("ÉÍÍÍÍÍËÍÍÍÍÍ»");
gotoxy(1,10);printf("º     º     º");
gotoxy(1,11);printf("ÈÍÍÍÍÍÊÍÍÍÍͼ");
textcolor(YELLOW);


fflush(stdin);
gotoxy(4,10);scanf("%c",&n1);
fflush(stdin);
gotoxy(10,10);scanf("%c",&n2);

ficha1[0]=n1;
ficha1[1]=n2;
ficha1[2]='\0';

if(direccion(G,ficha1) != NULL)
  {
    initgraph(&gdriver,&gmode,"");
    setbkcolor(CYAN);
    First = direccion(G,ficha1);
    First->x = pfposx;
    First->y = pfposy;
    First->sent = 0;
    Dficha(pfposx,pfposy,First->vert[0],First->vert[1],First->sent);
   if(n2 > n1)
    {
     ficha2[0]=n2;
     ficha2[1]=n2;
     ficha2[2]='\0';
    }
   else
    {
     ficha2[0]=n1;
     ficha2[1]=n1;
     ficha2[2]='\0';
    }
   if(strcmp(ficha1,ficha2) != 0)
    {
     unionver(G,ficha1,ficha2);
     unionver(G,ficha2,ficha1);
     MulaActiva = direccion(G,ficha2);
    }
   else
    {
     if(ficha1[1] != '0')
       ficha2[0]='0';
     else
      ficha2[1]='1';
     unionver(G,ficha1,ficha2);
     unionver(G,ficha2,ficha1);
     MulaActiva = direccion(G,ficha1);
    }

     Sec =direccion(G,ficha2);
     if(First->tipo == 1)
      PonerFicha(First,Sec,First->vert[0]);
     else
      PonerFicha(First,Sec,Sec->vert[0]);
  }
else
  {
   clrscr();
   printf("Esa Ficha no existe");
   getch();
   goto inicio;
  }
}

/* Hace los movimientos de las Mulas */

void Mulas(struct NodoDir * G)
{
struct NodoDir *Naux;

Naux = G;
while(MulaActiva != NULL)
   if((MulaActiva->fichas < 4))
    {
     while(Naux != NULL)
      {
       if(Naux->vert[0] == MulaActiva->vert[0] || Naux->vert[0] == MulaActiva->vert[1] || Naux->vert[1] == MulaActiva->vert[0] || Naux->vert[1] == MulaActiva->vert[1])
   {
    if(strcmp(Naux->vert,MulaActiva->vert) != 0)
     if(adyacente(G,MulaActiva->vert,Naux->vert) == 0)
      {
       if(Naux->fichas < 4 && Naux->lady == NULL)
        {
         unionver(G,MulaActiva->vert,Naux->vert);
         unionver(G,Naux->vert,MulaActiva->vert);
         UltimaFicha = Naux;
         PonerFicha(MulaActiva,Naux,MulaActiva->vert[0]);
        }
      }
   }
       if((MulaActiva->fichas >= 4 ))
        goto cerrar;
       Naux=Naux->sig;
      }
     goto cerrar;
    }
   else
    {
     cerrar:
     Pmula=1;
     MulaActiva = NULL;
    }
}

/* Determian que numero de la ficha es el que esta libre */

char Suelta(struct NodoDir *Fi)
{
if(Fi->vert[0] == Fi->lady->ptrv->vert[0] || Fi->vert[0] == Fi->lady->ptrv->vert[1])
  return(Fi->vert[1]);
else
  return(Fi->vert[0]);
}

/* Selecciona la ficha que sea Mayor */

struct NodoDir *BusMay(struct NodoDir *G,int *Igual,char *libre)
{
struct NodoDir *F=NULL,*Sel=NULL;
char sueltas[4];
char suelta1;
char suelta2;
int x=0;

F=G;
while(F != NULL)
  {
   if(F->lady != NULL && F->fichas < 2)
    {
     if(Sel == NULL)
      {
       Sel = F;
       sueltas
  • = Suelta(Sel);

       *libre = sueltas
  • ;

       x+=1;
      }
     else
      {
       suelta1 = Suelta(Sel);
       suelta2 = Suelta(F);
       sueltas
  • =suelta2;

       x+=1;
       if(suelta2 > suelta1)
   {
    *libre = suelta2;
    Sel = F;
   }
      }
    }
   F = F->sig;
  }
  if(sueltas[0] == sueltas[1] && sueltas[0] == sueltas[2] && sueltas[0] == sueltas[3])
   *Igual = 1;
  return(Sel);
}

/* Busca la Ficha que se va a poner Regresa a FIN si se cierra o se terminan las Fichas */

char *BusFi(struct NodoDir *G,char libre)
{
struct NodoDir *N=NULL;

N=G;
while(N != NULL)
  {
   if(N->lady == NULL)
    if(libre == N->vert[0] || libre == N->vert[1])
     return(N->vert);
   N=N->sig;
  }
return("FIN");
}

/* Dibuja Las Fichas Sobrantes */

void FSobr(struct NodoDir *G)
{
int x=10,y=430;

while(G != NULL)
{
if(G->lady == NULL)
  {
   Dficha(x,y,G->vert[0],G->vert[1],0);
   x+=70;
   if(x > 600)
    {
     y+=30;
     x=10;
    }
  }
G=G->sig;
}
}

/* Simula el Juego de Domino */

void Juego(struct NodoDir *G)
{
int Eq=0;
struct NodoDir *FSel;
struct NodoDir *Fnu;

char Libre,*Nfi;
char Fmula[3];

inicio(G);
while('?')
  {
   if(MulaActiva != NULL)
    {
     Mul:
     Mulas(G);
    }
    FSel = BusMay(G,&Eq,&Libre);
    Fmula[0] = Libre;
    Fmula[1] = Libre;
    Fmula[2] = '\0';
    MulaActiva = direccion(G,Fmula);
    if(MulaActiva->fichas == 0)
     {
      unionver(G,FSel->vert,Fmula);
      unionver(G,Fmula,FSel->vert);
      PonerFicha(FSel,MulaActiva,Libre);
      goto Mul;
     }
    Nfi=BusFi(G,Libre);
     /* Termina el bucle y sale de la funcion */
    if(strcmp(Nfi,"FIN") == 0)
     break;
    Fnu = direccion(G,Nfi);
    randomize();
    if(Eq == 0)
     {
      unionver(G,Nfi,FSel->vert);
      unionver(G,FSel->vert,Nfi);
      UltimaFicha = Fnu;
      PonerFicha(FSel,Fnu,Libre);
     }
    else
     {
      unionver(G,Nfi,UltimaFicha->vert);
      unionver(G,UltimaFicha->vert,Nfi);
      PonerFicha(UltimaFicha,Fnu,Libre);
      UltimaFicha = Fnu;
     }

    if(Fnu->tipo == 1)
     {
      MulaActiva = direccion(G,Nfi);
      goto Mul;
     }
  }
outtextxy(200,400,"FICHAS SOBRANTES");
}

/* Modulo Principal */

void main(void)
{
struct NodoDir *GRAFO=NULL;

clrscr();
GRAFO = CrearFichas(GRAFO);
Juego(GRAFO);
Retardo = 100;
FSobr(GRAFO);
getch();
}

Páginas: [1]