Рисуем на cmd используя c ++

0

Я пытаюсь нарисовать шахматную доску на экране 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;
}

Я буду рад за помощь.

Теги:
cmd
winapi

3 ответа

2

поскольку белый - красный + зеленый + синий: фон белый - это

BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE

в коде:

SetConsoleTextAttribute
    (hConsole,BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE )
cout << "black on white\n";
  • 0
    И как я могу сделать его больше с разными цветами? Например, квадрат 10X10 с буквой «K» в середине и рядом с ним черный прямоугольник с буквой «P» в центре?
  • 0
    напечатайте 10 символов, затем в следующей строке еще 10 и т. д. Кстати, делая в два раза больше символов по сравнению со строками вниз, мы обычно приближаемся к квадрату, так как большинство консольных шрифтов в два раза больше их ширины.
Показать ещё 1 комментарий
1

Кто-то сделал это на 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;
}

Надеюсь, поможет

  • 0
    Я видел это, но это не помогает мне, потому что я хочу написать письмо в середине прямоугольника. В любом случае, спасибо.
-2

Вы нашли код, но на самом деле вы его не понимали или смотрели документацию для SetConsoleTextAttribute.

Если бы у вас было, вы бы обнаружили документацию об атрибутах персонажа и заметили такие вещи, как BACKGROUND_RED, BACKGROUND_GREEN и BACKGROUND_BLUE которые, как предсказуемо, могут установить цвет фона в консоли.

Теперь, когда вы можете изменить цвет фона, спросите себя: "Что произойдет, если я установил цвет фона FOREGROUND_RED а затем распечатал пробел на консоли?"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню