C++課程設(shè)計(jì):黑白棋游戲_第1頁(yè)
C++課程設(shè)計(jì):黑白棋游戲_第2頁(yè)
C++課程設(shè)計(jì):黑白棋游戲_第3頁(yè)
C++課程設(shè)計(jì):黑白棋游戲_第4頁(yè)
C++課程設(shè)計(jì):黑白棋游戲_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論