Tôi đang ở giữa việc tạo một game dựa trên giao diện điều khiển nhỏ cho bài tập lớp lập trình C của chúng tôi và tôi quyết định làm cho nó trở nên dễ đọc và độc đáo hơn bằng cách thêm màu văn bản và hình nền.Biểu thức này có ý nghĩa gì? (Hàm SetConsoleTextAttribute trong C)
Trong khi tôi đã vào cuộc tìm kiếm của tôi tìm kiếm một giải pháp, tôi đã tìm thấy chức năng này tiện dụng mà sẽ làm chỉ là cách tôi muốn cho dự án của tôi nhưng vấn đề là có phần này tôi không hiểu:
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
Ở đâu, BackC
và ForgC
được cung cấp các số nguyên và kiểu dữ liệu WORD
chỉ là typedef cho một ký tự ngắn chưa được ký. Cụ thể, điều tôi không hiểu là phần ((BackC & 0x0F) << 4) + (ForgC & 0x0F)
. Bất cứ ai có thể giúp tôi với điều này? Tôi biết rằng tôi chỉ có thể sử dụng chức năng nhưng tôi thực sự muốn biết cách hoạt động của chức năng ... Cảm ơn!
Đây là mã nguồn đầy đủ (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;
}
http://en.wikipedia.org/wiki/Bitwise_operation –