From Red Iguana, 1 Week ago, written in Text.
Embed
  1. using namespace std;
  2.  
  3. /*----- Prototipo de funciones -----*/
  4. void principalAdivinum();
  5. int jugar_adivinum();
  6. void instruccionesAdivinum();
  7. void mostrarEstadisticasAdivinum();
  8.  
  9. /*----- Interfaces -----*/
  10. void guiPrincipalAdivinum();
  11.  
  12. void principalAdivinum(){
  13.         int op;
  14.         cadena opcion="";
  15.         do{
  16.                 guiPrincipalAdivinum();
  17.                 op=0;
  18.                 strcpy(opcion,"");
  19.             fflush(stdin);
  20.             ingresoCadena(opcion,1,"1234",false);
  21.             op=atoi(opcion);
  22.                 switch (op){
  23.                         case 1:
  24.                                 superClear();
  25.                                 jugar_adivinum();
  26.                         break;
  27.                         case 2:
  28.                                 mostrarEstadisticasAdivinum();
  29.                         break;
  30.                         case 3:
  31.                                 instruccionesAdivinum();
  32.                         break;
  33.                         case 4:
  34.                         break;
  35.                         default:
  36.                                 printf("\n");
  37.                                 printf("\n");
  38.                                 superPrintTemp("&.04&!&!&!Opci&_on no valida!!!\nEscribe el numero de la opci&_on");
  39.                         break;
  40.         }
  41.     }while( op != 4);
  42.         return;
  43. }
  44.  
  45. void numero_al_azar(int &num, int A[4]){     //formamos un numero al azar
  46.         int  d1,d2,d3,d4;
  47.         srand(time(NULL));                       //sorteamos 4 dígitos al azar
  48.         d1=rand()%9+1;
  49.         d2=rand()%10;
  50.         d3=rand()%10;;
  51.         d4=rand()%10;
  52.         while(d2==d1){                            //Comparamos que ningun dígito esté repetido, en cuyo caso volvemos a sortear ese dígito
  53.                 d2=rand()%10;
  54.         }
  55.         while(d3==d1 || d3==d2){
  56.                 d3=rand()%10;
  57.         }
  58.         while(d4==d1 || d4==d2 || d4==d3){
  59.                 d4=rand()%10;
  60.         }
  61.         num=d1*1000+d2*100+d3*10+d4;            //Componemos los 4 dígitos en un numero entero
  62.         A[0]=d1;                                //Almacenamos cada dígito en un arreglo
  63.         A[1]=d2;
  64.         A[2]=d3;
  65.         A[3]=d4;
  66. }
  67.  
  68.  
  69.  
  70.  
  71. int jugar_adivinum() {
  72.         int numero, A[4], d1, d2, d3, d4, usuario, u1, u2, u3, u4, intento=1, misposicion=0, difposicion=0, puntaje=11;
  73.         int ultimo1, ultimo2;
  74.         consoleSize(30,16);
  75.         numero_al_azar(numero, A);
  76.         cadena cad="", ultimoIntento="";
  77.         char vida[50];
  78.         do{
  79.                 do{
  80.                         system("cls");
  81.                         cuadro("&bNULL GAMES\nAdivinum","verde_claro");
  82.                         vidaCorazones(vida,11-intento,10);sprintf(aux,"\n VIDAS: %s",vida);superPrint(aux);
  83.                         if(intento!=1){
  84.                                 sprintf(aux, "\n\n &b&i &7 Ultimo intento: &b%s",ultimoIntento);superPrint(aux);
  85.                                 sprintf(aux,"\n &b&i &7 En la misma pocision: &a%i\n &b&i &7 En otra pocision: &c%i", ultimo1, ultimo2);superPrint(aux);
  86.                         }
  87.                         superPrint("\n\n &b&g &aAdivine el numero: ");
  88.                         strcpy(cad,"");
  89.                         ingresoEntero(cad,4);
  90.                         usuario=atoi(cad);
  91.                         if(usuario<1000 || usuario>9999){
  92.                                 printf("\n\n");
  93.                                 superPrintTemp("&.04 El numero debe tener\n 4 cifras y ser positivo.");
  94.                         }else {
  95.                                 strcpy(ultimoIntento,cad);
  96.                         }
  97.                 }while(usuario<1000 || usuario>9999);
  98.                 u4=usuario%10;                                            //desfragmenta el numero que ingresó el usuario en digitos
  99.                 u3=((usuario/10)%10);
  100.                 u2=((usuario/100)%10);
  101.                 u1=((usuario/1000)%10);
  102.                 int U[4]={u1,u2,u3,u4};
  103.                 for (int i=0;i<4;i++)
  104.                 {
  105.                         for(int k=0; k<4; k++)                                    //compara dígito a dígito el número ingresado por el usuario con el numero aleatorio
  106.                         {
  107.                                 if(U[i]==A[k] && i==k) misposicion++;
  108.                                 if(U[i]==A[k] && i!=k) difposicion++;
  109.                         }
  110.                 }
  111.                 ultimo1=misposicion;
  112.                 ultimo2=difposicion;
  113.                 misposicion=0;
  114.                 difposicion=0;
  115.                 intento++;
  116.                 puntaje--;
  117.         } while((intento<=10)&&(usuario!=numero)&&(misposicion<3));        //condicones de corte
  118.        
  119.         if (usuario==numero) {
  120.                 sprintf(aux, "&a&!Felicidades Ganaste!\n&7Puntaje: &a%i",puntaje);pantallazo(aux);
  121.         }
  122.         else {
  123.                 sprintf(aux, "&c&!Perdiste!\n&7El numero era: &a%i",numero);pantallazo(aux);
  124.         }
  125.        
  126.         return puntaje;
  127.        
  128. }
  129.  
  130. /*----- Interfaces Graficas de Menu -----*/
  131.  
  132. void guiPrincipalAdivinum(){
  133.         consoleSize(31,15);
  134.         system("cls");
  135.         cuadro("&bNULL GAMES\nAdivinum","verde_claro");
  136.         superPrint("\n &b1.- &aJugar\n");
  137.         superPrint(" &b2.- &aVer estadisticas\n");
  138.         superPrint(" &b3.- &aInstrucciones\n");
  139.         superPrint(" &b4.- &4Volver al menu de juegos\n");
  140.         superPrint("\n &b&g &aElige una opcion: ");
  141. }
  142.  
  143. void instruccionesAdivinum(){
  144.         consoleSize(81,12);
  145.         system("cls");
  146.         cuadro("&bAdivinum\nInstrucciones","verde_claro");
  147.         superPrint("\n &b&i &7El juego consiste en adivinar un numero de cuatro digitos entre &b1000 &7y &b9000&7.\n");
  148.         superPrint(" &b&i &7El numero secreto no tiene digitos repetidos.\n");
  149.         superPrint(" &b&i &7Se indicara cuantos digitos ha acertado en la posicion &ccorrecta &7e &aincorrecta&7.\n");
  150.         superPrint(" &b&i &7Tienes &a10 &7vidas.\n\n");
  151.         superPrint(" &aPresiona una tecla para regresar al menu...");
  152.         getch();
  153. }
  154.  
  155. void mostrarEstadisticasAdivinum(){
  156.         consoleSize(45,17);
  157.         system("cls");
  158.         cuadro("&bAdivinum\nEstadisticas","verde_claro");
  159.         sprintf(aux, "\n &b&k &aPremios: ");superPrint(aux);
  160.         sprintf(aux, "\n    &b&i &aCopas: &7%i",usuarioActual.Generala.premio.copa);superPrint(aux);
  161.         sprintf(aux, "\n    &b&i &aTrofeos: &7%i",usuarioActual.Generala.premio.trofeo);superPrint(aux);
  162.         sprintf(aux, "\n    &b&i &aMedallas: &7%i",usuarioActual.Generala.premio.medalla);superPrint(aux);
  163.         sprintf(aux, "\n    &b&i &aMonedas: &7%i",usuarioActual.Generala.premio.moneda);superPrint(aux);
  164.         sprintf(aux, "\n    &b&i &aDiploma: &7%i",usuarioActual.Generala.premio.diploma);superPrint(aux);
  165.         sprintf(aux, "\n\n &b&i &aVeces jugadas: &7%i",usuarioActual.Generala.CantJugadas);superPrint(aux);
  166.         sprintf(aux, "\n&a &b&i M&_aximo puntaje: &7%i",usuarioActual.Generala.puntajeMax);superPrint(aux);
  167.         superPrint(" &7\n\n Presiona una tecla para regresar al menu...");
  168.         getch();
  169.         system("PAUse<null");
  170. }
  171.