Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: afrocardo en 24 Diciembre 2015, 13:19 pm



Título: Como hago que este modulo sea mas eficiente???? C++
Publicado por: afrocardo en 24 Diciembre 2015, 13:19 pm
Buenas, como hago para que este módulo sea más eficiente?

CÓDIGO:

void carga_colores_sonidos_numeros(numerosypuntos n)
{
   //For para recorrer el vector
   for(int cont=0;cont<N;cont++)
   {

   if(n.al[cont]==0){
      textcolor(1);
      Beep(500,200);
   }
   if(n.al[cont]==1){
      textcolor(2);
      Beep(200,101);
   }
   if(n.al[cont]==2){
      textcolor(3);
      Beep(797,145);
   }
   if(n.al[cont]==3){
      textcolor(4);
      Beep(567,189);
   }
   if(n.al[cont]==4){
      textcolor(5);
      Beep(345,200);
   }
   if(n.al[cont]==5){
      textcolor(6);
      Beep(200,400);
   }
   if(n.al[cont]==6){
      textcolor(7);
      Beep(320,134);
   }
   if(n.al[cont]==7){
      textcolor(8);
      Beep(302,211);
   }
   if(n.al[cont]==8){
      textcolor(9);
      Beep(211,400);
   }
   if(n.al[cont]==9){
      textcolor(10);
      Beep(322,1000);
   }
   if(n.al[cont]==10){
      textcolor(11);
      Beep(233,544);
   }
   }//Fin for
}


Título: Re: Como hago que este modulo sea mas eficiente???? C++
Publicado por: ivancea96 en 24 Diciembre 2015, 17:08 pm
Ni has explicado qué hace, ni para qué sirve, ni el nombre de la función es descriptivo.

Solo te puedo decir, que utilices un
Código
  1. switch(n.al[cont]){}
en vez de esos if.


Título: Re: Como hago que este modulo sea mas eficiente???? C++
Publicado por: afrocardo en 27 Diciembre 2015, 13:13 pm
Te voy a enviar el programa completo.

Es todo lo que está en rojo
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
CÓDIGO:

//Adición de librerias

//Adición de sentencias de entrada y salida: cin y cout
#include <iostream>
//Adición de colores
#include <conio2.h>
//Manejo de ficheros
#include <fstream.h>
//Adición de sonidos al juego
#include <windows.h>
//Sentencia para evitar el std::cout y el std::cin
using namespace std;
//Definición de constantes
#define N 10
#define maxcar 20
#define M 30 //Para los puntos extra
#define maxronda 10

//Definición de tipo de dato de los siguientes vectores y de registros como:datos_jugador y numeroypuntos
typedef int aleatorios_juego[N];
typedef int numeros_introducidos[N];
typedef int fibonacci_puntos[N];
typedef char vector_nick[maxcar];
typedef struct{
   int codigo;
   vector_nick nombre;
   int partidas;
   int puntuacion_ultima;
   int puntuacion_max;
   int veces_final;
}datos_jugador;
typedef struct {
   aleatorios_juego al;
   fibonacci_puntos punt_fib;

}numerosypuntos;


//Prototipo modulos
void presentacion();
int menu();
numerosypuntos inicializar();
void mostrar_aleatorios_prueba(numerosypuntos  n);
void asteriscos();
datos_jugador introducir_datos();
void visualizar_datos(datos_jugador j);
void introducir_datos_fichero(datos_jugador j,ofstream & escritura_jugadores);
bool existencia_jugador_fichero (datos_jugador & j, ifstream & lectura_jugadores, int codigoint);
void jugar (datos_jugador & j,numerosypuntos n);
void carga_colores_sonidos_numeros(numerosypuntos n);
void instrucciones_juego(const numerosypuntos n);
void actualizar_fichero(ofstream & escritura_jugadores, datos_jugador j);
bool ronda(int numero_ronda, numerosypuntos n, datos_jugador & j, numeros_introducidos ni);
int calculo_fibonacci(int n);

//Main
int main() {

   //Declaracion variable jug perteneciente al registro datos_jugador
   datos_jugador jug;
   //Declaracion variable nu perteneciente al registro numerosypuntos
   numerosypuntos nu;
   //Declaracion de variable para el menu
   int opc;
   //Declaracion ficheros de lectura y escritura
   ifstream lectura_jugadores;
   ofstream escritura_jugadores;
   //Declaracion de variables para modulos
   int cod;
    int n_ronda;

    //Llamada al modulo presentación
   presentacion();
   //Se almacena el modulo menu en la variable opc para que pueda devolver una opcion el modulo menu
   opc=menu();

   //While para seleccionar las opciones del menu
   while(opc!=10){
      //Se le asigna el valor de 1 a la variable n_ronda
      n_ronda=1;
      switch(opc){
      case 1:
         //Muestra por pantalla que inicializara los aleatorios y los puntos para jugar
         cout<<"Inicializamos el conjunto de aleatorios de enteros y puntos para jugar."<<endl;
         //La llamada al módulo inicializar() se almacena en la variable nu,
         //ya que es una función y devuelve algo
         nu=inicializar();
         //Llamada al modulo asteriscos
         asteriscos();
         break;
      case 2:
         //Muestra por pantalla que introduzcas tus datos
         cout<<"Introduce tus datos :"<<endl;
         //La llamada al módulo introducir_datos() se almacena en la variable jug,
         //ya que es una función y devuelve algo
         jug=introducir_datos();
         //Llamada al modulo asteriscos
         asteriscos();
         break;
      case 3:
         //Muestra por pantalla que se van a comprobar los aleatorios generados
         cout<<"Comprobaremos los aleatorios generados."<<endl;
         //Llamada al módulo mostrar_aleatorios_prueba
         //Se le pasa la variable nu,ya que es un procedimiento.La variable nu esta en el programa principal
         mostrar_aleatorios_prueba(nu);
         //Llamada al modulo asteriscos
         asteriscos();
         break;
      case 4:
         //Muestra por pantalla que van a mostrar los datos introducidos del jugador
         cout<<"Estos son los datos del jugador :"<<endl;
         //Llamada al módulo asteriscos
         asteriscos();
         //Llamada al módulo visualizar_datos
         //Se le pasa la variable jug,ya que es un procedimiento.La variable jug esta en el programa principal
         visualizar_datos(jug);
         //Llamada al modulo asteriscos
         asteriscos();
         break;
      case 5:
         //Muestra por pantalla que se van a introducir los datos del jugador en el fichero
         cout<<"Introducimos los datos del jugador en el fichero ""simon.txt"""<<endl;
         //Llamada al módulo introducir_datos_fichero
         //Se le pasa la variable jug y el fichero de escrituta:escritura_jugadores para añadir los datos de  los jugadores en el fichero,
         //ya que es un procedimiento.La variable jug esta en el programa principal
         introducir_datos_fichero(jug,escritura_jugadores);
         //Muestra por pantalla que los datos han sido introducidos correctamente
         cout<<"Los datos han sido introducidos al fichero satisfactoriamente ."<<endl;
         break;
      case 6:
         //Muestra por pantalla que se comprobará si el jugador introducido esta en el fichero
         cout<<"Comprobamos si el jugador introducido está disponible en el fichero :"<<endl;
         //Muestra por pantalla que introduzcas el codigo del jugador para buscarlo en el fichero
         cout<<"Introduce codigo del jugador para localizar :"<<endl;
         //Se introduce por teclado el codigo del jugador a buscar
         cin>>cod;

         //If para comprobar si el jugador existe en el fichero,después de haber introducido el codigo del jugador
         if(existencia_jugador_fichero (jug,lectura_jugadores,cod))
         {
            cout<<"El jugador con codigo:  "<<cod<<"  existe en el fichero."<<endl;

         }
         else{
            cout<<"El jugador con codigo:   "<<cod<<"  no existia y lo hemos creado."<<endl;
         }
         //Llamada al modulo asterisco
         asteriscos();
         break;
      case 7:
         //Llamada al módulo instrucciones_juego
         //Se le pasa la variable nu,ya que es un procedimiento.La variable nu esta en el programa principal
         instrucciones_juego(nu);
         //Llamada al modulo asterisco
         asteriscos();
         break;
      case 8:
         //Se añade el color azul claro
         textcolor(LIGHTBLUE);
         //Muestra por pantalla un mensaje de bienvenida
         cout<<"¡¡BIENVENIDO/A AL JUEGO DEL SIMON:   "<<   jug.nombre  <<endl;
         //Se añade el tiempo de retraso
         Sleep(2000);
         //Llamaada al módulo jugar
         //Se le pasa la variable jug y la variable nu,ya que es un procedimiento.La variable jug y nu estan en el programa principal
         jugar(jug,nu);
         break;
      case 9:
         //Llamada al módulo actualizar_fichero
         //Se le pasa el fichero escritura_jugadores y la variable jug ,ya que es un procedimiento.La variable jug y el fichero estan en el programa principal
         actualizar_fichero(escritura_jugadores,jug);
         //Llamada al modulo asterisco
         asteriscos();
         break;

      }
      //Denuevo se vuelve a llamar al modulo menu junto a su variable de almacenamiento opc, ya que se debe volver a mostrar el menu para poder elegir otra opcion
      opc=menu();
   }
   //Al salir del juego
   //Muestra por pantalla un mensaje de que viciarse es malo
   cout<<"Eso, ¡sin viciarse que eso es malo!"<<endl;
   system("PAUSE");

   return 0;
}
//Definición de modulos
//Modulo 1.Presentación : Mostrara unos mensajes de bienvendida al juego
void presentacion()
{
   //Se añade el color amarillo a los mensajes de bienvenida
   textcolor(YELLOW);
   //Muestra por pantalla los mensajes de bienvenida
   cout<<"***********************************************************************************************"<<endl;
   cout<<"******************************  BIENVENIDO/A LA PRACTICA FINAL DE FP       ********************"<<endl;
   cout<<"******************************            CURSO 2015/16                    ********************"<<endl;
   cout<<"******************************          JUEGO 'SUPER SIMON'                ********************"<<endl;
   cout<<"******************************    REALIZADO POR: LEANDRO & TOMAS & RICARDO ********************"<<endl;
   cout<<"***********************************************************************************************"<<endl;
   //Banda sonora al iniciar el juego
   Beep (330,100);Sleep(100);
   Beep (330,100);Sleep(300);
   Beep (330,100);Sleep(300);
   Beep (262,100);Sleep(100);
   Beep (330,100);Sleep(300);
   Beep (392,100);Sleep(700);
   Beep (196,100);Sleep(700);

}
//Modulo 2.Menu: Mostrara las opcione a elegir
int menu()
{
   //Se añade el color blanco a las opciones a elegir
   textcolor(WHITE);
   //Declaracion de variable opcion
   int opcion;
   //Muestra por pantalla las opciones a elegir
   cout<<"1.INICIALIZAR NUMEROS ALEATORIOS Y PUNTOS."<<endl;
   cout<<"2.INICIALIZAR JUGADOR NUEVO."<<endl;
   cout<<"3.VISUALIZAR NUMEROS ALEATORIOS(SOLO PARA PRUEBAS): BAJO CONTRASEÑA."<<endl;
   cout<<"4.VISUALIZAR LOS DATOS DEL JUGADOR."<<endl;
   cout<<"5.INTRODUCIR JUGADOR EN EL FICHERO."<<endl;
   cout<<"6.COMPROBACION DE LA EXISTENCIA DEL JUGADOR EN EL FICHERO."<<endl;
   cout<<"7.INSTRUCCIONES DEL JUEGO (MÓDULO EXTRA AÑADIDO POR NOSOTROS)"<<endl;
   cout<<"8.JUGAR AL JUEGO."<<endl;
   cout<<"9.ACTUALIZAR DATOS DEL FICHERO DE JUGADORES."<<endl;
   cout<<"10.SALIR DEL PROGRAMA."<<endl;
   //Muestra por pantalla que introduzcas un numero del 1 al 10
   cout<<"Introduce opcion de 1 a 10 :"<<endl;
   //Se introduce la opcion deseada
   cin>>opcion;
   //While para controlar que el que haya elejido la opcion la haya introducido correctamente
   //Sino se ha introducido correctamente mostrara un mensaje de error
   while(opcion<1 || opcion>10)
   {
      //Muestra un mensaje de error y que vuelvas a elegir una opcion
      cout<<"Error, opción introducida no es valida. Introduce una opcion de 1 a 9 :"<<endl;
      //Se introduce la opcion deseada
      cin>>opcion;
   }
   //El modulo devuelve una opcion.Es decir, la opción elegida
   return opcion;
}

//Modulo 3.Inicializar: (Inicialiazará los datos del jugador ,si es nuevo)
//Calculará el Fibonacci y mostrará un mensaje de que se an inicializado correctamente los aleatorio y los puntos
numerosypuntos inicializar()
{
   //Declaración de variable n del registro numerosypuntos
   numerosypuntos n;
   //Inicialización de la semilla aleatoria
   srand(time(NULL));
   //For para ir recorriendo el vector
   for(int i=0;i<N;i++)
   {
      //Fórmula para ir calculando numeros aleatorios entres 0 y 10
      n.al=rand()%11;
   }
   //For para ir recorriendo el vector
   for(int i=0;i<N;i++)
   {
      //Fórmula para calcular el Fibonacci
      n.punt_fib=calculo_fibonacci(i);

   }
   //Muestra por pantalla un mensaje de que los aleatorios y los puntos han sido inicializados satisfactoriamente
   cout<<"Aleatorios y puntos inicializados satisfactoriamente:)"<<endl;
   //El módulo devuelve los numeros aleatorios y los puntos Fibonacci*
   return n;
}
//Modulo 3.Mostrar_aleatorios_prueba: Mostrará los números aleatorios del vector del juego(sólo el adminustrador del juego puede verlos)
//Habrá que introducir una clave para ver los aleatorios
void mostrar_aleatorios_prueba(const numerosypuntos n)
{
   //Contraseña: 12345
   //Declaracion de variable contraseña
   int contrasena;
   //Muestra por pantalla un mensaje de que mostrará los aleatorios,pero si antes has introducido la contraseña
   cout<<"Mostraremos el vector con todos los aleatorios, pero antes, INTRODUZCA SU CONTRASEÑA :"<<endl;
   //Se introduce la contraseña que debe ser correcta para poder ver los aleatorios
   cin>>contrasena;
   //While para controlar que el que haya introducido la contraseña la haya introducido correctamente
   //Sino se ha introducido correctamente mostrara un mensaje de error
   while(contrasena!=12345){
      cout<<"Error, contraseña incorrecta. Introduzca de nuevo la contraseña :"<<endl;
      //Se vuelve a introducir la contraseña que debe ser correcta para poder ver los aleatorios
      cin>>contrasena;
   }
   //Muestra por pantalla un mensaje para mostrar los aleatorios del vector
   cout<<"Aquí están los aleatorios generados en el vector :"<<endl;
   //For para recorrer el vector
   for(int i=0;i<N;i++)
   {
      //Muestra por pantalla un mensaje para mostrar los aleatorios(n.al) en función de la posición i del vector
      cout<<"El numero :   "<< i <<  "    es     :"<<    n.al<<endl;
   }
   //For para recorrer el vector
   for(int i=0;i<N;i++)
   {
      //Muestra por pantalla un mensaje para los numeros Fibonacci(n.punt_fib) en función de la posición i del vector
      cout<<"En la posicion fibonacci :  "<<i<<"   se encuentrar los puntos:   "<<n.punt_fib<<endl;
   }
}
//Modulo 4.Asteriscos: Mostrará una línea de asteriscos
void asteriscos()
{
   cout<<"**************************************************************************************"<<endl;
}
//Modulo 5.Calculo_fibonacci: Calculará la sucesión Fibonacci
int calculo_fibonacci(int n)
{
   //Declaración de variable fib que será devuelta por el módulo
   int fib;
   //If para controlar que si el numero pasado n es 0 o 1 la variable Fibonacci valdrá 1
   //Sino se calculará el Fibonaccion con la fórmula de debajo del else
   if((n==0)||(n==1))
   {
      fib=1;
   }
   else{
      //No la entiendo
      fib=(calculo_fibonacci(n-2)+calculo_fibonacci(n-1));
   }
   //El módulo devuelve un entero que será el Fibonacci*
   return fib;

}
//Modulo 6.Introducir_datos: Mostrará los datos del jugador
datos_jugador introducir_datos(){
   //Declaración de variable j del registro datos_jugador
   datos_jugador j;
   //Muestra por pantalla un mensaje de que introduzcas el codigo del jugador a registrar
   cout<<"Introduce el codigo del jugador :"<<endl;
   //Se introduce el codigo
   cin>>j.codigo;
   //Muestra por pantalla un mensaje de que introduzcas el nombre del jugador a registrar
   cout<<"Introduce el nombre del jugador :"<<endl;
   //Se introduce el nombre
   cin>>j.nombre;
   //Incicializo las partidas,puntuacion ultima,puntiacion maxima y veces final a 0
   j.partidas=0;
   j.puntuacion_ultima=0;
   j.puntuacion_max=0;
   j.veces_final=0;
   //El módulo devuelve los datos del jugador, que serían los datos introducidos
   return j;
}
//Modulo 7.Visualizar_datos: Visualizará los datos del jugador
void visualizar_datos(const datos_jugador j)
{
   //Muestra por pantalla etsos mensajes que son los datos del jugador
   cout<<"El código del jugador es  :    "<< j.codigo<<endl;
   cout<<"EL nombre del jugador es  :    "<< j.nombre <<endl;
   cout<<"El jugador   :   "<< j.nombre  <<"    lleva   :"<< j.partidas << "   jugadas  ."<<endl;
   cout<<"El jugador   :   "<< j.nombre << "  consiguó un total de   :   "<<j.puntuacion_ultima << "    puntos la última vez que jugó. "<<endl;
   cout<<"El jugador   :   "<<j.nombre<< "   ha conseguido una puntuación maxima de :  "<<j.puntuacion_max<< "  puntos."<<endl;
   cout<<"El jugador   :   "<<j.nombre<< "   ha llegado al final del juego  :   "<<j.veces_final<<"  veces."<<endl;
}
//Módulo 8.Introducir_datos_fichero : Se almacenarán los datos en el fichero
void introducir_datos_fichero(datos_jugador j,ofstream & escritura_jugadores)
{
   //Muestra por pantalla etsos mensajes que son los datos del jugador
   cout<<"Vamos a guardar los datos del jugador en el fichero de texto : simon.txt."<<endl;
   //Se abre el fichero para escribir sobre él
   escritura_jugadores.open("simon.txt");
   //If para comprobar que si el fichero se ha abierto correctamente,se alamacenen los datos en el fichero
   //Si se abre mal mostrará un mensaje de error
   if(escritura_jugadores.fail())
   {
      cout<<"Error en la apertura del fichero simon.txt, lo sentimos."<<endl;
   }
   else
   {
      escritura_jugadores<<j.codigo<<endl;
      escritura_jugadores<<j.nombre<<endl;
      escritura_jugadores<<j.partidas<<endl;
      escritura_jugadores<<j.puntuacion_ultima<<endl;
      escritura_jugadores<< j.puntuacion_max <<endl;
      escritura_jugadores<< j.veces_final<<endl;


   }
   //Se cierra el fichero para que no se vuelva corrupto y para que se guarden los datos
   escritura_jugadores.close();
}
//Módulo 8.Existencia_jugador_fichero: Se verificará si los datos del jugador están en el fichero
bool existencia_jugador_fichero (datos_jugador & j, ifstream & lectura_jugadores, int codigoint)
{
   //Declaración de variable existe que será devuelta por el módulo, y está puesta a false
   bool existe=false;
   //Se abre el fichero para leer lo que hay dentro
   lectura_jugadores.open("simon.txt");
   //If para comprobar que si el fichero se ha abierto correctamente,se alamacenen los datos en el fichero
   //Si se abre mal mostrará un mensaje de error
   if(lectura_jugadores.fail())
   {
      cout<<"Lo sentimos, se ha producido un error en la lectura del fichero."<<endl;

   }
   else
   {
      //Sino hace una lectura anticipada con el codigo del jugador
      //y luego se leen los demas datos y se muestran por pantalla
      lectura_jugadores>>j.codigo;
      //While para controlar que si existe el jugador y no se ha llegado a fin de fichero
      //se mostraran por pantalla los datos del juagdor
      while(!lectura_jugadores.eof()&& existe==false)
      {
         //If para controlar que si el codigo del jugador es igual al codigo introducido
         //y existe, se mostrarán los datos del jugador
         if(codigoint==j.codigo)
         {
            existe=true;
         }
         lectura_jugadores>>j.nombre;
         lectura_jugadores>>j.partidas;
         lectura_jugadores>>j.puntuacion_max;
         lectura_jugadores>>j.puntuacion_ultima;
         lectura_jugadores>>j.veces_final;
         lectura_jugadores>>j.codigo;
      }
      //If para controlar que si el jugador no existe,tengas que meter los datos de nuevo
      if(existe==false)
      {
         //Llamada al modulo introducir_datos que se almacenará en la variable j del registro datos_jugador
         j=introducir_datos();
      }

      //Muestra por pantalla un mensaje de que se han leído los datos correctamente
      cout<<"Datos leídos correctamente..."<<endl;
      if(codigoint==j.codigo)
      {
         //Muestra por pantalla un mensaje de que el jugador tal si existe en el fichero
         cout<<"El jugador con codigo  :    "<< codigoint <<"   sí existe en el fichero."<<endl;
      }
      else
      {
         //Muestra por pantalla un mensaje de que el jugador con codigo tal no existe en el fichero
         cout<<"El jugador con codigo  :  "<< codigoint <<"   no existe en el fichero."<<endl;
      }
   }
   //Se cierra el fichero de lectura
   lectura_jugadores.close();
   //El módulo devuelve un booleano
   return existe;
}
//Módulo 9.Carga_colores_sonidos_numeros: Se cargarán los colores y sonidos por cada numero
void carga_colores_sonidos_numeros(numerosypuntos n)
{
   //For para recorrer el vector
   for(int cont=0;cont<N;cont++)
   {
   //If para aplicarle a cada numero aleatorio un color y un sonido distinto
   if(n.al[cont]==0){
      textcolor(1);
      Beep(500,200);
   }
   if(n.al[cont]==1){
      textcolor(2);
      Beep(200,101);
   }
   if(n.al[cont]==2){
      textcolor(3);
      Beep(797,145);
   }
   if(n.al[cont]==3){
      textcolor(4);
      Beep(567,189);
   }
   if(n.al[cont]==4){
      textcolor(5);
      Beep(345,200);
   }
   if(n.al[cont]==5){
      textcolor(6);
      Beep(200,400);
   }
   if(n.al[cont]==6){
      textcolor(7);
      Beep(320,134);
   }
   if(n.al[cont]==7){
      textcolor(8);
      Beep(302,211);
   }
   if(n.al[cont]==8){
      textcolor(9);
      Beep(211,400);
   }
   if(n.al[cont]==9){
      textcolor(10);
      Beep(322,1000);
   }
   if(n.al[cont]==10){
      textcolor(11);
      Beep(233,544);
   }
   }//Fin for
}


