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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Aporte] Cambiar el color de la consola de los programas C++.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Aporte] Cambiar el color de la consola de los programas C++.  (Leído 5,639 veces)
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
[Aporte] Cambiar el color de la consola de los programas C++.
« en: 20 Junio 2013, 18:21 pm »

Dar las gracias a Amchacon y a Daryo principalmente entro otros colaboradores del foro porque me ayudaron a hacer el código (por no decir que hicieron más que yo)  :xD

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <sstream>
  5. #include <vector>
  6. #include <map>
  7.  
  8. using namespace std;
  9.  
  10. void Colores();
  11.  
  12. string COLOR;
  13.  
  14. int salir = 0;
  15.  
  16. typedef void (*Puntero_A_Funcion)(void);
  17.  
  18.  
  19. void GuardarColores();
  20.  
  21.  
  22. int main (int argc, char* argv[])
  23. {
  24. //Si existe el archivo lo abre:        
  25.     ifstream logc;
  26. logc.open ( "PersonalizacionMasterShell.bat" );
  27. if ( logc.is_open() )
  28. {
  29. system("call PersonalizacionMasterShell.bat");
  30. }
  31. logc.close();
  32.  
  33. system ("cls");
  34.  
  35.    Inicio:
  36.  
  37.    void (*Funcion)(void); // Puntero a funcion sin argumentos
  38.    string Mensaje;
  39.    map<string,Puntero_A_Funcion> Comandos;
  40.    vector<string> texto;
  41.    string str;
  42.  
  43.  
  44.  
  45.  
  46.    Comandos["colores"] = Colores;
  47.    Comandos["guardarcolores"] = GuardarColores;
  48.  
  49.    getline(cin, str);
  50.    stringstream is(str);
  51.  
  52.    while(is >> str) texto.push_back(str);
  53.  
  54.    for (int i = 0; i < texto.size(); i++)
  55.    {
  56.        Funcion = Comandos[texto[i]]; // Obtengo el puntero a la funcion correspondiente
  57.  
  58.        if (Funcion) // Si existe la funcion
  59.              Funcion(); // llamar a la funcion
  60.        else
  61.             cout<<"Error, no existe el comando introducido: "<<texto[i]<<endl;
  62.    }
  63.    if (salir != 1)
  64. {goto Inicio;}  
  65.  
  66.    return 0;
  67. }
  68.  
  69.  
  70. //Declaración de funciones:
  71.  
  72.  
  73.  
  74. void Colores()
  75. {
  76.     short ColorElegido;
  77. cout << "Que color quieres?" <<endl;
  78. cin >> ColorElegido;
  79.  
  80. switch (ColorElegido)
  81. {
  82. case 1:
  83. system ("color 0f");
  84. COLOR = "0f";
  85. system ("cls");
  86. break;
  87.  
  88. case 2:
  89. system ("color f0");
  90. COLOR = "f0";
  91. system ("cls");
  92. break;
  93.  
  94. case 3:
  95. system ("color 0a");
  96. COLOR = "0a";
  97. system ("cls");
  98. break;
  99.  
  100. case 4:
  101. system ("color 9f");
  102. COLOR = "9f";
  103. system ("cls");
  104. break;
  105.  
  106. case 5:
  107. system ("color 0d");
  108. COLOR = "0d";
  109. system ("cls");
  110. break;
  111.  
  112. case 6:
  113. system ("color 0e");
  114. COLOR = "0e";
  115. system ("cls");
  116. break;
  117.  
  118. case 7:
  119. system ("color 2f");
  120. COLOR = "2f";
  121. system ("cls");
  122. break;
  123.  
  124. case 8:
  125. system ("color 8e");
  126. COLOR = "8e";
  127. system ("cls");
  128. break;
  129.  
  130. default:
  131. cout << "No has escrito una opcion valida,vuleve a escribir \"colores\""  <<
  132. " y selecciona un numero del 1 al 8" <<endl; break;    
  133. }    
  134. }
  135.  
  136.  
  137. void GuardarColores()
  138. {    
  139. //Borra los datos actuales del archivo:
  140.        fstream archivo;
  141. archivo.open("PersonalizacionMasterShell.bat", ios::out | ios::trunc);
  142. archivo.close();      
  143. //Edita el archivo:      
  144. ofstream archiv;
  145. archiv.open ( "PersonalizacionMasterShell.bat", ios::app);
  146. archiv << "color " <<COLOR;
  147. archiv.close();    
  148. }

Para que funcione tal cual solo es necesario crear una archivo de texto darle a guardar como... en el bloc de notas, y ponerle de nombre PersonalizacionMasterShell.bat este archivo debe estar guardado en el mismo sitio que el ejecutable del programa que hagáis.

Las instrucciones son:
1º Escribir la palabra entre comillas "colores" y pulsar enter.

2º Escribir un numero del 1 al 8 y pulsar enter, cada uno de esos 8 números tiene una configuración ya echa, pero podéis añadir nuevas configuraciones de colores con los números que os dejo al final, simplemente modificando la palabra "color" que se encuentra después de system y poniendo también el mismo número que pongáis después de "COLOR ="  (tenéis que poner los 2 números que queráis usar, cada número corresponde a un color como veréis al final).

3º Una vez que veáis como cambia el color de la consola y el texto simplemente escribís la palabra entre comillas "guardarcolores" y se guardará la configuración actual para que se active automáticamente cando iniciéis el programa. Esto sirve para que el usuario a falta de interfaz gráfica pueda personalizar un mínimo el entorno de la consola.

Sí más adelante le añado también la posibilidad de cambiar las fuentes al programa o algo similar lo pondré por aquí. 

Aquí la lista de colores:

El primero que pongáis corresponderá al fondo.
El segundo al color de la fuente.

0 = Negro
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Púrpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro
A = Verde claro
B = Aguamarina claro
C = Rojo claro
D = Púrpura claro
E = Amarillo claro
F = Blanco brillante

La consola tal cual está sería: 07, es decir, fondo negro letras blancas.

Creo que está súper explicado, de todas formas si no entendéis algo del código o no sabéis como hacer tal cosa preguntar.

PD: Por supuesto podéis cambiar el nombre de el PersonalizacionMasterShell.bat por el que vosotros queráis con tal de que coincidan el nombre que le pongáis en el código con el nombre real del archivo que debe encontrarse en la misma carpeta en la que compiléis y posteriormente donde tengáis el ejecutable.

Saludos.  :)


En línea

I like to test things.
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 3,908 Último mensaje 6 Marzo 2010, 17:27 pm
por raul338
2 Preguntas de Java - Limpiar pantalla y Cambiar color de texto en consola « 1 2 »
Java
Baaaw Oic 11 51,835 Último mensaje 26 Marzo 2010, 20:41 pm
por Leyer
[Aporte] JQuery: Color Picker
Desarrollo Web
AFelipeTrujillo 0 2,938 Último mensaje 8 Enero 2011, 18:46 pm
por AFelipeTrujillo
¿Alguna API para cambiar color de programas ajenos?
Hacking
ApOkAlizE 2 3,622 Último mensaje 20 Julio 2011, 02:06 am
por ApOkAlizE
[C++] [Aporte] Buscaminas por consola
Programación C/C++
Wofo 5 7,564 Último mensaje 15 Marzo 2013, 11:18 am
por Wofo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines