c++

Iniciado por JohnMcb, 19 Mayo 2013, 19:22 PM

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

JohnMcb

c++
Mensajes: 6
Ubicación: Calle falsa 123
Antigüedad: 1 mes
Puntos: 0


Buen dia :D
Tengo que hacer un juego al estilo del ajedrez, ya lo tengo listo, no pongo el código por que es bastante largo. El caso es que mi tablero se muestra siempre como casillas (el tablero lo hice como un vector de 64 casillas)
ej:

for(int i=0;i<64;i++)
cout <<"["<< vector_tablero_ajedrez<< "]";

Mi tablero se viene mostrando algo asi:
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
con ciertos datos que se me piden mostrar dentro de esas casillas, pero ahora necesito mostrar ese mismo vector en un tablero decente, es decir que las casillas sean a color tal cual como en un tablero de ajedrez (casillas intercaladas blanco y negro), pero necesito hacer esto en dev c++ y sin necesidad de instalar librerías adicionales, alguien sabe como hacerlo ?
Gracias.

leosansan

#1
Cita de: JohnMcb en 19 Mayo 2013, 19:22 PM
..................................................................
pero ahora necesito mostrar ese mismo vector en un tablero decente, es decir que las casillas sean a color tal cual como en un tablero de ajedrez (casillas intercaladas blanco y negro), pero necesito hacer esto en dev c++ y sin necesidad de instalar librerías adicionales, alguien sabe como hacerlo ?
Gracias.

Creo que lo siguiente te podría servir ya que permite elegir el color de la letra y del fondo, pudiendo ir cambiándola. Lo mejor es construirse una función con la instrucción e invocarla cada vez que se quiera cambiar:

Código (cpp) [Seleccionar]
#include <windows.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

int main()
{
    SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), 105 );
    cout << "Azul sobre fondo amarillo" << endl;
    SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), 44 );
    cout << "Rojo sobre fondo verde" << endl;
    SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), 7 );
    cout << "Vuelvo a Blanco sobre fondo negro" << endl;
    return 0;
}


Y el modo de funcionamiento, o mejor elección de colores es:

Citar
SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE),X);
Con este comando se le puede cambiar el color de texto y de fondo a lo que se muestre despues de que la linea se ejecute, siendo X un numero entre 0 y 255.
Ahora bien, siendo los colores:
¿como calcular X? Simple:

X=A*16+B

A=color de fondo
B=color de texto


Asi, si queremos por ejemplo un texto azul claro sobre fondo amarillo:

X=6(fondo amarillo)*16+9(texto azul claro)= 105

0 = Negro
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Purpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro

A = Verde claro=10
B = Aguamarina claro=11
C = Rojo claro=12
D = Purpura claro=13
E = Amarillo claro=14
F = Blanco brillante=15


Saluditos!. ... ...

amchacon

Aver si lo entiendo Leo, puedes colorear el fondo y escribir al mismo tiempo? Por ejemplo, poner una letra roja en un cuadro amarillo.

Si es así me la apunto.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

JohnMcb

Gracias leosansan, intentare con eso a ver que tal me va :D

leosansan

#4
Cita de: amchacon en 19 Mayo 2013, 20:46 PM
Aver si lo entiendo Leo, puedes colorear el fondo y escribir al mismo tiempo? Por ejemplo, poner una letra roja en un cuadro amarillo.

Si es así me la apunto.

Efectivamente es así:



Saluditos!. ..... ...

leosansan

#5
Cita de: JohnMcb en 19 Mayo 2013, 19:22 PM

Mi tablero se viene mostrando algo asi:
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ][ ][ ]
con ciertos datos que se me piden mostrar dentro de esas casillas, pero ahora necesito mostrar ese mismo vector en un tablero decente, es decir que las casillas sean a color tal cual como en un tablero de ajedrez (casillas intercaladas blanco y negro), pero necesito hacer esto en dev c++ y sin necesidad de instalar librerías adicionales, alguien sabe como hacerlo ?


A mí me salen estas tableros, como muestra de lo indicado en el post anterior:





Código (cpp) [Seleccionar]
#include <iostream>
#include <windows.h>

int color (int n);
using namespace std;

int main(void)
{
   int i,j;
   for (i = 0; i < 16; i++){
       for (j = 0; j < 16; j++){
           if ((i+1+j+1)%2==0)
               color (/*7*/97);
           else
               color (/*112*/22);
           cout <<"[X"<<  "]";
       }
      cout <<endl;
   }
   color (7);
    return 0;
}
int color (int n)
{
       SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), n );
}


Espero te sea útil. Por cierto, lo que está desactivado con /* numero*/ es el de blanco y negro.

Saluditos! .... ...