//Módulo 10.Jugar: Permitirá jugar el juego
void jugar (datos_jugador & j,numerosypuntos n)
{
   //Declaración de variable ni del registro numeros_introducidos
   numeros_introducidos ni;
   //Declaración de un contador y se inicializa a 1
   int num_ronda=1;
   //Declaración de variable booleana
   bool controlador=true;
   //While para comprobar que la variable controlador se cumpla y que el numero de ronda sea menor que el maximo de rondas
   while(controlador==true && num_ronda<maxronda)
   {

      //Se comprueba que la ronda sea la correcta y se aumente en una unidad
      controlador=ronda(num_ronda,n,j, ni);
      //Contador para pasar a la siguiente ronda
      num_ronda++;


   }
   //If para controlar que si la variable controlador se cumple
   //Se mostrará por pantalla que has pasado a la siguiente ronda,entre otras cosas.
   if(controlador==true)
   {
      cout<<"¡¡FELICIDADES!! Has logrado pasar la ronda 10."<<endl;
      cout<<"¡¡TE LLEVAS UN BONUS DE 30 PUNTOS POR ACABARTE EL JUEGO!!"<<endl;
            cout<<"Llevas una puntuacion total de   :  "<<j.puntuacion_ultima<<endl;
            j.veces_final++;
            j.partidas++;
            cout<<"ENHORABUENA, ¡¡¡ERES UN AUTÉNTICO GENIO!!! HAS CONSEGUIDO ACABARTE EL JUEGO."<<endl;
            cout<<"**********************¡¡¡FIN DEL JUEGO!!!*************************************"<<endl;
            Sleep(4000);
   }
   //Sino se cumple se mostrará un mensaje de que has perdido
   else
   {
      cout<<"Has perdido."<<endl;
      Sleep(4000);
      asteriscos();
   }
}
//Módulo 11.Ronda: Mostrará los números de cada ronda
bool ronda(int numero_ronda, numerosypuntos n, datos_jugador & j, numeros_introducidos ni)
{
   //Declaración de variable booleana controlador
   bool controlador=true;
   //Declaración variable contador y se inicializa a cero
   int cont=0;

   //For para recorrer el vector
   for(int i=0;i<numero_ronda;i++)
   {
   //Se limpia la pantalla
   clrscr();
   //Llamada al módulo carga_colores_sonidos_numeros
   carga_colores_sonidos_numeros(n);
   //Muestra por pantalla los numeros aleatorios
   cout<<n.al<<"  ";
   Sleep(1500);
   textcolor(WHITE);

   }
   cout<<"Esperamos 5 segundos a que memorices el contenido..."<<endl;
   Sleep(5000);//Espero 5 segundos
   clrscr();
   for(int i=0;i<numero_ronda;i++)
   {
   cout<<"Introduce los numeros que has visto :"<<endl;
   cin>>ni;
   }

   while(controlador==true && cont<numero_ronda)
   {
      if(n.al[cont]!=ni[cont])
         {
            controlador=false;
            j.partidas++;
            j.puntuacion_ultima=j.puntuacion_ultima-M/3;
            j.puntuacion_max=j.puntuacion_ultima;
            cout<<"Tu puntuacion es de :   "<<j.puntuacion_max<<endl;

         }
         else{
            controlador=true;
            j.puntuacion_ultima=n.punt_fib[cont];
            cout<<"¡¡FELICIDADES!! Has logrado pasar la ronda:  "<<cont+1<<endl;
            cout<<"Llevas una puntuacion total de   :  "<<j.puntuacion_ultima<<endl;

            cout<<"******************RONDA:  "<<cont+2<<"*************************************"<<endl;
            Sleep(4000);
         }
    cont++;
   }
   return controlador;
}


