記錄象棋程式開發歷程:從連敗到小勝,完成最基礎的開局佈局功能。採用 INI 檔案 定義棋子初始位置與對應圖片,WinForms PictureBox 陣列承載棋子視覺化,支援滑鼠拖曳移動。
const string FileName = @"..\..\象棋布局文件.ini";
Hashtable chessHT = new Hashtable(); // 棋子名稱 → Image
PictureBox[] pictureBoxs = new PictureBox[32]; // 32 個棋子控制項
Image[] imgs = new Image[14]; // 14 種棋子圖片
string[] soldiers = new string[32]; // 棋子類型名稱
Point[] tempPoint = new Point[32]; // 棋子初始座標
bool whetherSelected = false; // 確保單棋子移動
Point p, beforeMovePoint; // 滑鼠座標追蹤
PictureBox 實例,加入 Panel,預設隱藏MouseDown/Move/Up 實作拖曳邏輯PictureBox 位置、圖片、Visible=true// 圖片載入範例
imgs[0] = Image.FromFile(@"..\..\img\black-bing.gif"); // 黑卒
imgs[6] = Image.FromFile(@"..\..\img\black-jiang.gif"); // 黑將
imgs[7] = Image.FromFile(@"..\..\img\red-zu.gif"); // 紅兵
imgs[13] = Image.FromFile(@"..\..\img\red-shuai.gif"); // 紅帥
// 建立對照表
string[] names = {"黑卒","黑炮","黑車","黑馬","黑象","黑士","黑將",
"紅兵","紅炮","紅車","紅馬","紅相","紅士","紅帥"};
for (int i=0; i<14; i++) chessHT.Add(names[i], imgs[i]);
// 加入 Panel 並註冊事件
panel1.Controls.AddRange(pictureBoxs);
for (int i=0; i<32; i++) {
pictureBoxs[i].Visible = false;
pictureBoxs[i].MouseDown += PictureBoxs_MouseDown;
pictureBoxs[i].MouseMove += PictureBoxs_MouseMove;
pictureBoxs[i].MouseUp += PictureBoxs_MouseUp;
}

後續將實作走法驗證、AI 對弈、悔棋等功能。原始碼結構清晰,易於擴充。