elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Aporte. Funcion para poner pantalla de título a programa por consola.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Aporte. Funcion para poner pantalla de título a programa por consola.  (Leído 386 veces)
@XSStringManolo
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.273


Turn off the red ligth


Ver Perfil WWW
Aporte. Funcion para poner pantalla de título a programa por consola.
« en: 9 Junio 2019, 05:45 am »

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
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. string crearIntro(string escenariochar, string bordes, string bordesArriba, string bordesAbajo );
  7. string anhadirTexto(string cadenaDelUsuario, string texto, int linea);
  8.  
  9.  
  10. int main()
  11. {
  12. string mistring;
  13.  
  14. mistring = crearIntro("1", "|", "=", "_");
  15. //cout << mistring; //Ejemplo de lo que hace.
  16.  
  17. mistring = crearIntro(" ", "|", "=", "_");
  18. //cout << endl << mistring; //Ejemplo practico de funcion CrearIntro
  19.  
  20. mistring = anhadirTexto(mistring, "MI PROGRAMA DE CONSOLA!", 12);
  21. //cout << endl << mistring; //Ejemplo practico de anhadirTexto
  22.  
  23. string textoDeMiprograma = "Pulsa enter para empezar.                                               ";
  24. mistring = anhadirTexto(mistring,textoDeMiprograma , 23);
  25. textoDeMiprograma = "                                                           Sunday,June 09,2019";
  26. mistring = anhadirTexto(mistring,textoDeMiprograma , 2);
  27.  
  28. cout << endl << mistring; //Ejemplo practico de anhadirTexto
  29.  
  30. cin.get();
  31. return 0;
  32. }
  33.  
  34.  
  35. string crearIntro(string escenariochar, string bordes, string bordesArriba, string bordesAbajo)
  36. {
  37. string escenario;
  38. static int contador = 0;
  39.  
  40. for ( int i = 0; i < 25; ++i )
  41. {
  42.        for ( int j = 0; j < 80; ++j )
  43.        {
  44.            if(j == 79 || j == 0)
  45.            {
  46. if(contador == 0 || contador == 1 || contador == 24)
  47.                {
  48. if (contador == 0 || contador == 1)
  49. {
  50. escenario.append(bordesArriba);
  51. }
  52.  
  53. else
  54. {
  55. escenario.append(bordesAbajo);
  56. }
  57.                }
  58.  
  59. else
  60. {
  61. escenario.append(bordes);
  62. }
  63. }
  64.  
  65.            else
  66.            {
  67.                if(contador == 0 || contador == 1 || contador == 24)
  68.                {
  69. if (contador == 0 || contador == 1)
  70. {
  71. escenario.append(bordesArriba);
  72. }
  73.  
  74. else
  75. {
  76. escenario.append(bordesAbajo);
  77. }
  78.  
  79. }
  80.  
  81. else
  82. {
  83. escenario.append(escenariochar);
  84. }
  85. }
  86.        }
  87.    ++contador;
  88. }
  89.  
  90. contador = 0;
  91. return escenario;
  92. }
  93.  
  94.  
  95. string anhadirTexto(string cadenaDelUsuario, string texto, int linea)
  96. {
  97. int tamanhocadena = cadenaDelUsuario.size();
  98. int tamanhotexto = texto.size();
  99. int mitadtamanhotexto = tamanhotexto/2;
  100. int saltosDeLinea = linea;
  101. string nuevaCadena = cadenaDelUsuario;
  102. int diferenciaTexto;
  103. int x = 80;
  104. string vacio;
  105.  
  106. diferenciaTexto = x * linea;
  107. diferenciaTexto -= -(40 - mitadtamanhotexto);
  108.  
  109. vacio.append(cadenaDelUsuario, 0, diferenciaTexto);
  110. vacio.append(texto);
  111. diferenciaTexto += tamanhotexto;
  112. vacio.append(cadenaDelUsuario, diferenciaTexto, 2000);
  113.  
  114. return vacio;
  115. }
  116.  
  117.  
  118. /*
  119. Ejemplo de llamada a crearIntro:
  120.  
  121. string mistring;
  122. mistring = crearIntro("1", "|", "=", "_");
  123.  
  124. Primer parametro -> Llena la consola del caracter que le pongamos.
  125. Segundo parametro -> Utiliza el caracter como borde.
  126. Tercer parametro -> Utiliza el caracter como borde superior.
  127. Cuarto parametro -> Utiliza el caracter como borde inferior.
  128.  
  129. En la llamada de arriba el resultado sera asi:
  130.  
  131. ==================
  132. ==================
  133. |1111111111111111|
  134. |1111111111111111|
  135. |1111111111111111|
  136. |1111111111111111|
  137. |1111111111111111|
  138. |1111111111111111|
  139. |1111111111111111|
  140. |1111111111111111|
  141. |1111111111111111|
  142. __________________
  143.  
  144.  
  145. */
  146.  
  147. /*
  148. Ejemplo de llamada a anhadirTexto:
  149.  
  150. string mistring;
  151. mistring = anhadirTexto(mistring, "HOLA!", 6);
  152.  
  153. Primer parametro -> El string que tenemos de la otra funcion.
  154. Segundo parametro -> El texto que queremos anhadir.
  155. Tercer parametro -> La linea en la cual queremos poner nuestro texto.
  156.  
  157.  
  158. En este ejemplo cambiamos el "1" por un espacio " " o un espacio "\ ".
  159.  
  160. string mistring;
  161. mistring = crearIntro(" ", "x", "A", "*");
  162. mistring = anhadirTexto(mistring, "MI PROGRAMA!", 5);
  163.  
  164. En la llamada el resultado sera asi:
  165.  
  166. AAAAAAAAAAAAAAAAAA     Linea 1
  167. AAAAAAAAAAAAAAAAAA     Linea 2
  168. x                x     Linea 3
  169. x                x     Linea 4
  170. x  MI PROGRAMA!  x     Linea 5
  171. x                x     Linea 6
  172. x                x     Linea 7
  173. x                x     Linea 8
  174. x                x     Linea 9
  175. x                x     Linea 10
  176. x                x     Linea 11
  177. ******************     Linea 12
  178.  
  179. */


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[APORTE] Usando consola con Threads (aka: consola estilo quake) :D
.NET (C#, VB.NET, ASP)
raul338 0 2,833 Último mensaje 6 Marzo 2010, 17:27 pm
por raul338
[APORTE] Screen-Region Selector (para capturadores de pantalla)
.NET (C#, VB.NET, ASP)
Eleкtro 0 901 Último mensaje 28 Junio 2014, 08:06 am
por Eleкtro
[Aporte] Mi función PHP para limpiar inputs
PHP
Alex_bro 0 1,037 Último mensaje 23 Julio 2015, 18:34 pm
por Alex_bro
Cambiar título de consola
Programación C/C++
Meta 7 3,901 Último mensaje 6 Febrero 2016, 13:47 pm
por Eternal Idol
[Ayuda pls] Como poner consola en programa VB
Programación Visual Basic
HexicZ 7 4,239 Último mensaje 31 Julio 2016, 08:43 am
por fary
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines