SetConsoleCursorPosition 控制光標座標。SetConsoleTextAttribute 設置前景/背景色(支援 0-255)。_getch() 讀取方向鍵雙字節碼 (0xE0 + 72/80/75/77)。FillConsoleOutputCharacter 覆蓋整行實現動畫無殘影。typedef struct { int x,y; } Pos;
typedef struct { bool covered; int mines; } Cell;
Pos cursor[10][10];
Cell board[10][10];
int idx_x=0, idx_y=0, left=100;
void init() { /* 隨機佈雷、計算數字、初始化光標座標 */ }
void draw() { /* 繪製邊框、覆蓋格、數字、地雷 */ }
void move(int dy,int dx) { /* 邊界檢查、更新索引、移動光標 */ }
bool click(int y,int x) { /* 翻開、踩雷判斷、遞歸展開 */ }
int main() {
init(); draw();
while(1) {
set_cursor(cursor[idx_y][idx_x]);
int k = _getch();
if (k==0xE0) { k=_getch(); move(...); }
else if (k==' '||k=='\r') { if(click(...)) gameover(); }
else if (k==27) break;
}
}
啟動時標題從上方滑入、雙線從兩側合攏、版本號從左滑入、幫助文字從底部浮現,均通過逐行繪製+Sleep+清行實現。
Windows 10 + Code::Blocks 13.12 (GCC)。