Я нахожусь в середине создания небольшой игры на базе консоли для нашего задания по программированию на языке Си и решил сделать ее более презентабельной и уникальной, добавив цвета текста и текстовые фоны.
Пока я искал решение, я нашел эту удобную функцию, которая сделает то, что я хотел для своего проекта, но проблема в том, что есть одна часть, которую я не понимаю:
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
Где, BackC
и ForgC
даны целые числа, а тип данных WORD
является просто типизацией для беззнакового короткого int. В частности, я не понимаю часть ((BackC & 0x0F) << 4) + (ForgC & 0x0F)
. Может ли кто-нибудь помочь мне с этим? Я знаю, что могу просто использовать функцию, но я действительно хочу знать, как она работает...Спасибо!
Вот полный исходный код (colorExample.c)
#include <windows.h>
#include <stdio.h>
void SetColorAndBackground(int ForgC, int BackC);
int main()
{
SetColorAndBackground(10,1); //color value range 0 up-to 256
printf("what is text background color \n");
SetColorAndBackground(11,1);
printf("how about this?");
getch();
return 0;
}
void SetColorAndBackground(int ForgC, int BackC)
{
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
return;
}