Я пытаюсь нарисовать шахматную доску на экране cmd - 64 квадрата и письмо в каждом, что символизирует пасьянс, который на этом месте. После очень длительного поиска я нашел код, который меняет цвет слов, но мой вопрос: как рисовать квадраты на cmd? BLACK - WHITE и так далее. Это код, который я нашел:
int main()
{
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
// Use the three primary colors for mixing any other color.
// Use FOREGROUND_INTENSITY for brighter colors.
SetConsoleTextAttribute
(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY);
cout << "Bright red text\n";
SetConsoleTextAttribute
(hConsole, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cout << "Bright blue text\n";
SetConsoleTextAttribute
(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cout << "Back to normal white text\n";
// Wait for user pressing key before exiting
// Gives them a chance to see the output
cout << "\n\nPress any key to exit program.....";
cin.get();
return 0;
}
Я буду рад за помощь.
поскольку белый - красный + зеленый + синий: фон белый - это
BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE
в коде:
SetConsoleTextAttribute
(hConsole,BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE )
cout << "black on white\n";
Кто-то сделал это на Codeproject (рисовать прямоугольник на экране):
#include <iostream>
#include <Windows.h>
using std::cout;
/*
*This method sets the cursor position.
*Usage:
*setxy(1,1);
*/
BOOL setxy(short x, short y)
{
COORD c = {x,y};
return SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
/*
*This method draws the rectangle.
*Usage:
*DrawRect(1,1,10,10);
*or
*DrawRect(1,1,10,10,20,5);
*/
void DrawRect(int x, int y, int width, int height, int curPosX=0, int curPosY=0)
{
setxy(x,y);cout << char(201);
for(int i = 1; i < width; i++)cout << char(205);
cout << char(187);
setxy(x,height + y);cout << char(200);
for(int i = 1; i < width; i++)cout << char(205);
cout << char(188);
for(int i = y + 1; i < height + y; i++)
{
setxy(x,i);cout << char(186);
setxy(x + width,i);cout << char(186);
}
setxy(curPosX,curPosY);
}
int main()
{
setxy(1,1);
DrawRect(1,1,10,10,20,5);
return 0;
}
Надеюсь, поможет
Вы нашли код, но на самом деле вы его не понимали или смотрели документацию для SetConsoleTextAttribute
.
Если бы у вас было, вы бы обнаружили документацию об атрибутах персонажа и заметили такие вещи, как BACKGROUND_RED
, BACKGROUND_GREEN
и BACKGROUND_BLUE
которые, как предсказуемо, могут установить цвет фона в консоли.
Теперь, когда вы можете изменить цвет фона, спросите себя: "Что произойдет, если я установил цвет фона FOREGROUND_RED
а затем распечатал пробел на консоли?"