ช่วยด้วยครับ ภาษา C

ผมอยากได้คำอธิบายครับ ผมไม่เข้าใจเลย
1.ส่วนหัวโปรแกรมเอาไว้เติมสี ช่วยอธิบายแต่ละบรรทัดหน่อยครับ
#define COLOR_BLACK        0
#define COLOR_DARKBLUE        1
#define COLOR_DARKGREEN    2
#define COLOR_AQUA            3
#define COLOR_DARKRED        4
#define COLOR_DARKVOILET    5
#define COLOR_DARKYELLOW    6
#define COLOR_GRAY            7
#define COLOR_DARKGRAY        8
#define COLOR_BLUE            9
#define COLOR_GREEN         10
#define COLOR_CYAN            11
#define COLOR_RED            12
#define COLOR_VIOLET        13
#define COLOR_YELLOW        14
#define COLOR_WHITE        15
#define textcolor(txt,back) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), back*16+txt)
#define resetcolor() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15)

2.ช่วยอธิบายให้อีกทีครับ
void gotoxy(short x, short y) {
     COORD pos = {x, y};
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

ขอบคุณมากครับ ผมอยากรู้ทุกบรรทัดจริงๆครับ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
บรรทัดแรกๆ คือ สีมันมีค่าๆหนึ่งเป็นค่าคงที่ เขาเลยใช้ตัวหนังสือแทน เพื่อให้ง่ายต่อการเข้า

#define textcolor(txt,back) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), back*16+txt)
บรรทัดนี้คือการนิยาม ฟังชั่น โดยฟังชัน  textcolor มีพารามิเตอร์สองตัว คือ สีตัวหนังสือ กับสีพื้นหลัง
แต่การทำงานจริงๆไปเรียกใช้ ตัว SetConsoleTextAttribute อีกที

#define resetcolor() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15)
บรรทัดนี้คือการล้างค่า สีตัวหนังสือโดย ไปกำหนด defualt ให้เป็นสีขาว (15 = white)

void gotoxy(short x, short y) {
     COORD pos = {x, y};
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

คือ การย้ายตำแหน่ง
ต้องสร้างตัวแปรประเภท COORD ขึ้นมา (coordinate) คือพิกัด x,y แล้วใส่พิกัดที่ต้องการย้าย console
แล้วแทนค่าไปใน SetConsoleCursorPosition อีกที

ส่วน GetStdHandle(STD_OUTPUT_HANDLE) ลองไปหาข้อมูลเพิ่มเติมดูนะครับ
ที่ต้องใช้เพราะ การทำงานมันต้องไปยุ่งกับ output คือ การแสดงผลทางจอภาพ เลยต้องใช้ พารามิเตอร์นี้ STD_OUTPUT_HANDLE
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่