Познавательный блог Мобильная врсия

Страницы

Промо

Цветная консоль в C++ для новчика

Всем моё си плюс-плюсное здрасьте! Сегодня моя речь пойдет о некоторых полезных функциях языка c++. Когда меня в институте начали учить этому языку программирование я удивился его простоте и возможностям! Но проходили мы только функции, необходимые для написания простеньких консольных приложений. И меня однажды пропёрло покрасить текст и фон в консоли, но учитель забыл их.

Но говорил, что такие функции существуют и не мало! Ну, ясно, что я сразу полез искать в Интернете. И естественно там я ничего не поFINDил. И я уже совсем расстроился, как случилось чудо!!! На уроке информатики, где мы изучали MS Word и DOS , заскучал и полез искать хлам на винте. И случайно увидел какие-то исходники…

Ну естественно я их начал читать. и Тогда я увидел, что есть умные люди в универе, они вручную перевели из Ansi в OEM кодировку и засунули в исходник текст, что позволило работать с русскими словами в с++ и выводить русские буквы в консоль (Об этом позже.). Я подумал "Алелуя! Здесь есть умные люди". И радости моей не было пределе, а того чувака я так и не нашёл :(. Но, запустив этот исходник в билдере я уж посильнее удивился. Он покрасил текст и фон в консольном приложении. Ну, блин, я сразу взялся всё переписывать в тетрадь. И вот теперь я доношу эту инфу до вас!

Текст покрасить можно разными цветами и делаем это так:

#include <stdio.h>
#include <conio.h> //Необходимые библиотеки

// В справке указано только КОНИО, но так у меня не работает.
// Ширина экрана (в символах) в DOS всегда 80 (а высота - 25 строк).

textbackground(GREEN); //Цвет фона.
textcolor(RED); //Цвет текста.
clrscr(); //Очищаем экран (Не обязательно!)

Вот привожу таблицу цветов:

BLACK 0
BLUE 1
GREEN 2
CYAN 3
RED 4
MAGENTA 5 //Цвета писать в верхнем регистре а команды в нижнем.
BROWN 6
LIGHTGRAY 7
DARKGRAY 8
LIGHTBLUE 9
LIGHTGREEN 10
LIGHTCYAN 11
LIGHTRED 12
LIGHTMAGENTA 13
YELLOW 14
WHITE 15

BLINK 128

С английским разбирайся сам.
Можно юзать эту функцию со смесью цветов:

textcolor(CYAN + BLINK);

С этой функцией я долбался очень долго!

Теперь перейдем к следующей функции: WINDOW
Она позволяет, как окрасить нужную часть экрана, так и позволить вводить там текст, подобно gotoxy(); или (LOCATE - В бейсике).
Эту функцию нужно юзать с теми же библиотеками, что и textcolor.

clrscr();
textbackground(GREEN);
textcolor(RED);
window(30,10,50,10); //Вот и она.
clrscr();

Результат работы этого сыра смотри сам! И поймешь!
Вот тебе вырезка из справки Билдера

Прототип
void window(int left, int top, int right, int bottom);

С английскими словами проблем быть не должно!

Если window не использовать, то она равна по умолчанию первой строке и первому столбцу.

Эти функции можно использовать несколько раз в программе:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int main()
{ float z,;
clrscr();
textbackground(GREEN);
textcolor(RED); //Тут меняем как надо.
window(30,10,50,10); //Положение экрана!
clrscr();
cout<<"\Hello World!";
getch();
textbackground(BLACK);
textcolor(LIGHTGRAY); //Все возвращаем обратно. По умолчанию так и есть.
clrscr();
}

Теперь ляпну про генератор случайных чисел:
Его юзать вот так:

randomize();
a = rand()/3276 //В a сгенерится любое число от 0 до 9.
a=random(50); //Или вот так число от 0 до 49.

Часто без использования "randomize();" генератор генерит все одинаковые числа!
А с ним все проще он всегда разные числа генерирует.

Всякие прикольные утилиты тоже пригодятся. Например
Cout<<"/n"; можно заменить вот так cout<<endl;

Функция gotoxy(1,44) - отправляет курсор, который мигает в точку окна строки 1 ,столбца 44.
Подключив #include math.h мы можем считать различные математические функции:

A = pow(A,4) - возводим A в 4 степень.
A = sqrt(A) - Получаем квадратный корень из A;
A = tan, sin, cos, exp, exp2, ctan, ant - всякие тангенсы экспоненты!

Если набираем символы для вывода в консоль:
Cout << "/t/n";
Есть много нюансов.

/t - Табуляция.
/a - Звуковой сигнал.
/v
/f
/x - Разберись с ними сам, а проще попробуй все :.

Также чтоб вывеси "/" нужно писать:

Cout<<"//";
А ":
Cout<<"/"";

Вот так вот.
Функция getch(); ждет символа с клавиатуры! Полезна в конце программ, чтобы не закрылось окно.
Функций еще очень много, хочешь знать больше?? Жми F1

Удачи.

Комментарии

Комментарий от Евгений [ 27 февраля, 2008, 22:01 ]

Спасибо, помогло. Пиши еще всякого рода мелочи. Мне как для новичка очень интересно.

Комментарий от Владимир Иванович [ 21 марта, 2008, 20:55 ]

Для студии пожалуйста оптимизируйте, а то ничего не работает. (Microsoft Visual Studio 2005/2008)

Комментарий от kas [ 22 марта, 2008, 01:24 ]

Это ты уж как-нибудь сам оптимизируй.

Комментарий от СЕРГЕЙ [ 10 апреля, 2008, 09:02 ]

Владимир. подключи библиотеки правильно и всё будет работать!
#include stdio.h
#include conio.h //Необходимые библиотеки

Комментарий от denizko [ 15 мая, 2008, 03:49 ]

Ничего не работает, даже с правильно подключенными библиотеками(для 2005/2008 Visual Studio).
\t – табуляция
\n – переход на новую строку
clrscr() – заменяем на system(“cls”); – (очищает экран)
getch() – красивее выглядит system(“pause”); – (пишет: Для продолжения нажмите любую клавишу… , и ждет нажатия..)
Для этих двух функций подключаем: #include “windows.h” – работает для любого Visual

Комментарий от flock [ 6 июня, 2008, 07:39 ]

textbackground,textcolor, clrscr, goto не являются стандартными функциями VS C++ .Напишити пожалуйста для textbackground альтернативу. а то не знаю я как
вот примеры по
clrscr:
#include
#include
#include

void clrscr(void)
{
HANDLE hOut = ::GetStdHandle(STD_OUTPUT_HANDLE);
COORD start = {0, 0};
CONSOLE_SCREEN_BUFFER_INFO info;
::GetConsoleScreenBufferInfo(hOut, &info);
::FillConsoleOutputCharacter(hOut, ‘ ‘, info.dwSize.X*info.dwSize.Y, start, NULL);
::SetConsoleCursorPosition(hOut, start);
}
int main(void)
{
int i;
clrscr();
for(i=0;i<20;i++)
cprintf(“%d\r\n”,i);
cprintf(“\r\nДля очистки экрана нажмите любую клавишу”);
getch();
clrscr();

cprintf(“Экран очищен!”);
getch();
return 0;
}

textcolor:

#include
#include

int main()
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10); //replace the 0 with a number for the color you want

