版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.課 程 設(shè) 計(jì) 報(bào) 告 課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)C+ 設(shè)計(jì)題目:黑白棋游戲 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 姓 名: 學(xué) 號(hào): 指導(dǎo)教師:李 曉 虹2015 年 1 月 10 日1、 需求分析 關(guān)于黑白棋的功能描述如下:運(yùn)行游戲并進(jìn)行初始化工作,將整個(gè)游戲區(qū)域分成縱向和橫向擴(kuò)展的若干個(gè)小方塊,并且這些小方塊是由黑棋和白棋分布于游戲區(qū)域的不同位置。玩家可以通過(guò)選取方格來(lái)對(duì)它們進(jìn)行下棋的操作,直到游戲結(jié)束。游戲的整體運(yùn)行效果如圖1.1。圖1.12、 總體設(shè)計(jì)2.1、類設(shè)計(jì) 這個(gè)游戲的主要類是游戲模式類,類名為COthelloDlg。代碼如下:class COthelloDlg : public CD
2、ialog/ Constructionpublic:void GameStart();void PlayBackMusic(BOOL bCheck);void InitMenu();COthelloDlg(CWnd* pParent = NULL);/ standard constructorint m_nBlackCount;/黑¨²子Á¨®個(gè)?數(shù)ºyint m_nWhiteCount;/白ã¡Á子Á¨®個(gè)?數(shù)ºyCChessBoard m_chess;/棋?盤&
3、#168;¬對(duì)?象¨®/ Dialog Data/AFX_DATA(COthelloDlg)enum IDD = IDD_OTHELLO_DIALOG ;/ NOTE: the ClassWizard will add data members here/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(COthelloDlg)protected:virtualvoid DoDataExchange(CDataExchange* pDX);/ DDX/DDV support
4、/AFX_VIRTUAL/ Implementationprotected:HICON m_hIcon;/ Generated message map functions/AFX_MSG(COthelloDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnAbout();afx_msg void OnExitGame();afx_msg v
5、oid OnGameStart();afx_msg void OnHelp();afx_msg void OnLevelHigh();afx_msg void OnLevelLow();afx_msg void OnLevelNor();afx_msg void OnPlayMusic();afx_msg void OnBackBtn();/AFX_MSGafx_msg void OnRecalc(WPARAM wParam, LPARAM lParam);DECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will
6、insert additional declarations immediately before the previous line.#endif/ !defined(AFX_OTHELLODLG_H_DAC0C8C2_DDB6_4DA7_A56E_440CDF9A626B_INCLUDED_);2.2、程序源代碼及注釋 #include "graphics.h" /*圖形系統(tǒng)頭文件*/ #define LEFT 0x4b00 /*光標(biāo)左鍵值*/ #defi
7、ne RIGHT 0x4d00 /*光標(biāo)右鍵值*/ #define DOWN 0x5000 /*光標(biāo)下鍵值*/ #define UP 0x4800 /*光標(biāo)上鍵值*/ #define ESC 0x011b /* ESC鍵值*/ #define ENTER 0x1c0d /* 回車鍵值*/ int a88=0,key,score1,score2;/*具體分?jǐn)?shù)以及按鍵與存
8、放棋子的變量*/ char playone3,playtwo3;/*兩個(gè)人的得分轉(zhuǎn)換成字符串輸出*/ void playtoplay(void);/*人人對(duì)戰(zhàn)函數(shù)*/ void DrawQp(void);/*畫棋盤函數(shù)*/ void SetPlayColor(int x);/*設(shè)置棋子第一次的顏色*/ void MoveColor(int x,int y);/*恢復(fù)原來(lái)棋盤狀態(tài)*/ int QpChange(int x,int
9、;y,int z);/*判斷棋盤的變化*/ void DoScore(void);/*處理分?jǐn)?shù)*/ void PrintScore(int n);/*輸出成績(jī)*/ void playWin(void);/*輸出勝利者信息*/ /*主函數(shù)*/ void main(void) int gd=DETECT,gr; initgraph(&gd,&gr,"c:tc"); /*初始化圖形系統(tǒng)*/ Dr
10、awQp();/*畫棋盤*/ playtoplay();/*人人對(duì)戰(zhàn)*/ getch(); closegraph();/*關(guān)閉圖形系統(tǒng)*/ void DrawQp()/*畫棋盤*/ int i,j; score1=score2=0;/*棋手一開(kāi)始得分都為0*/ setbkcolor(BLUE); for(i=100;i<=420;i+=40) line(100,i,420,i);/*畫水平線*/ line(i,100,i,420);&
11、#160;/*畫垂直線*/ setcolor(0);/*取消圓周圍的一圈東西*/ setfillstyle(SOLID_FILL,15);/*白色實(shí)體填充模式*/ fillellipse(500,200,15,15); /*在顯示得分的位置畫棋*/ setfillstyle(SOLID_FILL,8); /*黑色實(shí)體填充模式*/ fillellipse(500,300,15,15); a33=a44=1;/*初始兩個(gè)黑棋*/ a34=a43=2;/*初始兩個(gè)白棋*/ setfills
12、tyle(SOLID_FILL,WHITE); fillellipse(120+3*40,120+3*40,15,15); fillellipse(120+4*40,120+4*40,15,15); setfillstyle(SOLID_FILL,8); fillellipse(120+3*40,120+4*40,15,15); fillellipse(120+4*40,120+3*40,15,15); score1=score2=2; /*有棋后改變分?jǐn)?shù)*/ DoScore();/*輸出開(kāi)始分?jǐn)?shù)*/ &
13、#160;void playtoplay()/*人人對(duì)戰(zhàn)*/ int x,y,t=1,i,j,cc=0; while(1)/*換棋手走棋*/ x=120,y=80;/*每次棋子一開(kāi)始出來(lái)的坐標(biāo),x為行坐標(biāo),y為列坐標(biāo)*/ while(1) /*具體一個(gè)棋手走棋的過(guò)程*/ PrintScore(1);/*輸出棋手1的成績(jī)*/ PrintScore(2);/*輸出棋手2的成績(jī)*/ SetPlayColor(t);/*t變量是用來(lái)判斷棋手所執(zhí)棋子的顏色*/
14、;fillellipse(x,y,15,15); key=bioskey(0);/*接收按鍵*/ if(key=ESC)/*跳出游戲*/ break; else if(key=ENTER)/*如果按鍵確定就可以跳出循環(huán)*/ if(y!=80&&a(x-120)/40(y-120)/40!=1 &&a(x-120)/40(y-120)/40!=2)/*如果落子位置沒(méi)有棋子*/ if(t%2=1)/*如果是棋手1移動(dòng)*/ a(x-120)/40(y-12
15、0)/40=1; else/*否則棋手2移動(dòng)*/ a(x-120)/40(y-120)/40=2; if(!QpChange(x,y,t)/*落子后判斷棋盤的變化*/ a(x-120)/40(y-120)/40=0;/*恢復(fù)空格狀態(tài)*/ cc+;/*開(kāi)始統(tǒng)計(jì)嘗試次數(shù)*/ if(cc>=64-score1-score2) /*如果嘗試超過(guò)空格數(shù)則停步*/ MoveColor(x,y); fillellipse(x,y,15,15); break;
16、;else continue;/*如果按鍵無(wú)效*/ 3 流程圖開(kāi)始初始化圖形系統(tǒng) 畫出棋盤按鍵操作是按鍵是否 為回車鍵?否是是否為有效位置否落 棋變成自己的棋子統(tǒng)計(jì)黑白棋個(gè)數(shù),輸出成績(jī)。輸出勝利者信息關(guān)閉圖形系統(tǒng)結(jié) 束 游 戲四、設(shè)計(jì)心得體會(huì) 以前也做過(guò)一次c語(yǔ)言課程設(shè)計(jì),但那時(shí)候?qū)語(yǔ)言基本的知識(shí)點(diǎn)都不是很懂,更別說(shuō)要我們編出那種圖形界面的程序來(lái)。所以感覺(jué)C語(yǔ)言很枯燥,也總認(rèn)為c語(yǔ)言只能編出那種黑底白字的程序。但經(jīng)過(guò)這次計(jì)算機(jī)軟件技術(shù)課程設(shè)計(jì),真正使我對(duì)計(jì)算機(jī)編程培養(yǎng)
17、了濃厚的興趣。當(dāng)我看到了用C語(yǔ)言做出的黑白棋游戲系統(tǒng)后,我才真正感受到了C程序設(shè)計(jì)的強(qiáng)大和神奇。原來(lái)C語(yǔ)言一樣也能做出那種很漂亮的圖形界面來(lái)。這讓我真正認(rèn)識(shí)到了學(xué)習(xí)編程的必要性。 在大一的時(shí)候我就過(guò)了國(guó)二,但說(shuō)實(shí)話,那基本上只是對(duì)C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)的考查,要我們編出這樣的程序來(lái)還有很遠(yuǎn)距離。雖然說(shuō)這黑白棋游戲系統(tǒng)程序不是我自己編寫出來(lái)的,但在老師的指導(dǎo)下,我自己查了很多資料,認(rèn)認(rèn)真真地讀了程序,也仔細(xì)分析程序的邏輯思路。使我對(duì)C語(yǔ)言編程有了更深入更真切的了解,具體如下: (1)、模塊化思想。雖然平常上課老聽(tīng)老師說(shuō)要有模塊化思想,但自己在編寫實(shí)例中具體如何模塊化就不是很清楚了。通過(guò)這次課程設(shè)計(jì),使我切實(shí)理解了模塊化思想,比如在黑白棋游戲系統(tǒng)中就可以分為畫棋盤模塊、人人對(duì)戰(zhàn)模塊、分?jǐn)?shù)處理模塊等,要實(shí)現(xiàn)哪個(gè)功能就直接讀和修改對(duì)應(yīng)的哪個(gè)模塊,這樣就大大提高了程序的可讀性和易修改性。 (2)、分析程序先從主函數(shù)main()入手。Main()函數(shù)是C源程序編譯時(shí)的開(kāi)始,從main()函數(shù)開(kāi)始讀函數(shù)可將其他函數(shù)的功能理解得更透徹。 (3)、本次課程設(shè)計(jì)我收獲最大的就是對(duì)圖形庫(kù)<graphics.h>的認(rèn)識(shí)和了解,平時(shí)我們編程很少用到也不知道怎么用這圖形庫(kù)<graphics.h>,所以一直認(rèn)為C語(yǔ)言
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能家居加盟品牌授權(quán)合同3篇
- 二零二五年度新能源儲(chǔ)能系統(tǒng)購(gòu)買合同3篇
- 二零二五年度林業(yè)人才培養(yǎng)合作造林協(xié)議3篇
- 2025年度老舊房屋漏水檢測(cè)與賠償專項(xiàng)協(xié)議3篇
- 2025年度股東退出與公司知識(shí)產(chǎn)權(quán)保護(hù)合同3篇
- 二零二五年度模特服裝租賃拍攝合同3篇
- 2025年度房地產(chǎn)公司合伙人項(xiàng)目合作協(xié)議3篇
- 二零二五年度循環(huán)水養(yǎng)殖養(yǎng)魚合作合同3篇
- 2025年度體育場(chǎng)館物業(yè)用房移交及賽事運(yùn)營(yíng)服務(wù)合同3篇
- 2025年度企業(yè)年會(huì)活動(dòng)宣傳片制作服務(wù)合同模板3篇
- 《萬(wàn)以內(nèi)數(shù)的認(rèn)識(shí)》大單元整體設(shè)計(jì)
- 24.教育規(guī)劃綱要(2024-2024)
- 山東省棗莊市滕州市2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
- 我的家鄉(xiāng)隴南
- 2023-2024學(xué)年蘇州市八年級(jí)語(yǔ)文上學(xué)期期末考試卷附答案解析
- 政治忠誠(chéng)、政治定力、政治擔(dān)當(dāng)、政治能力、政治自律情況自我評(píng)價(jià)
- 壓力鋼管安裝施工方案
- 醫(yī)保按病種分值付費(fèi)(DIP)院內(nèi)培訓(xùn)
- 軍人怎樣戰(zhàn)勝挫折
- 學(xué)習(xí)提示及單元任務(wù) 統(tǒng)編版高中語(yǔ)文選擇性必修上冊(cè)
- 大祥區(qū)三八亭小學(xué)2023年春季研學(xué)實(shí)踐活動(dòng)方案
評(píng)論
0/150
提交評(píng)論