void instrucciones_juego(const numerosypuntos n)
{
   textcolor(LIGHTRED);
   cout<<"******************************************************************************************************************************"<<endl;
   cout<<"*********************************************INSTRUCCIONES DEL JUEGO**********************************************************"<<endl;
   cout<<"******************************************************************************************************************************"<<endl;
   textcolor(WHITE);
   cout<<"1.-Aparecera un numero en la pantalla."<<endl;
   cout<<"2.-Deberas memorizar el numero bien, tienes 5 segundos para hacerlo."<<endl;
   cout<<"3.-Despues, deberas introducir ese mismo numero correctamente, si no lo haces el juego terminará y perderas. Tu puntuación sera de -10."<<endl;
   cout<<"4.-Si aciertas, iras progresando en el juego, pasaras de ronda. Aparecera el numero que aparecio anteriormente, mas otro nuevo. Asi sera hasta que termines las 10 rondas o pierdas."<<endl;
   cout<<"5.-Los puntajes son los siguientes (RONDA 0 ES LA RONDA 1, RONDA 9 ES LA RONDA 10)"<<endl;
   for(int i=0;i<N;i++)
   {
      cout<<"Si superas la ronda:  "<<i<<"  te llevas:    "<<n.punt_fib<<"  puntos."<<endl;
   }
   cout<<"6.-Si consigues llegar a la mitad del juego (ronda 5), recibiras una bonificación extra de 15 puntos."<<endl;
   cout<<"7.-Si consigues acabar el juego (ronda 10), recibiras una bonificacion extra de 30 puntos. "<<endl;
   textcolor(LIGHTRED);
   cout<<"**************************************¡¡A JUGAR!!*****************************************************************************"<<endl;
   Beep (330,100);Sleep(100);
   Beep (330,100);Sleep(300);
   Beep (330,100);Sleep(300);
   Beep (262,100);Sleep(100);
   Beep (330,100);Sleep(300);
   Beep (392,100);Sleep(700);
   Beep (196,100);Sleep(700);
   textcolor(WHITE);

}

