• Jueves 14 de Noviembre de 2024, 19:12

Autor Tema:  Domino  (Leído 2163 veces)

belen_scare

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Domino
« en: Lunes 31 de Mayo de 2004, 21:39 »
0
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();
}

belen_scare

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Domino
« Respuesta #1 en: Martes 1 de Junio de 2004, 19:39 »
0
Cita de: "belen_scare"
Gracias
Gracias

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Domino
« Respuesta #2 en: Martes 1 de Junio de 2004, 20:04 »
0
Hola!!!!!

Antes q nada no me parece q sea correcto lo q hiciste. Sinceramente cuando mire tu post y vi demasiadas lineas, no lo lei y la verdad es q dudo q mucha gente lo haya leido. La idea es hacer alguna pregunta puntual, pero para eso deberias haber mandado el codigo de la funcion q recorria de manera distinta a lo q deberia hacer. Igualmente mucho de implementaciones de grafos no se pero muchisima gente q si debe saberlo pero no podes pretender q se respondan todas tus dudas y en un tiempo corto. Hay preguntas y preguntas q llevan mas tiempo q otras y hay algunas q llevarian a q uno se ponga a debuggear lo q otro hizo y no me parece q eso sea justo. Lo q si es justo es q si uno sabe algo q otro no, se lo pueda responder pero no dar codigo asi porque si. Creo q estuviste mal y espero lo hayas entendido. No te trate mal ni nada de eso, como se q habra gente q si lo hara (y con razon). Espero disculpas, no a mi, sino a la gente del foro q se tomo el tiempo en intentar ayudarte y quizas no pudo o no supo. Espero eso de vos, creo q es justo lo q dije.

Salu2!!!!!!!!!

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Domino
« Respuesta #3 en: Martes 1 de Junio de 2004, 20:21 »
0
estoy de acuerdo con nickk

no prentenderas que revisemos todo ese codigo como si no tubieramosd nada mas que hacer...
por favor revisalo tu primero y si tienes dudas entraga un fragmento de codigo localizado.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io