近日用VB開發中國象棋
,遇到難題,用物件做
象棋共有那幾個物件、黑紅雙方怎么區別、棋子走動之后保存嗎?,幫參考下提出你們寶貴的意見。不要求人機對戰,可以自己一個人控制雙方玩的。
uj5u.com熱心網友回復:
只要棋子一個類,然后用一個列舉屬性來區別不同的棋子
列舉值從0開始,
紅方:帥仕相車馬砲兵 0~6
黑方:將士象車馬砲卒 7~13
用大小區分紅黑,用7取模后區分不同棋子的規則(因為紅黑相同)
棋譜
uj5u.com熱心網友回復:
只要棋子一個類,然后用一個列舉屬性來區別不同的棋子
列舉值從0開始,
紅方:帥仕相車馬砲兵 0~6
黑方:將士象車馬砲卒 7~13
用大小區分紅黑,用7取模后區分不同棋子的規則(因為紅黑相同)
棋譜
uj5u.com熱心網友回復:
我的想法是“兩個類”:棋盤類、棋子類。視窗提供一個“畫布”讓棋盤、棋子在它上面繪圖(各自實作自己的“可視效果”)。
棋盤類只要一個物件,棋子類32個物件(每個棋子一個類實體)。
棋盤重點需要實作的是:
1. 繪圖介面:即“可視”效果,把自己繪到視窗上。
2. 棋子查詢介面:按“棋盤格坐標”查詢該位置有無棋子、如果有棋子是紅方還是黑方。
(我的想法就是不用管具體是哪種棋子,只需要管“有&無、紅&黑”)
3. 棋子放置、移除介面:開局要把各個棋子放置到棋盤上;“走棋”時要從原位置移除、放置到新位置上。
4. “拾棋”介面:滑鼠在“畫布”上按下時,有沒有棋子被拾起;如果拾起了,被拾起的是哪個格子上的棋子。
5. “落棋”介面:滑鼠拖動一個棋子放到棋盤上時,它會被“放”到哪個格子上。
6. 棋盤格坐標查詢介面:我的想法是,“棋盤”畫多大、什么樣的背景圖、什么樣的棋格線條等,這些都是棋盤
自己的事情,主視窗(人機互動、棋局管理)和棋子不用關心這個,具體細節實作由“棋盤類”處理。棋子在
“標準狀態”下,要按“棋盤格坐標”確定所畫的位置。因為棋子是放在交叉點上的,回傳的資料應該是這個交叉
點的中心坐標。
棋盤類還可以有其它細節方面的介面,這些是可有可無的:
比如設定棋盤風格(背景圖片、棋盤“材質”等)、棋盤大小等。
棋子就是每個“棋子”為一個實體。主要屬性是:
1. 棋子類別ID:用數值表示“車馬相仕帥”等。
2. 紅或黑。
3. 是否可見:“開局”時,都是可見的,被“吃掉”后,就為不可見的。
這個屬性也可以不要,由“主視窗”管理紅黑雙方各剩余哪些棋子。
4. 棋子坐標:“可見”的棋子,目前在棋盤的哪個格子上。
“棋子類”主要實作的介面是:
1. 繪圖介面:按“畫布坐標”,把自己畫到畫布上。
畫棋子時,按類別ID、紅或黑畫不同的棋子圖片。
2. “走棋”介面:按類別ID,就有不同的“規則”走棋。
這個介面主要實作的細節是,從原位置(自身屬性記錄)“走”到新位置(從引數傳入)時,
是否能走棋(新位置有己方棋子不能走;不符合規則不能走)、走到新位置時是否吃掉對方棋子。
主視窗就要實作整個“棋局”的管理:
紅黑雙方各有哪些棋子、
哪方取勝(或失敗)或平局、
棋局畫面的繪制(分別呼叫各自的繪圖介面)等。
uj5u.com熱心網友回復:
http://www.xqbase.com/轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/89620.html
標籤:網絡編程
上一篇:關于DLL呼叫問題
下一篇:[求助] 在Execl VBA 中能完全可用的 PictureBox.ocx 及 QRmaker.ocx ,具備完整屬性的檔案 !