cout << “Your text here” << endl;

return 0;
}

goto:
#include
#include
int main ( int argc, char** argv )
{
HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );

if ( INVALID_HANDLE_VALUE != hConsole )
{
COORD pos = {32, 11};
SetConsoleCursorPosition ( hConsole, pos );
printf ( “Hello World!\n” );
}

return 0;
}
все проверено и работает!

Комментарий от faeton [ 9 апреля, 2009, 12:30 ]

А в линухе размер консоли – штука не постоянная, как быть?

Комментарий от marx [ 22 июля, 2009, 14:09 ]

работает в VS С++

#include
////( или #include )

void ClrScr()
{
system(“cls”);
}

Комментарий от Васляй [ 23 ноября, 2009, 14:54 ]

Видимо я сейчас тоже молод и глуп еще, потому что статья мне реально помогла.Пасиб!

Комментарий от Сергей [ 4 октября, 2010, 11:47 ]

я всё перепробывал но мой код выводит Hello world! но сразу исчезает
#include
#include
#include “stdafx.h”
#include
using namespace std;

int main()
{
cout << "Hello, World!" << endl;
getch(Hello, World!);
return 0;

}
помогите если сможете

Комментарий от UginL7 [ 22 ноября, 2010, 18:57 ]

Вот так должно работать

#include
#include «stdafx.h»
#include
using namespace std;

int main()
{
cout << "Hello, World!" << endl;
getch();
return 0;
}

Комментарий от Василий [ 6 января, 2011, 19:14 ]

Не работает смена текста в консоли, юзаю визуал 2010 с++ помогите, вот мое мыло^ Vasek-sv@mail.ru

Комментарий от hexkey [ 13 января, 2011, 17:57 ]

Фэйл. Так и не разобрался… Компилирую gcc из под linux. Не работает…

Комментарий от Дмитрий [ 13 мая, 2011, 20:52 ]

#include “stdafx.h”;
#include
#include

using namespace std;

int main {
setlocale(LC_ALL, “Rus”);
cout << "Привет, Мир!" << endl;
system("pause");
return 0;
}

Комментарий от Дмитрий [ 13 мая, 2011, 20:53 ]

там где инклуды скрыты и (iostream и windows.h в )

Комментарий от Kuuu [ 21 марта, 2013, 19:08 ]

Василий, пиши так:
system(“color F0”); //F – цвет фона, 0 – цвет текста

Вот таблица цветов:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White

Источник: https://www.cyberforum.ru/cpp-beginners/thread57001.html

Комментарий от Евгений [ 9 ноября, 2015, 20:40 ]

А как сделать чтобы при вводе с клавиатуры, вводимый текст уже был окрашен в какой-либо цвет?

Комментарий от Андрей. [ 25 ноября, 2016, 23:28 ]

Спасибо, долго мозг ломал, как цветные символы выводить, как вывести, затереть и на место предыдущего символа вывести новый, сам хотел написать, что-то получилось, но не то чего хотелось, а с API я не дружу, пока что. У меня и без подключения библиотек #include ; #include работает всё. тфу-тфу поработаю с ними посмотрю.

Написать комментарий








Поиск по сайту

Статистика

Мета

  Разработка и дизайн — StvPromo.ru