版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、附件1:學(xué) 號(hào): 課 程 設(shè) 計(jì)課程名稱可視化編程(VC)學(xué) 院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專 業(yè)軟件工程專業(yè)班 級(jí)姓 名指導(dǎo)教師20102011學(xué)年 第2學(xué)期目錄1、摘要-22、關(guān)鍵字-23、正文-2 (1)功能描述-2 必備功能-2 絢麗功能-3 (2)操作實(shí)現(xiàn)-4(3)詳細(xì)剖析-6 (4)所遇問(wèn)題-11 (5)未解決問(wèn)題-13 (6)設(shè)計(jì)總結(jié)-144、參考資料-14五子棋系統(tǒng)實(shí)現(xiàn)【摘要】此五子棋系統(tǒng)用戶可以選擇棋子顏色和樣式,有黑白兩種顏色的選取,備有計(jì)時(shí)功能,如果超時(shí)系統(tǒng)則做出讓步處理。該系統(tǒng)有人機(jī)對(duì)戰(zhàn)和人人對(duì)戰(zhàn)的模式,五子相連時(shí)能自動(dòng)判斷勝負(fù)。此次的五子棋系統(tǒng)界面良好,絢麗,有創(chuàng)新意識(shí)。功能
2、完善,功能多樣,其中有很多人性化以及趣味設(shè)計(jì),如聲音的提示等。【關(guān)鍵字】 五子棋 計(jì)時(shí) 超時(shí) 讓步處理 人機(jī)對(duì)戰(zhàn) 人人對(duì)戰(zhàn) 界面 功能 聲音 趣味設(shè)計(jì)【正文】功能描述1、必備功能(1)用戶可以選擇棋子的顏色(黑、白),可以選擇對(duì)戰(zhàn)的模式(人人對(duì)戰(zhàn)、人機(jī)對(duì)戰(zhàn)),當(dāng)為選棋子和模式時(shí),系統(tǒng)默認(rèn)人機(jī)對(duì)戰(zhàn),玩家執(zhí)白棋,選擇不同的模式,計(jì)時(shí)卡上的內(nèi)容也會(huì)相應(yīng)的顯示(2)擁有計(jì)時(shí)功能(下棋思考時(shí)間以及游戲總時(shí)間),如果超過(guò)規(guī)定時(shí)間沒(méi)有落棋,則會(huì)有懲罰(超過(guò)25秒未落棋,出現(xiàn)提醒對(duì)話框后默認(rèn)判定讓步處理)(3)當(dāng)五子相連時(shí),系統(tǒng)自動(dòng)判定輸贏(4)菜單相應(yīng)的還有“重來(lái)”、“重置”、“退出”等功能2、絢麗功能(1
3、)界面絢麗(2)當(dāng)按下“開始”時(shí),彈出計(jì)時(shí)卡供計(jì)時(shí),分布棋盤兩邊(3)當(dāng)開始時(shí)、落棋時(shí)、輸贏時(shí)、超時(shí)時(shí)系統(tǒng)會(huì)發(fā)出聲音(4)當(dāng)人機(jī)對(duì)戰(zhàn)時(shí),電腦落棋時(shí),會(huì)有閃爍的功能(5)當(dāng)五子相連時(shí),五子會(huì)同時(shí)閃爍,提醒棋局已完未開始時(shí)界面截圖開始時(shí)界面截圖(很多同學(xué)問(wèn)我為什么要畫這樣一個(gè)圖放在界面,我覺(jué)得這剛好與黑白棋相呼應(yīng),所以就果斷的畫了,此次看來(lái)效果還不錯(cuò))(桌面背景可以忽視)菜單欄二、操作實(shí)現(xiàn)1、未開始點(diǎn)擊棋盤會(huì)出現(xiàn)提示2、超時(shí)處理讓步前(白棋超時(shí)) 讓步后(白棋超時(shí))3、游戲時(shí)是無(wú)法改變游戲模式和棋子顏色的,如要改變,則需要點(diǎn)擊游戲中的“重置”,被選擇的模式以及棋子菜單項(xiàng)將會(huì)變灰4、若要放棄當(dāng)前棋局
4、,可單擊“重來(lái)”,單擊“重來(lái)”,則按原來(lái)的模式以及棋子顏色進(jìn)行游戲5、若要結(jié)束游戲,則從“游戲”選擇“退出”即可,或者單擊右上角的6、若要查看作者相關(guān)信息,單擊菜單欄“關(guān)于”即可三、詳細(xì)剖析1、界面如何繪制(1)獲取父窗口的寬cxClient,高cyClient以及每一個(gè)格子的寬cxBlock,高cyBlock(2)畫棋盤:DrawLine()的關(guān)鍵代碼第一個(gè)for循環(huán)為畫列,第二個(gè)for循環(huán)為畫航當(dāng)未開始時(shí),則繪制出界面上的“八卦圖”,代碼如下2、如何獲取坐標(biāo)并在特定區(qū)域畫棋子在WM_LBUTTONDOWN消息下,獲取縱橫坐標(biāo),經(jīng)過(guò)轉(zhuǎn)化,化為矩陣matrixxy的下標(biāo)x,y畫棋子函數(shù)以及代碼
5、如下3、如何進(jìn)行黑白棋的轉(zhuǎn)化(1)當(dāng)為人人對(duì)戰(zhàn)(RRStart=TRUE)模式時(shí),黑白棋的轉(zhuǎn)化,用全局變量count進(jìn)行控制(2)當(dāng)為人機(jī)對(duì)戰(zhàn)(RJStart=TRUE)模式時(shí),響應(yīng)一次WM_LBUTTONDOWN消息,則完成玩家與電腦各一步操作以上代碼包括了電腦落棋后的閃爍效果以及聲音效果。(3)其中FIRST,SECOND為選擇黑白棋進(jìn)行變化的中間變量,實(shí)現(xiàn)方式如下其中EnableMenuItem()函數(shù)控制該菜單的可選與不可選(變灰)4、如何控制電腦下棋的函數(shù)POINT Opinion(BYTE tapROWCOLS, ChessCount note);void computer(BYT
6、E tapROWCOLS, POINT *computerXY);此次電腦下棋的算法參考了網(wǎng)絡(luò)資源。5、判斷輸贏(1)int IsWin(HWND hwnd,BYTE tapROWCOLS, BYTE Color,int cxBlock,int cyBlock)hwnd:窗口句柄,tapROWCOLS:標(biāo)志棋盤個(gè)位置是否被占的矩陣,Color:棋子顏色,cxBlock,cyBlock為一個(gè)方格的寬高(2)若五子相連,則調(diào)用shine(hwnd,x,y,Color,cxBlock,cyBlock,flag);閃爍函數(shù)hwnd:窗口句柄,Color:棋子顏色,cxBlock,cyBlock為一個(gè)方
7、格的寬高,flag標(biāo)志其勝利的方式,有4種情況,五子一列,五子一橫,五子左下到右上,五子左上到右下。(3)若棋盤已滿則調(diào)用BOOL IsFull(BYTE tapROWCOLS)掃描整個(gè)棋盤。6、時(shí)間如何控制LRESULT CALLBACK ChildWndProc1 (HWND, UINT, WPARAM, LPARAM) ;LRESULT CALLBACK ChildWndProc2 (HWND, UINT, WPARAM, LPARAM) ;調(diào)用2個(gè)子窗口的處理函數(shù)進(jìn)行時(shí)間的控制以及2個(gè)窗口相關(guān)內(nèi)容的設(shè)置,時(shí)間如何控制當(dāng)窗口創(chuàng)立是,調(diào)用一個(gè)一秒觸發(fā)一次的定時(shí)器時(shí)間函數(shù)的代碼如下其中定義2
8、個(gè)全局變量ThinkTime1和ThinkTime2控制雙方的思考時(shí)間讓步處罰如何進(jìn)行(3)如何進(jìn)行時(shí)間重置開始時(shí),重來(lái)時(shí),重置時(shí),輸贏時(shí)調(diào)用函數(shù)若思考結(jié)束,即已經(jīng)落棋,則將思考時(shí)間置0(ThinkTime1=0或ThinkTime2=0)四、所遇問(wèn)題1、引入位圖出現(xiàn)錯(cuò)誤解決:通過(guò)改變圖片格式,正確引入2、位圖與棋盤大小不符合解決:獲取位圖的寬高從而以此寬高位標(biāo)準(zhǔn),定義棋盤的大小3、旗子在棋盤的位置出現(xiàn)偏差通過(guò)調(diào)整,引入一個(gè)誤差,從而進(jìn)行改善如BitBlt (hdc, cxBlock * x+2, cyBlock * y+2, (x+1)*cxBlock-2, (y+1)*cyBlock-2,
9、 hdc1, 0, 0, SRCCOPY);此函數(shù)就引入一個(gè)2的誤差調(diào)整位置。4、如何解決閃爍的問(wèn)題問(wèn)題描述:為實(shí)現(xiàn)此絢麗的功能,曾經(jīng)用過(guò)空白來(lái)覆蓋棋子實(shí)現(xiàn),但是會(huì)使棋盤背景顏色以及棋盤線條覆蓋,不自然美觀。解決:利用與棋子交替覆蓋的方法來(lái)實(shí)現(xiàn)棋子的閃爍,可以很好解決這問(wèn)題5、三窗口如何同時(shí)關(guān)閉問(wèn)題描述:建立2個(gè)小窗口計(jì)時(shí),在關(guān)閉主窗口的時(shí)候無(wú)法關(guān)閉2個(gè)計(jì)時(shí)窗口。解決方案:(1)可以用SendMessage(),函數(shù)實(shí)現(xiàn),如SendMessage(hwnd, WM_DESTROY, 0, 0);(2)將2個(gè)小窗口歸為主窗口的子窗口就可以完美的解決這個(gè)問(wèn)題,此方法應(yīng)用于此程序。6、兩個(gè)計(jì)時(shí)卡上的
10、游戲總時(shí)間每次+2,而不是+1問(wèn)題描述:如上所述解決方案:因?yàn)?個(gè)子窗口的處理函數(shù)調(diào)用同一個(gè)時(shí)間函數(shù)GTime()導(dǎo)致此函數(shù)每相隔一秒響應(yīng)2次,導(dǎo)致如上的問(wèn)題。通過(guò)在每個(gè)WM_TIMER消息下執(zhí)行Second減一解決問(wèn)題。7、問(wèn)題描述:當(dāng)超時(shí)彈出提醒對(duì)話框后,時(shí)間無(wú)法停止,繼續(xù)計(jì)時(shí)。解決方案:調(diào)用KillTimer()函數(shù)移除定時(shí)器,在對(duì)話框之后重新調(diào)用SetTimer()函數(shù),重新設(shè)置定時(shí)器,如下所示8、細(xì)節(jié)問(wèn)題問(wèn)題描述:當(dāng)進(jìn)行游戲時(shí)本應(yīng)該不能選擇游戲模式以及棋子顏色等其他菜單的細(xì)節(jié)操作解決方案:調(diào)用函數(shù)EnableMenuItem(GetMenu(hwnd), ID_MENUITEM_BL
11、ACK, MF_GRAYED);必要時(shí),使特定的菜單變灰無(wú)法選擇。五、未解決問(wèn)題1、電腦下棋算法的實(shí)現(xiàn)電腦下棋算法自己的源代碼參考了網(wǎng)絡(luò)資源,但是電腦算法還不夠完善2、若進(jìn)行人機(jī)對(duì)戰(zhàn),第一步玩家超時(shí),讓步處理后,無(wú)法顯示讓步后的那一步棋子,但是有聲音發(fā)出3、當(dāng)進(jìn)行人人對(duì)戰(zhàn)時(shí),當(dāng)超時(shí)的為玩家2時(shí),提示的即將超時(shí)的聲音有相隔一秒連續(xù)出現(xiàn)的問(wèn)題4、當(dāng)從人人對(duì)戰(zhàn)的模式切換到人機(jī)對(duì)戰(zhàn)時(shí),計(jì)時(shí)卡的顯示信息出現(xiàn)重疊的情況,如下圖所示六、設(shè)計(jì)總結(jié)此程序用API編寫完成,雖然比較麻煩,但是這讓我對(duì)API有了更深的了解。在進(jìn)行設(shè)計(jì)的過(guò)程中曾多次想放棄,做更簡(jiǎn)單的計(jì)算器,但是最后自己還是堅(jiān)持下來(lái)了,回想起來(lái)還是覺(jué)得
12、很慶幸自己做了堅(jiān)持的選擇,雖然從中遇到了很多問(wèn)題,但是通過(guò)上網(wǎng)查資料和與同學(xué)討論,最終還是把大部分問(wèn)題解決了。此程序唯一令我不滿意的地方就是電腦下棋的算法,此算法不是完全由自己寫出,參考了網(wǎng)上的許多資料,這是整個(gè)程序的一個(gè)敗筆,在暑假期間,這個(gè)將會(huì)完全改變。同時(shí)有了此次設(shè)計(jì)的經(jīng)驗(yàn),也給自己定了下一個(gè)任務(wù),希望自己能設(shè)計(jì)出“象棋”游戲。繼續(xù)努力?!緟⒖假Y料】Visual C+面向?qū)ο笈c可視化程序設(shè)計(jì)(第二版) 黃維通編著百度百科MSDN本科課程論文評(píng)分標(biāo)準(zhǔn)班級(jí)學(xué)號(hào)姓名論文題目評(píng)閱點(diǎn)評(píng)分標(biāo)準(zhǔn)(細(xì)則)分值給分功能及算法(40分)正確實(shí)現(xiàn)本程序所需全部功能,算法設(shè)計(jì)正確合理且有一定創(chuàng)意40分實(shí)現(xiàn)所需功能,算法正確30分基本實(shí)現(xiàn)所需功能15分有明顯重大錯(cuò)誤5分無(wú)法實(shí)現(xiàn)程序功能0分界面和操作性(20分)界面美觀、合理,可操作性強(qiáng)20分界面
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024私立幼兒園食品安全管理與股權(quán)轉(zhuǎn)讓合同3篇
- 2024版網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估與防范合同
- 2024年公務(wù)員考試唐縣《行政職業(yè)能力測(cè)驗(yàn)》考前沖刺預(yù)測(cè)試卷含解析
- 《女性盆部斷層解剖》課件
- 2024預(yù)算合同部正規(guī)范本與管理制度優(yōu)化方案3篇
- 2025年度基礎(chǔ)設(shè)施建設(shè)項(xiàng)目承包經(jīng)營(yíng)權(quán)債務(wù)抵償協(xié)議3篇
- 2024年鐵路貨物運(yùn)輸服務(wù)合同版B版
- 2025年度醫(yī)療健康園區(qū)場(chǎng)地租賃及醫(yī)療服務(wù)合同3篇
- 2024男方家庭暴力離婚賠償協(xié)議與財(cái)產(chǎn)分割執(zhí)行書及子女權(quán)益保障3篇
- 2024鋁合金門窗工程節(jié)能環(huán)保驗(yàn)收合同3篇
- 創(chuàng)傷關(guān)節(jié)骨科年度總結(jié)
- 2022-2023學(xué)年江蘇省鹽城第一學(xué)期高一期末考試數(shù)學(xué)試卷及答案解析-普通用卷
- 醫(yī)師病理知識(shí)定期考核試題與答案
- 履約情況證明(共6篇)
- 礦井提升容器課件
- 云南省迪慶藏族自治州各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 《潔凈工程項(xiàng)目定額》(征求意見(jiàn)稿)
- 城鎮(zhèn)燃?xì)庠O(shè)計(jì)規(guī)范
- 年零售藥店操作規(guī)程版
- 日有所誦(二年級(jí))
- 搞笑個(gè)性YY娛樂(lè)頻道分組設(shè)計(jì)圖
評(píng)論
0/150
提交評(píng)論