Я нахожусь в процессе создания небольшой консольной игры для нашего класса по программированию на C, и я решил сделать ее более презентабельной и уникальной, добавив цвета текста и фоновые изображения текста.В моих поисках решения я нашел эту удобную функцию, которая будет работать так, как я хотел для моего проекта, но проблема в том, что есть эта часть, которую я не понимаю:
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
Где, BackC
и ForgC
являются целыми числами, а тип данных WORD
является просто typedef для беззнакового short 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;
}