Aporte. Funcion para poner pantalla de título a programa por consola.

Iniciado por @XSStringManolo, 9 Junio 2019, 05:45 AM

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

@XSStringManolo

Siempre ando a hacerlo a mano y hecho mi tiempo asique hice una función sencilla que lo haga por mi.
Las abrá 100 veces mejores, sin fallos y más completas por ahí. Yo os dejo la mía para quien la quiera usar, o por si os apetece discutir sobre el código, como lo haceis vosotros, como mejorarlo, etc.

Hay 2 bucles for que tienen los numeros 25 y 80. Son la altura y la anchura por defecto que yo tengo en mi consola.Podeis cambiarlos por int ancho e int alto.
Si vais a aumentarla, abrir el programa con la consola máximizada, etc. Le poneis lo que corresponda, vais probabdo. Al hacer eso también abrá que cambiar el (j==79) por (j==nuevoAncho-1) y el (contador == 24) por (contador == nuevaAltura-1)
Se puede hacer con menos variables, sin llenar tantos strings y creo que hay variables sin usar en la segunda funcion. Si quereis optimizarlo genial.

Abajo de todo del código dibujé las salidas del programa por consola de cada función por si quereis ver exactamente lo que hacen antes de compilar el código.
También dejé un ejemplo creado en el main para verlo al compilar.

Código (cpp) [Seleccionar]

#include <iostream>
#include <string>

using namespace std;

string crearIntro(string escenariochar, string bordes, string bordesArriba, string bordesAbajo );
string anhadirTexto(string cadenaDelUsuario, string texto, int linea);


int main()
{
string mistring;

mistring = crearIntro("1", "|", "=", "_");
//cout << mistring; //Ejemplo de lo que hace.

mistring = crearIntro(" ", "|", "=", "_");
//cout << endl << mistring; //Ejemplo practico de funcion CrearIntro

mistring = anhadirTexto(mistring, "MI PROGRAMA DE CONSOLA!", 12);
//cout << endl << mistring; //Ejemplo practico de anhadirTexto

string textoDeMiprograma = "Pulsa enter para empezar.                                               ";
mistring = anhadirTexto(mistring,textoDeMiprograma , 23);
textoDeMiprograma = "                                                           Sunday,June 09,2019";
mistring = anhadirTexto(mistring,textoDeMiprograma , 2);

cout << endl << mistring; //Ejemplo practico de anhadirTexto

cin.get();
return 0;
}


string crearIntro(string escenariochar, string bordes, string bordesArriba, string bordesAbajo)
{
string escenario;
static int contador = 0;

for ( int i = 0; i < 25; ++i )
{
        for ( int j = 0; j < 80; ++j )
        {
            if(j == 79 || j == 0)
            {
if(contador == 0 || contador == 1 || contador == 24)
                {
if (contador == 0 || contador == 1)
{
escenario.append(bordesArriba);
}

else
{
escenario.append(bordesAbajo);
}
                }

else
{
escenario.append(bordes);
}
}

            else
            {
                if(contador == 0 || contador == 1 || contador == 24)
                {
if (contador == 0 || contador == 1)
{
escenario.append(bordesArriba);
}

else
{
escenario.append(bordesAbajo);
}

}

else
{
escenario.append(escenariochar);
}
}
        }
    ++contador;
}

contador = 0;
return escenario;
}


string anhadirTexto(string cadenaDelUsuario, string texto, int linea)
{
int tamanhocadena = cadenaDelUsuario.size();
int tamanhotexto = texto.size();
int mitadtamanhotexto = tamanhotexto/2;
int saltosDeLinea = linea;
string nuevaCadena = cadenaDelUsuario;
int diferenciaTexto;
int x = 80;
string vacio;

diferenciaTexto = x * linea;
diferenciaTexto -= -(40 - mitadtamanhotexto);

vacio.append(cadenaDelUsuario, 0, diferenciaTexto);
vacio.append(texto);
diferenciaTexto += tamanhotexto;
vacio.append(cadenaDelUsuario, diferenciaTexto, 2000);

return vacio;
}


/*
Ejemplo de llamada a crearIntro:

string mistring;
mistring = crearIntro("1", "|", "=", "_");

Primer parametro -> Llena la consola del caracter que le pongamos.
Segundo parametro -> Utiliza el caracter como borde.
Tercer parametro -> Utiliza el caracter como borde superior.
Cuarto parametro -> Utiliza el caracter como borde inferior.

En la llamada de arriba el resultado sera asi:

==================
==================
|1111111111111111|
|1111111111111111|
|1111111111111111|
|1111111111111111|
|1111111111111111|
|1111111111111111|
|1111111111111111|
|1111111111111111|
|1111111111111111|
__________________


*/

/*
Ejemplo de llamada a anhadirTexto:

string mistring;
mistring = anhadirTexto(mistring, "HOLA!", 6);

Primer parametro -> El string que tenemos de la otra funcion.
Segundo parametro -> El texto que queremos anhadir.
Tercer parametro -> La linea en la cual queremos poner nuestro texto.


En este ejemplo cambiamos el "1" por un espacio " " o un espacio "\ ".

string mistring;
mistring = crearIntro(" ", "x", "A", "*");
mistring = anhadirTexto(mistring, "MI PROGRAMA!", 5);

En la llamada el resultado sera asi:

AAAAAAAAAAAAAAAAAA     Linea 1
AAAAAAAAAAAAAAAAAA     Linea 2
x                x     Linea 3
x                x     Linea 4
x  MI PROGRAMA!  x     Linea 5
x                x     Linea 6
x                x     Linea 7
x                x     Linea 8
x                x     Linea 9
x                x     Linea 10
x                x     Linea 11
******************     Linea 12

*/