Ludo en modo consola - Proyecto del Liceo

Iniciado por dosnuker, 20 Enero 2010, 01:53 AM

0 Miembros y 1 Visitante están viendo este tema.

dosnuker

Bueno aki les presento el código de mi proyecto de Ludo en modo consola para el 4to año del liceo, si encuentran alguna deficiencia se los agradecería muxo que me la informaran para poder optimizarlo (aunque ya lo presenté en el colegio así como está, pero me gustaría mejorarlo para satisfacción personal).
Está compilado completamente en Borland debido a que es el compilador que exigen en el colegio.
Comenté las líneas de código que pensé sería apropiado explicar.

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<windows.h>
char clave1[3], c1[20],c2[20],j1[30],j2[30];
int clave[3], ins=0, dado, casilla1=0, casilla2=0, j=1;
void menu();    // predeclaracion del procedimiento menu para comodidad de trabajo
void logo()
{
     textcolor(10);
     gotoxy(60,2);cprintf("        --       ");
     gotoxy(60,3);cprintf("       |  |      ");
     gotoxy(60,4);cprintf("       |  |      ");
     gotoxy(60,5);cprintf("       |  |      ");
     gotoxy(60,6);cprintf(" ------    ------");
     gotoxy(60,7);cprintf("|   RIP GAMES ® |");
     gotoxy(60,8);cprintf(" ------    ------");
     gotoxy(60,9);cprintf("       |  |      ");
     gotoxy(60,10);cprintf("       |  |      ");     
     gotoxy(60,11);cprintf("       |  |      ");     
     gotoxy(60,12);cprintf("       |  |      ");
     gotoxy(60,13);cprintf("       |  |      ");
     gotoxy(60,14);cprintf("       |  |      ");
     gotoxy(60,15);cprintf("        --       ");
     textcolor(7);
}
void blink(char palabra[], int cantidad, int tiempo, int color, int x, int y) //emula el pestañeo del blink
{ //parametros: palabra a usar, cantidad de veces q pestañeara, tiempo de cada pestañeo, color de la palabra, coordenadas X-Y
     textcolor(color);
     for(int i=0;i<cantidad;i++)    //de 0 a "cantidad" (controla la cantidad de pestañeos)
     {
          for(int j=1;j<=(strlen(palabra));j++)//de 1 a "largo de la palabra" (calcula las coordenadas q debe borrar)
          {
               gotoxy(x+j-1,y);cprintf(" ");//borra "palabra" escrita en la repeticion anterior
          }
          Sleep(tiempo);    //usa el parametro tiempo para saber cuanto dura el parpadeo
          gotoxy(x,y);cprintf(palabra); //escribe la palabra
          Sleep(tiempo);    //vuelve a esperar..
     }
     textcolor(6);  //vuelve al color amarillo caracteristico de la mayoria de los mensajes del juego
}
void salir()                  //sale de la aplicacion
{
     logo();
     textcolor(6);
     gotoxy(5,5);cprintf("Gracias por probar con juegos RIP GAMES!");
     gotoxy(5,18);cprintf("Esperamos que el juego haya sido de su agrado y que lo sigan usando.");
     gotoxy(5,19);cprintf("No olvide mantenerse al tanto de las actualizaciones que puedan surgir!");
     blink("HASTA PRONTO",5,500,12,15,12);
     textcolor(12);
     gotoxy(5,21);cprintf("Presione una tecla para salir de la aplicacion. ");
     getch();
     exit(0);
}
void transambos()   //transicion por ambos lados
{
     textcolor(15);
     int x=1;   
     for(int j=75;j>1;j--)  //de 75 a 2, para controlar las coordenadas X
     {   
          for(int i=24;i>1;i--)  //de 24 a 2, controla la coord Y del <<
          {
                  gotoxy(j,i);cprintf("  < ");
                  i--;    //permite el efecto de zig-zag (uno va adelante del otro)
                  gotoxy(j+1,i);cprintf("  < ");
          }
          for(int i=1;i<24;i++) //de 1 a 23, controla la coord Y del >>
          {
                  gotoxy(x,i);cprintf("  > ");
                  i++;  //permite el efecto de zig-zag (uno va adelante del otro)
                  gotoxy(x+1,i);cprintf("  > ");
          }
          x++;    //otro contador como la J, pero para la cortina contraria (aumenta)
          Sleep(30); //tiempo de espera para mover de columna (mover en X)
     }
     clrscr();
     textcolor(7);
}
void transizq()  //transicion hacia la izquierda
{
     textcolor(15);
     for(int j=77;j>1;j--)//controla las X
     {
          for(int i=24;i>1;i--) //controla las Y
          {
                  gotoxy(j,i);cprintf("  < ");
                  i--; //permite el zig-zag
                  gotoxy(j+1,i);cprintf("  < ");
          }
          Sleep(15); //tiempo de espera para mover de columna (mover en X)
     }
     clrscr();
     textcolor(7);
}
void transder()  //transicion hacia la derecha
{
     textcolor(15);
     for(int j=1;j<77;j++) //controla las X
     {
          for(int i=1;i<24;i++) //controla las Y
          {
                  gotoxy(j,i);cprintf("  > ");
                  i++;   //permite el zig-zag
                  gotoxy(j+1,i);cprintf("  > ");
          }
          Sleep(15); //tiempo de espera para mover de columna (mover en X)
     }
     clrscr();
     textcolor(7);
}
void instrucciones()
{
  textcolor(3);
  gotoxy(12,2);cprintf("* * * * * INSTRUCCIONES * * * * *");
  textcolor(3);
  gotoxy(7,4);cprintf("Objetivos del juego:");
  textcolor(6);
  gotoxy(7,5);cprintf(" - Llegar con su ficha de jugador hasta la casilla 57 para ganar!");
  gotoxy(7,6);cprintf(" - Aumentar las capacidades de razonamiento logico de los alumnos.");
  gotoxy(7,7);cprintf(" - Entretener al publico en general.");
  textcolor(3);
  gotoxy(7,9);cprintf("Requerimientos de hardware Recomendados:");
  textcolor(6);
  gotoxy(7,10);cprintf("     -16 mb de memoria ram.");
  gotoxy(7,11);cprintf("     - Procesador de 1 ghz.");
  gotoxy(7,12);cprintf("     - Espacio libre en disco duro: 6 mb.");
  textcolor(3);
  gotoxy(7,14);cprintf("Requerimientos de Software Recomendados:");
  textcolor(6);
  gotoxy(7,15);cprintf("     - Sistema Operativo: windows 98/XP/Vista/7");
  gotoxy(7,16);cprintf("     - Controladores Requeridos por el Hardware del equipo.");
  gotoxy(7,18);system("PAUSE");
  transizq();
  textcolor(3);
  gotoxy(10,2);cprintf("* * * Logistica y reglas * * *");
  textcolor(6);
  gotoxy(2,4);cprintf("1- Cada ficha se movera de acuerdo al numero indicado por el dado.");
  gotoxy(2,6);cprintf("2- El dado se lanzara automaticamente cada 4 segundos.");
  gotoxy(2,8);cprintf("3- Gana el jugador cuya ficha se posicione justo sobre la casilla 57,");
  gotoxy(2,9);cprintf("es decir, la casilla LLEGADA.");
  gotoxy(2,11);cprintf("4- Si un jugador saca una cantidad excesiva a la requerida para ganar,");
  gotoxy(2,13);cprintf("   debera devolverse tantos espacios como cantidad de casillas se haya excedido");
  gotoxy(2,15);cprintf("   EJEMPLO: si le falta 1 casilla para ganar y saca 3 en el dado,");
  gotoxy(2,16);cprintf("   debera devolverse 2 casillas.");
  gotoxy(5,19);system("PAUSE");
  transder();
  textcolor(3);
  gotoxy(20,2);cprintf("* * * * Elementos del menu * * * *");
  textcolor(6);
  gotoxy(2,4);cprintf("1- Inscripcion de los jugadores: ");
  gotoxy(2,5);cprintf("Esta opcion se usa para registrar a ambos jugadores, solicitandoles sus nombres");
  gotoxy(2,6);cprintf("y cedulas de identidad. Una vez registrados ambos, el sistema genera una");
  gotoxy(2,7);cprintf("clave de 4 digitos que debera ser ingresada por los usuarios antes del juego.");
  gotoxy(2,9);cprintf("2- Juego Ludo version 1.0 (dos jugadores): ");
  gotoxy(2,10);cprintf("Opcion que da acceso al juego solicitando la clave de registro dada.");
  gotoxy(2,11);cprintf("Crea el tablero de juego, lanza el dado cada 4 segundos y mueve las fichas ");
  gotoxy(2,12);cprintf("hasta que alguna de ellas llegue a la casilla 57. Luego, muestra el nombre");
  gotoxy(2,13);cprintf("del ganador en una pantalla de premiacion.");
  gotoxy(2,15);cprintf("3- Instrucciones: ");
  gotoxy(2,16);cprintf("Muestra los objetivos del juego, los requerimientos de software y hardware");
  gotoxy(2,17);cprintf("para su optima ejecucion, las reglas y explica los elementos del menu.");
  gotoxy(2,19);cprintf("4- Salir: ");
  gotoxy(2,20);cprintf("Esta opcion permite salir de la aplicacion mediante un mensaje de despedida.");
  gotoxy(2,22);
  system("PAUSE");
  transizq(); 
  menu();
}
void limpiardatos()      //vacia todas las variables con datos de la sesion
{
     textcolor(12);
     gotoxy(5,19);cprintf("Sus datos han sido reiniciados.");
     gotoxy(5,20);cprintf("Debera volver a ingresar toda la informacion solicitada anteriormente.");
     gotoxy(5,22);system("PAUSE");
     textcolor(7);
     strcpy(c1,"");strcpy(c2,"");strcpy(j1,"");strcpy(j2,"");ins=0;casilla1=0;casilla2=0;
}
void mickey()
{   
     textcolor(15);
     gotoxy(5,5);cprintf("::::::::::::::::::::::::::::::::::::::::::");
     gotoxy(5,6);cprintf("::::::::::-''''''-::::::::::::::::::::::::");
     gotoxy(5,7);cprintf("::::::::'         ':::::::::::::::::::::::");
     gotoxy(5,8);cprintf(":::::::'           '::::::::::::::::::::::");
     gotoxy(5,9);cprintf(":::::::             ::::::::::::::::::::::");
     gotoxy(5,10);cprintf(":::::::            ''''''''''-::::::::::::");
     gotoxy(5,11);cprintf("::::::::.            d@MZ#%z.X.'::::::::::");
     gotoxy(5,12);cprintf("::::::::::,....      %D6kX7:!#M'.'::'  '::");
     gotoxy(5,13);cprintf("::::::::::::::       '@MRMX9$b?'Rc'>    ::");
     gotoxy(5,14);cprintf("::::::---:::::         #M5M?''&  :H.    ::");
     gotoxy(5,15);cprintf(":::'      '':     ..... ^%D&. :HM<@Mx..d':");
     gotoxy(5,16);cprintf("::               HI@MD6@huXM5@8$@XS@MI@l::");
     gotoxy(5,17);cprintf("::              )6@R#^'7MBMMR6@RB6NI6@F,::");
     gotoxy(5,18);cprintf("::              'M5@d5x'5@RI@@IM@$B@*),:::");
     gotoxy(5,19);cprintf("::.           ,, 'M8@RI@n '*R5@MR*'',:::::");
     gotoxy(5,20);cprintf(":::.         ':::,.*R6*E#>      ,.::::::::");
     gotoxy(5,21);cprintf(":::::,,....,::::::::,,::.': _ .~,:::::::::");
     gotoxy(5,22);cprintf("::::::::::::::::::::::::::,,..,:::::::::::");
     textcolor(7);
}
void premio(char jugador[])            // genera la pantalla de premiacion, dando el nombre del ganador
{
     clrscr();
     textcolor(6);
     gotoxy(4,3);cprintf("Felicitaciones %c   !!! ",jugador);
     gotoxy(4,4);cprintf("Usted es el feliz ganador del JUEGO LUDO VERSION 1.0");
     gotoxy(4,5);cprintf("Al ser esta una version BETA de la aplicacion, su recompensa sera otorgada");
     gotoxy(4,6);cprintf("por el Profesor Luis Vallenilla.");
     gotoxy(4,8);cprintf("En versiones futuras se agregaran mas atracciones, novedades e increibles");
     gotoxy(4,9);cprintf("premios que no puede dejar pasar!");
     gotoxy(4,11);cprintf("Asi que no espere mas, comuniquese de inmediato a cualquiera de nuestros");
     gotoxy(15,13);cprintf(" correos: pierorex141@hotmail.com");
     gotoxy(25,14);cprintf("rostyn15@hotmail.com");
     gotoxy(25,15);cprintf("linares-12@hotmail.com");
     blink(jugador,15,300,12,17,3);
     limpiardatos();
     transambos();
     menu();
}
void lanzar()    // genera el numero aleatorio entre 1 y 6
{
     srand(time(0));  //inicializa la funcion alearotia, tomando como variacion los segundos de la PC
     dado=(rand()%6)+1;   // dado = numero aleatorio entre (0 y 5)+1   es decir: 1 y 6 
     Sleep(4000);
     gotoxy(44,8);cprintf("%i",dado);   // escribe el numero del dado en la casilla correspondiente
}
void jugar()         // juega... desde aki se llama a "lanzar"
{                                               // y es el q maneja las jugadas (movimientos de fichas)
     int jugada=0, x1=2, y1=30, coord2[1];
     coord2[0]=4; coord2[1]=30;
     do
     {
            jugada++;        //indica de quien es el turno (par:j2 impar:j1)
            lanzar();
            if(jugada%2!=0)            // juega el usuario 1
            {
                    gotoxy(40,22);cprintf("                 ");
                    gotoxy(42,22);cout<<j1;
                    casilla1=casilla1+dado;        // cuenta las casillas q recorremos
                    for(int i=1;i<16;i++)            // limpia las posiciones anteriores del jugador 1
                    {
                         gotoxy(2,2*i);cprintf(" ");
                         gotoxy(4*i-2,2);cprintf(" ");
                         gotoxy(62,2*i);cprintf(" ");
                         gotoxy(4*i+2,28);cprintf(" ");
                         gotoxy(30,2*i);cprintf(" ");
                    }
                    if(casilla1<14)               // chequea si estamos en el pasillo 1 (casillas 1 a 13)
                    {
                         y1=30; x1=2;       // coordenadas iniciales del pasillo 1
                         for(int i=0;i<casilla1;i++)  // desde 0 hasta casilla1 (de 0 a lo q sake el dado)
                         {                             
                                 y1=y1-2;   // le restamos 2 a la Y, tantas veces como indique el dado
                         }                // usamos 2 porque el tamaño vertical de las casillas es 2 digitos
                    }
                    else if((casilla1>13)&&(casilla1<30))   // chequea si estamos en el pasillo 2 (casillas 14 a 29)
                    {
                         y1=2; x1=2;    // coordenadas iniciales del pasillo 2
                         for(int i=14;i<casilla1;i++)  // desde 14 hasta lo acumulado en casilla
                         {
                                 x1=x1+4;    // usamos 4 porque el tamaño horizontal de las casillas es 4 digitos
                         }
                    }
                    else if((casilla1>29)&&(casilla1<43))  // chequea si estamos en el pasillo 3 (casillas 30 a 42)
                    {
                         y1=2; x1=62;
                         for(int i=29;i<casilla1;i++)
                         {
                                 y1=y1+2;
                         }
                    }
                    else if((casilla1>42)&&(casilla1<51))  // chequea si estamos en el pasillo 4 (casillas 43 a 50)
                    {
                         y1=28; x1=62;
                         for(int i=42;i<casilla1;i++)
                         {
                                 x1=x1-4;
                         }
                    }
                    else if(casilla1>50)                   // chequea si estamos en el pasillo 5 (casillas 51+++)
                    {
                                 y1=28; x1=30;
                                 for(int i=50;i<casilla1;i++)
                                 {
                                                     y1=y1-2;
                                 }
                                 if(casilla1==57)               // chequea si el jugador ganó (si quedó sobre la 57)
                                 {
                                                 gotoxy(30,14);cprintf("$");
                                                 Sleep(5000);
                                                 premio(j1);   //manda el nombre del jugador como parametro a "premio()"
                                 }
                                 if(casilla1>57)      // chequea si se pasó y debe devolverse los cuadros de exceso
                                 {                            //calculamos el exceso y se lo restamos a 57 para obtener el numero de
                                                casilla1=57-(casilla1-57);  // casilla donde deberia quedar el usuario
                                                y1=14; x1=30;       // coordenadas finales del pasillo 5
                                                for(int i=57;i>casilla1;i--)//de 57 hasta casilla donde queda el usuario (menor a 57)
                                                {
                                                     y1=y1+2;        // sumamos a Y porque debe bajar (devolverse casillas)
                                                }
                                 }
                    }
                    gotoxy(x1,y1);cprintf("$");// escribe la ficha en su posicion dependiendo de los ciclos anteriores
            }
            else                    // juega el usuario 2
            {
                    gotoxy(40,22);cprintf("                  ");
                    gotoxy(42,22);cout<<j2;
                    casilla2=casilla2+dado;       // cuenta las casillas q recorremos
                    for(int i=1;i<16;i++)         // limpia las posiciones anteriores del jugador 2
                    {
                         gotoxy(2+2,2*i);cprintf(" ");
                         gotoxy(4*i-2+2,2);cprintf(" ");
                         gotoxy(62+2,2*i);cprintf(" ");
                         gotoxy(4*i+2+2,28);cprintf(" ");
                         gotoxy(30+2,2*i);cprintf(" ");
                    }
                    if(casilla2<14)                    // chequea si estamos en el pasillo 1 (casillas 1 a 13)
                    {
                         coord2[1]=30; coord2[0]=2+2;
                         for(int i=0;i<casilla2;i++)
                         {
                                 coord2[1]=coord2[1]-2;
                         }
                    }
                    else if((casilla2>13)&&(casilla2<30))       // chequea si estamos en el pasillo 2 (casillas 14 a 29)
                    {
                         coord2[1]=2; coord2[0]=2+2;
                         for(int i=14;i<casilla2;i++)
                         {
                                 coord2[0]=coord2[0]+4;
                         }
                    }
                    else if((casilla2>29)&&(casilla2<43))      // chequea si estamos en el pasillo 3 (casillas 30 a 42)
                    {
                         coord2[1]=2; coord2[0]=62+2;
                         for(int i=29;i<casilla2;i++)
                         {
                                 coord2[1]=coord2[1]+2;
                         }
                    }
                    else if((casilla2>42)&&(casilla2<51))      // chequea si estamos en el pasillo 4 (casillas 43 a 50)
                    {
                         coord2[1]=28; coord2[0]=62+2;
                         for(int i=42;i<casilla2;i++)
                         {
                                 coord2[0]=coord2[0]-4;
                         }
                    }
                    else if(casilla2>50)              // chequea si estamos en el pasillo 5 (casillas 51+++)
                    {
                                 coord2[1]=28; coord2[0]=30+2;
                                 for(int i=50;i<casilla2;i++)
                                 {
                                                     coord2[1]=coord2[1]-2;
                                 }
                                 if(casilla2==57)       // chequea si el jugador ganó (si quedó sobre la 57)
                                 {
                                                 gotoxy(32,14);cprintf("%");
                                                 Sleep(5000);
                                                 premio(j2);
                                 }
                                 if(casilla2>57)      // chequea si se pasó y debe devolverse los cuadros de exceso
                                 {
                                                casilla2=57-(casilla2-57);
                                                coord2[1]=14; coord2[0]=30+2;
                                                for(int i=57;i>casilla2;i--)
                                                {
                                                     coord2[1]=coord2[1]+2;
                                                }
                                 }
                    }
                    gotoxy(coord2[0],coord2[1]);cprintf("%");  // escribe la ficha en su posicion dependiendo de los ciclos anteriores
            }
     }
     while(1==1);
}
void tablero()
{
     gotoxy(12,29);cprintf("SALIDA");
     for(int y=29;y>1;y--)           // crea el pasillo 1
     {
             gotoxy(1,y-1);cprintf("|   |");
             gotoxy(1,y);cprintf("|___|");
             y--;
             Sleep(200);
     }
     gotoxy(2,1);cprintf("___");
     for(int x=5;x<60;x++)           // crea el pasillo 2
     {
             gotoxy(x,1);cprintf(" ___");
             gotoxy(x,2);cprintf("|   |");
             gotoxy(x,3);cprintf("|___|");
             x++;x++;x++;
             Sleep(200);
     }
     gotoxy(62,1);cprintf("___");
     for(int y=2;y<30;y++)          //crea el pasillo 3
     {
             gotoxy(61,y);cprintf("|   |");
             gotoxy(61,y+1);cprintf("|___|");
             y++;
             Sleep(200);
     }
     for(int x=61;x>28;x--)        //crea el pasillo 4
     {
             gotoxy(x,27);cprintf(" ___");
             gotoxy(x,28);cprintf("|   |");
             gotoxy(x,29);cprintf("|___|");
             x--;x--;x--;
             Sleep(200);
     }
     for(int y=28;y>15;y--)          //crea el pasillo 5
     {
             gotoxy(29,y);cprintf("|   |");
             gotoxy(29,y+1);cprintf("|___|");
             y--;
             Sleep(200);
     }
     gotoxy(30,15);cprintf("___");
     gotoxy(28,13);cprintf("LLEGADA");
     Sleep(500);
     gotoxy(42,6);cprintf(" ___");
     Sleep(500);
     gotoxy(42,7);cprintf("|   |");
     Sleep(500);
     gotoxy(42,8);cprintf("|   |");
     Sleep(500);
     gotoxy(42,9);cprintf("|___|");
     gotoxy(43,10);cprintf("DADO");
     Sleep(500);
     gotoxy(35,20);cprintf(" ______________________");
     Sleep(500);
     gotoxy(35,21);cprintf("|                      |");
     Sleep(500);
     gotoxy(35,22);cprintf("|                      |");
     Sleep(500);
     gotoxy(35,23);cprintf("|______________________|");
     Sleep(500);
     textcolor(15);
     gotoxy(2,30);cprintf("$");
     gotoxy(4,30);cprintf("%");
}
int comparar(int clave[], int clave2[],char clave1[])   //compara la clave del sistema con la introducida por los usuarios
{
     for(int i=0;i<4;i++) //transforma la clave dada por el usuario de char a int (de 0 a 3 porque son 4 digitos)
     {
             for(int x=48;x<58;x++)  //va de 48 a 57 (10 numeros) ya que la clave son solo numeros (del 0 al 9)
             {
                     if(clave2[i]==x)//si la introducida por usuario en posicion i es igual a x (cualquier numero entre 48 y 58)
                        clave1[i]=x-48;//se guarda como un numero: x - 48 (el numero que haya salido - 48) 48: ascii de 0
             }         // EJM: ascii del 7=55, entonces 55-48=7
     }
     for(int i=0;i<4;i++)   // compara la clave del sistema con la transformada a int
     {
             if(clave[i]!=clave1[i]) //si las claves en posicion i son diferentes
                return(1);           //devuelve valor 1 (sera usado como negacion)
     }
     return(0);      //si no devuelve 1 en el ciclo, significa que son iguales y devolvera 0 (sera usado como afirmacion)
}
void leerclave(int clave2[]) // lee la clave que introducira el usuario
{
     for(int i=0;i<4;i++)   // de 0 a 3 (4 digitos)
     {
             clave2[i]=getch();   // lee caracter por caracter
             gotoxy(49+i,4);cprintf("*");  // coloca un * por cada digito
     }
}
void generar(int clave[])   // crea la clave de 4 digitos en el procedimiento de inscripcion
{
     gotoxy(5,8);cprintf("Clave de registro: ");
     for(int i=0;i<4;i++)  // de 0 a 3 (4 digitos)
     {
            srand(time(0));   //inicializa secuencia aleatoria tomando como valor variable los segundos del reloj de la PC
            clave[i]=(rand()%9)+1;  //a la posicion i le asigna valor aleatorio entre  (0 y 8) +1, es decir entre 1 y 9
            gotoxy(24+i,8);cprintf("%i",clave[i]);  //escribe la clave para su visualizacion
            Sleep(2500);
     }
     gotoxy(5,9);system("PAUSE");
}
void llenar(char cadena[])  //llena una cadena char, usado para llenar nombres y cedulas
{
     cin>>cadena;
}
void inscripcion(char nombre[], char ci[])  //
{
     clrscr();
     textcolor(3);
     gotoxy(10,2);cprintf(" * * * Inscripcion del jugador %i",j);cprintf(" * * *");  //j indica el numero de jugador
     textcolor(6);
     gotoxy(5,4);cprintf("Ingrese su nombre: ");
     llenar(nombre);
     textcolor(4);
     gotoxy(5,11);cprintf("No venezolanos: usar inicial de su pais antes de la cedula.");
     textcolor(6);
     gotoxy(5,5);cprintf("Ingrese su cedula de identidad: ");
     llenar(ci);
     if(j==2)     //si se esta registrando el usuario 2, se borra la advertencia de la cedula y se lleva j a 1
     {
             gotoxy(5,11);cprintf("                                                           ");
             j=1;
     }
     else
         j=2;     //si se esta registrando el usuario 1, se lleva j a 2
}
void juego() // el cuerpo del juego
{
     int clave2[3], error=0;
     do
     {
        clrscr();
        textcolor(3);
        gotoxy(5,2);cprintf("JUEGO LUDO V1.0 <--> POR: RIP GAMES, C.A.");
        textcolor(6);
        gotoxy(5,4);cprintf(" Ingresen su clave de registro, por favor: ");
        leerclave(clave2);
        if(comparar(clave,clave2,clave1)!=0) //compara el valor de retorno de comparar, si dio 1 (diferente a 0) es error
        {
           textcolor(12);
           gotoxy(5,6);cprintf("ERROR: Clave incorrecta...");
           error++;  // suma 1 a la cantidad de errores
           gotoxy(5,8);
           system("PAUSE");
        }
        else // si comparar retorna 0, la clave es legal
            {
                   transder();
                   textcolor(6);
                   gotoxy(3,7);cprintf("Clave correcta!");
                   gotoxy(3,8);cprintf("Por favor maximize la ventana de juego para una optima experiencia");
                   gotoxy(3,10);
                   system("PAUSE");
                   transambos();
                   textcolor(3);
                   tablero();  // crea el tablero
                   jugar(); //comienza a mover las fichas para jugar
                   break;
            }
     }
     while(error<3); // si llega a 3 errores, se limpian los datos y vuelve al menu principal
     limpiardatos();
     transizq();
     menu();

}
void menu() //  MENU PRINCIPAL
{
     char r;  // variable de eleccion del menu
     do
     {
       clrscr();
       textcolor(3);
       gotoxy(15,2);cprintf("* * * Menu Principal * * *");
       textcolor(6);
       gotoxy(5,4);cprintf("1- Inscripcion de los jugadores");
       gotoxy(5,5);cprintf("2- Juego Ludo version 1.0 (dos jugadores)");
       gotoxy(5,6);cprintf("3- Instrucciones");
       gotoxy(5,7);cprintf("4- Salir");
       gotoxy(5,8);cprintf(" Elija la opcion de su preferencia: ");
       cin>>r;
       switch(r)
       {
                case '1':  //caso de inscripcion
                     ins=1; //pasa a 1 la bandera para indicar que ya se han registrado los jugadores
                     transder();
                     inscripcion(j1,c1);
                     transizq();
                     inscripcion(j2,c2);
                     generar(clave);
                     transder();
                     menu();
                break;
                case '2': //caso del juego
                     if(ins==1) //si esta bandera no esta accionada, no entra al juego porque no se han registrado
                         {
                                transizq();
                                juego();
                         }
                     else
                     {
                         textcolor(12);
                         gotoxy(10,10);cprintf("Deben inscribirse los jugadores antes de poder jugar");
                         gotoxy(10,12);system("PAUSE");
                         menu();
                     }
                break;
                case '3': //caso de instrucciones
                     transder();
                     instrucciones();
                break;
                case '4': //caso de salida
                     transizq();
                     salir();
                break;
                default:
                        textcolor(12);
                        gotoxy(5,10);cprintf("Error: Debe elegir entre 1-4");
                        gotoxy(5,12);system("PAUSE");
       }
     }
     while(1==1); //repite el menu siempre
}
void bienvenida()  //...
{
     clrscr();
     textcolor(3);
     gotoxy(13,2);cprintf("Juego Ludo V1.0 --- Por: RIP GAMES, C.A.");
     logo();
     textcolor(6);
     gotoxy(3,5);cprintf("4to Anno, sección: B, Administracion: Procesamiento de Datos");
     gotoxy(10,7);cprintf("Programadores:  Jean Hernandez #10");
     gotoxy(26,8);cprintf("Yeljhornan Linares #12");
     gotoxy(26,9);cprintf("Rosty Marquez #15");
     gotoxy(10,11);cprintf("Profesor Luis Vallenilla");
     gotoxy(10,13);cprintf("Lunes, 7 de Diciembre de 2009");
     textcolor(15);
     for(int b=0;b<10;b++)        //barra de carga (de 1 a 10) en 10 segundos +/-
     {
             gotoxy(30,17);cprintf("%i",b*10);cprintf("%");        //numero *10 (simula porcentaje alto)
             gotoxy(b+26,19);cprintf("®");          //mueve la barra superior
             gotoxy(26,20);cprintf("          ");   //limpia la barra inferior
             for(int a=1;a<11;a++)
             {
                  gotoxy(a+25,20);cprintf("®");            // mueve barra inferior
                  Sleep(100);                        //cada 0.1 segundos aumenta la barra inferior
             }
     }
     gotoxy(30,17);cprintf("100%");  //indica fin de la carga
     textcolor(6);
     gotoxy(15,23);cprintf("Aplicacion cargada completamente");
     gotoxy(15,24);system("PAUSE");
     transambos();
     menu();
}     
void sponsor()           //presentacion tipo pelicula
{
     clrscr();
     textcolor(2);
     gotoxy(50,13);cprintf("RIP GAMES");
     gotoxy(51,15);cprintf("Presents");
     logo();
     Sleep(4000);
     transder();
     textcolor(3);gotoxy(30,3);cprintf("In association with Disney Pictures");
     mickey();
     Sleep(4000);
     transizq();
     bienvenida();
}
main()
{
      SetConsoleTitle("Juego Ludo V 1.0 <<<>>> By: RIP GAMES, C.A.");
      strcpy(j1,""); strcpy(j2,""); //vacia las cadenas para desechar basura
      sponsor();
      getch();
}/*
0 = Negro            8 = Gris
1 = Azul               9 = Azul claro
2 = Verde            A = Verde claro
3 = Aguamarina   B = Aguamarina claro
4 = Rojo              C = Rojo claro
5 = Púrpura         D = Púrpura claro
6 = Amarillo        E = Amarillo claro
7 = Blanco           F = Blanco brillante
*/


Aceptadas las criticas destructivas y constructivas  :xD / sugerencias / aclaraciones / modificaciones / etc etc etc

Salu2
DosNuker

kvlopez

hola por si acaso no tienes el juego que corra en visual  C++ , por fa ayudame , me enviaron de deber el juego ludo , y quiero guiarme como hacer .

Soy nueva en la programacion :(

fantasma306

bueno para que te funcione en el Visual C++ hay que cambiar unas cosas:

Pon estas librerias:
Código (cpp) [Seleccionar]
#include <iostream>
#include <conio.h>
#include <string>
#include <time.h>
#include <Windows.h>


añade esto arriba:
Código (cpp) [Seleccionar]
using namespace std;

const HANDLE Consola = GetStdHandle(STD_OUTPUT_HANDLE);

void textcolor(int numColor){SetConsoleTextAttribute(Consola, numColor);}
void gotoxy(int x, int y) {
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}



remplaza
clrscr();
por
system("cls");


PD: despues de todos estos cambios me daba un error en j1[30]; si te da ese error, busca y remplaza j1 por otro nombre.


saludos
Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.