經典 BGI 圖形庫
- Borland Turbo C 時代標準圖形介面
- 現代 Linux 可用
libgraph 或 SDL/OpenGL 替代
- 教學價值:理解座標系統、繪圖原語、動畫迴圈
程式架構解析
核心模組
initgraph():初始化圖形模式 (VGA 640×480)
donghua():開場動畫 (文字飛入、載入進度條)
menu():主選單 (四圓形按鈕:Run/Game/Me/Exit + Help)
run():萬年曆功能 (輸入年份、計算星期、列印月曆)
game():預留遊戲框架
about():個人資訊頁
help():按鍵說明
hua()/hua2():裝飾性幾何圖形繪製 (橢圓、弧線、填充)
end():結束動畫
關鍵圖形函數表
| 函數 | 用途 |
setcolor()/setbkcolor() | 前景/背景色 |
settextstyle() | 字體、方向、大小 |
outtextxy(x,y,str) | 座標輸出文字 |
circle()/ellipse()/arc() | 基本幾何圖形 |
setfillstyle()/floodfill() | 填充樣式與區域填充 |
line()/bar3d() | 線段/3D長方體 |
delay() | 毫秒延遲 (動畫用) |
getch() | 無回顯讀鍵 |
萬年曆演算法核心
int IsLeapYear(int y) {
return (y%4==0 && y%100!=0) || (y%400==0);
}
// 計算 1/1 到輸入年份的總天數 → 總天數%7 = 1/1 星期幾
// 各月天數表 → 依星期偏移列印日曆
現代化建議
- Windows:Win32 API / Direct2D / Qt / wxWidgets
- Linux:GTK / Qt / SDL2 / OpenGL
- Web:HTML5 Canvas / WebGL
- 保留 BGI 邏輯作為圖形程式設計入門教學參考