void actualizar_fichero(ofstream & escritura_jugadores, datos_jugador j)
{
   escritura_jugadores.open("simon.txt");
   if(escritura_jugadores.fail())
   {
      cout<<"Error en la apertura del fichero de escritura."<<endl;
   }
   else
   {
      escritura_jugadores<<j.codigo<<" ";
      escritura_jugadores<<j.nombre<<" ";
      escritura_jugadores<<j.partidas<<" ";
      escritura_jugadores<<j.puntuacion_ultima<<" ";
      escritura_jugadores<< j.puntuacion_max <<" ";
      escritura_jugadores<< j.veces_final<<endl;

   }
   escritura_jugadores.close();
   cout<<"Fichero actualizado correctamente."<<endl;
}


Título: Re: Como hago que este modulo sea mas eficiente???? C++
Publicado por: Eternal Idol en 27 Diciembre 2015, 13:21 pm
Código
  1. typedef struct _combo
  2. {
  3.  unsigned char color;
  4.  unsigned short freq;
  5.  unsigned short duration;
  6. }combo;
  7.  
  8. combo combinaciones[] =
  9. {
  10.  {1, 500, 200},
  11.  {2, 200, 101}
  12.   ...
  13. };

Podes simplificar el codigo a un par de lineas de esa manera.


Título: Re: Como hago que este modulo sea mas eficiente???? C++
Publicado por: engel lex en 27 Diciembre 2015, 13:27 pm
En tal caso el código no sería más eficiente el código, sólo sería más corto o legible, pero a fines serían iguales


Título: Re: Como hago que este modulo sea mas eficiente???? C++
Publicado por: Eternal Idol en 27 Diciembre 2015, 13:30 pm
En tal caso el código no sería más eficiente el código, sólo sería más corto o legible, pero a fines serían iguales

Los compiladores modernos optimizan muy bien y es dificil hacer afirmaciones taxativas pero de la manera que le sugiero no se hace ninguna comparacion, se usa un indice a una tabla, asi que iguales no serian.