2008.12.29
昨天晚上終于把象棋的棋盤畫(huà)出來(lái)了!
今天則需要把棋子初始化,之后放到象棋開(kāi)局的位置上。(這個(gè)工作也順利完成了)
現(xiàn)在的工作是如何在CplayDlg類上面移動(dòng)棋子。現(xiàn)在的思路是在棋盤類當(dāng)中加入一個(gè)二維數(shù)組,將屏幕坐標(biāo)和棋盤的邏輯坐標(biāo)一一對(duì)應(yīng),以方便查找。然后將選定棋子move到新的位置,再調(diào)用OnPaint();
順便說(shuō)一下現(xiàn)在程序當(dāng)中的類
CplayDlg----MFC生成的主要類
CCheckerman----自己寫的棋子類。主要方法就是MOVE。
CChessboard----自己寫的棋盤類。負(fù)責(zé)畫(huà)出棋盤,并且建立屏幕坐標(biāo)和棋盤邏輯坐標(biāo)的對(duì)應(yīng)關(guān)系~!
目前界面做到這個(gè)程度了。30號(hào)先回學(xué)校考試。之后聽(tīng)完今年的維也納音樂(lè)會(huì)再來(lái)繼續(xù)做吧~!
順便說(shuō)一下。這個(gè)棋盤是我自己一筆一筆用VC畫(huà)出來(lái)的。真費(fèi)勁啊!還有那些棋子的素材也來(lái)之不易。我把一個(gè)象棋游戲當(dāng)中的資源給拔下來(lái)了!又需要素材或者源程序的朋友請(qǐng)郵件聯(lián)系!~
ps:這個(gè)游戲的四大目標(biāo)
1、實(shí)現(xiàn)雙人同機(jī)對(duì)戰(zhàn)
2、實(shí)現(xiàn)雙人網(wǎng)絡(luò)對(duì)戰(zhàn)
3、實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn)
4、加入后臺(tái)數(shù)據(jù)庫(kù)實(shí)現(xiàn)用戶注冊(cè)和積分等功能。注冊(cè)部分希望可以獨(dú)立的使用Ruby on Rails寫出來(lái)!
小弟初學(xué)乍練。不到之處多多包涵! 2008.12.31
在2008年最后一天的下午,我又想寫一寫這個(gè)想起程序了。
目前遇到的問(wèn)題是由于使用DrawIconEx等函數(shù)實(shí)現(xiàn)棋子的移動(dòng)效果的時(shí)候屏幕會(huì)出現(xiàn)閃爍!請(qǐng)問(wèn)各位如何防止這種情況的出現(xiàn)呢?換句話說(shuō)就是在調(diào)用OnPaint函數(shù)的時(shí)候,只刷新當(dāng)前棋子位置的屏幕,而其他部分則不刷新!
第二個(gè)問(wèn)題是我想用GDI+來(lái)顯示ICO圖像。可是卻失敗了,源碼如下……
Image image(L"C:\\Users\\Administrator\\Desktop\\ico128.ico");
CRect rect;
GetWindowRect(&rect);
Graphics graphics(hdc);
graphics.DrawImage(&image, 0, 0,rect.Width(),rect.Height());
但是當(dāng)把imang參數(shù)變?yōu)長(zhǎng)"C:\\Users\\Administrator\\Desktop\\i200831313448532_2.jpg就能顯示出來(lái)。不知道是不是GDI+不支持ICO格式呢?(我又檢查了一遍,路徑?jīng)]有問(wèn)題!);
請(qǐng)各位老大賜教一下吧!~
posted on 2008-12-29 00:30
HIT@ME 閱讀(2804)
評(píng)論(18) 編輯 收藏 引用