




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2013-2014學年秋季學期(Windows程序設計課程設計報告學 院:計算機與信息學院序號:56姓名:周春雷學號: 2012112302指導教師:王安慧完成時間2014年05月29日目錄一、課程設計的目的1二、課程設計的容及要求1三、關鍵技術及相關原理介紹 1四、系統的總體設計2五、設計思路及關鍵問題的解決方法3六、設計模塊分類41. 輸入模塊42. 輸出模塊63. 判斷模塊7 判斷輸贏模塊7 判斷命令模塊11七、運行結果截屏13一、課程設計的目的通過所學的知識和技術,在老師的幫助下以及自己查詢資料,完成對五子棋 游戲的編程實現,使程序支持人人戰,并且可以完成判斷輸贏,悔棋,從新開始 等基
2、本功能。本次課程設計的課題簡單,且娛樂性強。在完成課題的過程中可以很好的復 習學過的知識和技術,并且在完成設計編程后,可以很大程度上提高自信心和好 學心,同時在做的過程中遇到難題能主動查閱資料、尋求幫助,對團隊協作以及 對網絡資源的有效利用有了更深的體會。二、課程設計的容及要求課程設計的容:本次設計將提供一個“五子棋”的游戲程序,可完成的功能 有“人與人對戰J悔棋、開始新游戲。課程設計的要求:使用QT軟件開發,語言使用O+。三、關鍵技術及相關原理介纟本系統主要分為輸入模塊、輸出模塊和判斷模塊這三大塊。各模塊依據所屬 功能的不同來劃分。輸入模塊主要實現用戶對數據的輸入,輸出模塊則是完成對用戶輸入
3、到系統 的數據在棋盤上的顯示,而判斷模塊這是系統的主要模塊,完成對用戶輸贏的判 斷和對用戶悔棋和從新開始等操作命令的響應。本次采用了 QT進行程序設計,對于圖形界面有較好的處理方法和環境。圖1:系統功能模塊圖圖1是系統的總體模塊圖,依據系統的不同功能包含3個大的模塊:輸入模 塊,判斷模塊和輸出模塊。各個模塊的具體代碼實現和功能描述在后面將詳細的 解釋。這里只是對系統功能實現有一個初步的了解。五、設計思路及關鍵問題的解決方法設計過程說明:圖2:系統流程圖圖2給出了整個系統的流程圖,簡單直觀的使系統一目了然。下面開始分析 整個系統的流程。首先只能進行“人人對戰S有玩家自己決定誰先手,然后輸入棋子位
4、置后 系統以“標簽”的形式將棋子顯示在棋盤上。在下棋后系統會開始判斷用戶是否 有“五子相連”(遵守五子棋的游戲規則),如果有五個棋子相連說明用戶獲勝, 這時候系統會提示“你獲勝了!主要靠判斷模塊判斷是否有獲勝的,當然在判斷后可以悔棋,系統會自動回到前 一步。六、設計模塊分類基本分為:輸入模塊、輸出模塊、判斷模塊1. 輸入模塊將用戶輸入的數據記錄,并輸入給程序。本系統采用的是鼠標事件輸入,用戶用鼠標點擊棋盤上的格子,系統將記錄 并在棋盤上顯示。部分代碼:void MainWindow: :zwomse/ressVMHQMouseEvent *e)int m,1=1,n;x=e-pos (). r
5、x ();x=(x/50)*50;y=e-pos (). ry ();y=(y/50)*50;i 1 (colory/50 x/50=l| |colory/50 x/50=2);/判斷是否已有標簽 else labeljjl=new QLabel(this):if(jl+temp)%2=0)labeljjl-setGeometry(x,y,50,50);labeljjl-setStyleSheet(background-color:black;border-radius: 25px);colory/50jx/50|=l;if(win=0)label j jl-show();if(jl=9)j+
6、;else labeljjl-setGeometry(x,y,50,50);labeljjl-setStyleSheet(background-color:gray;border-radius: 25px);colory/50x/50=2;if(win=0)label j jl-show();if(jl=9)j+;k=check(colorjjl,y/50,x/50);辻(k=l) player=new QMediaPlayer():player-setMedia(QUr 1 :: fromLocalFi le (*7E: /qt data/music/ 勁樂團 卡農.mp3);playerp
7、lay ();QMessageBox::warning(this,tr(haha),tr(你獲勝啦!),QMessageBox:: Yes);win=l ;if(j 1=9) jl=0;else jl+;2. 輸出模塊主要是棋盤函數以及棋子的顯示,這里棋子用“標簽”顯示。圖3:棋盤及棋子如圖3所示, 線的交叉點上。使用QT做成的界面,棋子落于棋盤的網格中而不是棋盤網格棋盤的部分代碼:void Ma inWindow: : /2a/?tre/7t(QPaintEvent *e) /棋盤函數 QPainter painter(this):painter setPen(Qt::black);for
8、(i=0;i=10; i+)painter drawLine(0,50*i 1500,50*i);for(i=0;i=10;i+)painter drawLine(50*i,0r 50*i,500);3. 判斷模塊判斷模塊分為判斷命令模塊和判斷輸贏模塊。判斷輸贏模塊判斷輸贏模塊是整個程序的核心部分,它的主要功能是實現對五子棋的輸贏 的判斷。開始 下棋四個方向判斷是否有五顆棋子在一條線上贏圖4:判斷輸贏模塊流程圖結束判斷輸贏模塊的具體工作原理由圖4可以清晰直觀的看到。為了完成判斷輸贏模塊的編碼實現,首先要了解五子棋輸贏的規則。五子棋 需要滿足五顆棋子在水平、豎直、斜向上或斜向下這四個方向上任意一
9、個方向上 有相同五個棋子出現就判斷為贏。所以編碼時也要依次判斷這四個方向是否有五 顆棋子滿足要求,如果有則判斷贏,如果沒有這切換用戶繼續下棋。然后下棋后 繼續判斷這時候是否有五顆棋子滿足要求,然后這樣循環。首先當用戶開始下棋后系統就開始判斷是否存在五顆棋子連在一條線上,系 統先從水平方向判斷,如果水平方向有五顆棋子連成一條線就顯示獲勝,如果水 平方向上沒有就開始豎直方向上的判斷;豎直方向有五顆棋子連成一條線就顯示 獲勝,如果豎直方向上沒有就開始斜向上方向上的判斷;斜向上方向有五顆棋子 連成一條線就顯示獲勝,如果斜向上方向上沒有就開始斜向下方向上的判斷;斜 向下方向有五顆棋子連成一條線就顯示獲勝
10、,如果斜向下方向上沒有就切換用戶 下棋。然后開始新開始對用戶輸贏的判斷,這就是整個系統的判斷輸贏模塊的流程 了。判斷輸贏模塊的部分代碼:int Ma inWindow:: check (i nt nf int m, int p)/判斷是否五子相連1=1;int k=m,kl=p;for(int i=0; i=0; i-)/*橫向左判斷是否五子相連*/if(colorkLp=colorkJ一-klJ)1+;if(l=5)return 1;)else break;k=m;kl=p;1=1;for(i=0; i=0; i-)/*豎向下判斷是否五子相連*/ if (colorkp=color-一kkl
11、) 1+;if(l=5)return 1;else break;k=m;kl=p;1=1;i f (m=9-p) t=m;else t=9-p;for (i=0; it; i+)/*135度向上判斷是否五子相連*/ if(colorm:p=color-kJ+kl)1+;if(l=5)return 1;)else break;k=m;kl=p;if(p=0; i-)/*135度向下判斷是否五子相連*/ if(colormjp=color卄k-kl)1+;if (1=5)return 1;Jelse break;k=m;kl=p;1=1;if(mp) t=m;else t=p;for (i=0;
12、i=0; i-)/*45度向上判斷是否五子相連*/ if(colorm:p=color卄kj+kl)1+;if (1=5)return 1;else break;if(1!=5) return 0;判斷命令模塊主要是判斷退出、從新開始.悔棋。是對系統功能的一個拓展和優化,有利于用戶更方便舒適的操作系統,加強 五子棋游戲的娛樂性。這一部分的流程圖如下:圖5:判斷命令模塊流程圖如圖5給出了系統判斷命令模塊的流程圖。如圖知道當用戶下棋后,系統首先會判斷用戶是否需要從新開始游戲,如果 需要系統會重新初始化后開始游戲。如果不需要,系統會判斷是否有五顆棋子在 一條線上,如果有則判斷為贏結束游戲。如果沒有五顆棋子在一條線上,系統會 判斷用戶是否有悔棋,如果有,系統會返回上一步從新下棋,如果沒有則切換用 戶繼續下棋。下棋后重復這個判斷流程。下面附上判斷命令模塊的部分代碼:void Ma inWindow:: huiqi ()/悔棋的代碼labeljj1-1-close();colory/501x/50二0;if (temp=0)temp=l;else temp=0;void Ma inWindow:: init () /初始化界面player-stop ();int t2ft3;for(t2=0;t2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 3936-2020河道管理評價規范
- DB32/T 3875-2020水泥工廠數字化設計指南
- DB32/T 3765-2020應對傳染病疫情醫療污水應急處理技術規范
- DB32/T 3761.5-2020新型冠狀病毒肺炎疫情防控技術規范第5部分:社區
- DB32/T 3761.31-2021新型冠狀病毒肺炎疫情防控技術規范第31部分:核酸采樣點
- DB32/T 3634-2019船閘工程質量檢驗規范
- DB32/T 3218-2017公路工程控制模量樁復合地基技術規程
- DB31/T 893-2015公交車輛節油駕駛操作指南
- DB31/T 704-2013南美白對蝦親蝦培育技術規范
- DB31/T 684-2013老年照護等級評估要求
- 公司差旅費報銷單
- 《華為國際化之路》課件
- 高空作業安全責任協議書防盜網
- 關于地下室滲漏水問題的總結及堵漏措施
- (完整版)聚乙烯課件
- 《碳計量》教學大綱
- 公司“三重一大”決策制度實施辦法
- 商務談判說課精課件
- 微信視頻號代運營合同范本
- 【基于近五年數據的鴻星爾克財務報表分析15000字】
- CNN 卷積神經網絡介紹
評論
0/150
提交評論