![C++課程設計:五子棋_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/10/1d90d9d7-60c5-4754-86f0-ef6c8db1806c/1d90d9d7-60c5-4754-86f0-ef6c8db1806c1.gif)
![C++課程設計:五子棋_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/10/1d90d9d7-60c5-4754-86f0-ef6c8db1806c/1d90d9d7-60c5-4754-86f0-ef6c8db1806c2.gif)
![C++課程設計:五子棋_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/10/1d90d9d7-60c5-4754-86f0-ef6c8db1806c/1d90d9d7-60c5-4754-86f0-ef6c8db1806c3.gif)
![C++課程設計:五子棋_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/10/1d90d9d7-60c5-4754-86f0-ef6c8db1806c/1d90d9d7-60c5-4754-86f0-ef6c8db1806c4.gif)
![C++課程設計:五子棋_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/10/1d90d9d7-60c5-4754-86f0-ef6c8db1806c/1d90d9d7-60c5-4754-86f0-ef6c8db1806c5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.課 程 設 計 報 告 課程名稱:面向對象程序設計C+ 設計題目: 五子棋 專 業(yè): 計算機科學與技術 姓 名: 學 號: 指導教師: 李 曉 虹 2016 年 1 月 6 日1、系統(tǒng)需求分析 “五子棋”是一種歷史悠久,十分有趣,簡單實用的游戲。在中國,五子棋正越來越收人們的重視和歡迎,隨著網絡的日益普及,越來越多的人選擇網絡作為休閑娛樂的場所。因此,開發(fā)基于計算機的五子棋對弈符合人們的需求和休閑方式。 本程序設計為人與人之間的對弈,一方執(zhí)黑棋,一方執(zhí)白棋,每方都試圖在游戲結束前讓自己的五子相連,首先實現五子相連的一方獲勝。2、總體設計2.1 開發(fā)環(huán)境開發(fā)環(huán)境:visual c+ 6.0開發(fā)
2、語言:MFC+C/C+操作系統(tǒng):windows7/XP2.2 系統(tǒng)流程分析2.2.1 流程圖圖2-13、詳細設計實現該功能的代碼如下:/ 五子棋View.cpp : implementation of the CMyView class/#include "stdafx.h"#include "五子棋.h"#include "五子棋Doc.h"#include "五子棋View.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_
3、FILE = _FILE_;#endif/struct qiziint x;int y; int ishei; /1表示存在,0表示不存在int isbai; /1表示存在,0表示不存在q1515;/ CMyViewIMPLEMENT_DYNCREATE(CMyView, CView)BEGIN_MESSAGE_MAP(CMyView, CView)/AFX_MSG_MAP(CMyView)ON_WM_ERASEBKGND()ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()/AFX_MSG_MAP/ Standard printing commandsON_COMMAN
4、D(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP()/ CMyView construction/destructionCMyView:CMyView()/ TODO: add construction code herem_p=1;for(int i=0;i<15;i+)for(int j=0;j<15;j+)q
5、ij.x=40+40*j;qij.y=40+40*i;qij.ishei=0;qij.isbai=0;CMyView:CMyView()BOOL CMyView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CMyView drawingvoid CMyView:OnDraw(CDC* pDC)CMyDoc* pDoc = GetDocum
6、ent();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereCPen pen(PS_SOLID,5,RGB(0,0,0);CBrush Brush=RGB(0,0,0);CBrush *oldBrush=pDC->SelectObject(&Brush);CPen *oldpen=pDC->SelectObject(&pen);for(int i=0;i<15;i+) / 畫行線pDC->MoveTo(40,40+40*i);pDC->LineTo(600,40+40*i);
7、for(int j=0;j<15;j+) / 畫列線pDC->MoveTo(40+40*j,40);pDC->LineTo(40+40*j,600);pDC->Ellipse(q55.x-5,q55.y-5,q55.x+5,q55.y+5);pDC->Ellipse(q77.x-5,q77.y-5,q77.x+5,q77.y+5);pDC->Ellipse(q59.x-5,q59.y-5,q59.x+5,q59.y+5);pDC->Ellipse(q95.x-5,q95.y-5,q95.x+5,q95.y+5);pDC->Ellipse(q99.
8、x-5,q99.y-5,q99.x+5,q99.y+5);pDC->SelectObject(oldpen);pDC->SelectObject(oldBrush);CPen pen1(PS_SOLID,5,RGB(255,0,0);CPen *oldpen1=pDC->SelectObject(&pen1);pDC->SetBkColor(RGB(240,150,100); /設置字體背景色pDC->TextOut(270,10,"郝磊的五子棋");pDC->SelectObject(oldpen1);/ CMyView pri
9、ntingBOOL CMyView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CMyView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CMyView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add clean
10、up after printing/ CMyView diagnostics#ifdef _DEBUGvoid CMyView:AssertValid() constCView:AssertValid();void CMyView:Dump(CDumpContext& dc) constCView:Dump(dc);CMyDoc* CMyView:GetDocument() / non-debug version is inlineASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc);return (CMyDoc*)m_pDocum
11、ent;#endif /_DEBUG/ CMyView message handlersBOOL CMyView:OnEraseBkgnd(CDC* pDC) / TODO: Add your message handler code here and/or call defaultCBrush Brush=RGB(240,150,100); / 背景色CBrush *oldBrush=pDC->SelectObject(&Brush);CRect rc;pDC->GetClipBox(&rc);pDC->PatBlt(rc.top,rc.left,rc.Wi
12、dth(),rc.Height(),PATCOPY);pDC->SelectObject(oldBrush);AfxGetMainWnd()->SetWindowPos(NULL,300,0,660,720,NULL); /調整窗體大小mciSendString("open chongerfei.wav alias start",NULL,0,NULL); /循環(huán)播放音樂mciSendString("play start",NULL,0,NULL);return true;return CView:OnEraseBkgnd(pDC);void
13、 CMyView:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultSetCapture();m_pos=point;paint(); / 畫棋子ifwin(); / 判斷輸贏CView:OnLButtonDown(nFlags, point);void CMyView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/
14、or call defaultReleaseCapture();CView:OnLButtonUp(nFlags, point);void CMyView:paint()CDC *pDC=GetDC();CPoint p=panduan();if(p.x=0&&p.y=0)return;if(m_p%2=1) /黑棋下CBrush Brush1=RGB(0,0,0);CBrush *oldBrush1=pDC->SelectObject(&Brush1);if(q(p.y-40)/40(p.x-40)/40.ishei=0&&q(p.y-40)/4
15、0(p.x-40)/40.isbai=0)sndPlaySound("q.wav",SND_ASYNC);pDC->Ellipse(p.x-15,p.y-15,p.x+15,p.y+15);q(p.y-40)/40(p.x-40)/40.ishei=1;m_p=m_p+1;pDC->SelectObject(oldBrush1);else /白棋下CBrush Brush2=RGB(255,255,255);CBrush *oldBrush2=pDC->SelectObject(&Brush2);pDC->SelectStockObject(
16、WHITE_PEN);if(q(p.y-40)/40(p.x-40)/40.ishei=0&&q(p.y-40)/40(p.x-40)/40.isbai=0)sndPlaySound("q.wav",SND_ASYNC);pDC->Ellipse(p.x-15,p.y-15,p.x+15,p.y+15);q(p.y-40)/40(p.x-40)/40.isbai=1;m_p=m_p+1;pDC->SelectStockObject(BLACK_PEN);pDC->SelectObject(oldBrush2);CPoint CMyView:
17、panduan()CPoint p(0,0);int i,j;for(i=0;i<15;i+)for(j=0;j<15;j+)if(qij.x-15<=m_pos.x)&&(m_pos.x<=qij.x+15)&&(qij.y-15<=m_pos.y)&&(m_pos.y<=qij.y+15)p.x=qij.x;p.y=qij.y;return p;void CMyView:ifwin()CDC *pDC=GetDC();int i,j;for(i=0;i<15;i+)for(j=0;j<15;j+
18、)if(qij.ishei=1) / 判斷黑棋是否贏CPen pen(PS_SOLID,10,RGB(0,0,0);CPen *oldpen=pDC->SelectObject(&pen);if(qij-2.ishei=1)&&(qij-1.ishei=1)&&(qij+1.ishei=1)&&(qij+2.ishei=1) /行pDC->MoveTo(qij-2.x,qij-2.y);pDC->LineTo(qij+2.x,qij+2.y);mciSendString("close start",N
19、ULL,0,NULL);AfxMessageBox("游戲結束!n黑方贏!");if(qi-2j.ishei=1)&&(qi-1j.ishei=1)&&(qi+1j.ishei=1)&&(qi+2j.ishei=1) /列pDC->MoveTo(qi-2j.x,qi-2j.y);pDC->LineTo(qi+2j.x,qi+2j.y);mciSendString("close start",NULL,0,NULL);AfxMessageBox("游戲結束!n黑方贏!");if
20、(qi-2j-2.ishei=1)&&(qi-1j-1.ishei=1)&&(qi+1j+1.ishei=1)&&(qi+2j+2.ishei=1) /主對角線pDC->MoveTo(qi-2j-2.x,qi-2j-2.y);pDC->LineTo(qi+2j+2.x,qi+2j+2.y);mciSendString("close start",NULL,0,NULL);AfxMessageBox("游戲結束!n黑方贏!");if(qi+2j-2.ishei=1)&&(qi+1j
21、-1.ishei=1)&&(qi-1j+1.ishei=1)&&(qi-2j+2.ishei=1) /副對角線pDC->MoveTo(qi+2j-2.x,qi+2j-2.y);pDC->LineTo(qi-2j+2.x,qi-2j+2.y);mciSendString("close start",NULL,0,NULL);AfxMessageBox("游戲結束!n黑方贏!");pDC->SelectObject(oldpen);if(qij.isbai=1) / 判斷白棋是否贏CPen pen(PS_SO
22、LID,10,RGB(255,255,255);CPen *oldpen=pDC->SelectObject(&pen);if(qij-2.isbai=1)&&(qij-1.isbai=1)&&(qij+1.isbai=1)&&(qij+2.isbai=1)pDC->MoveTo(qij-2.x,qij-2.y);pDC->LineTo(qij+2.x,qij+2.y);mciSendString("close start",NULL,0,NULL);AfxMessageBox("游戲結束!
23、n白方贏!");if(qi-2j.isbai=1)&&(qi-1j.isbai=1)&&(qi+1j.isbai=1)&&(qi+2j.isbai=1) /列pDC->MoveTo(qi-2j.x,qi-2j.y);pDC->LineTo(qi+2j.x,qi+2j.y);mciSendString("close start",NULL,0,NULL);AfxMessageBox("游戲結束!n白方贏!");if(qi-2j-2.isbai=1)&&(qi-1j-1.i
24、sbai=1)&&(qi+1j+1.isbai=1)&&(qi+2j+2.isbai=1) /主對角線pDC->MoveTo(qi-2j-2.x,qi-2j-2.y);pDC->LineTo(qi+2j+2.x,qi+2j+2.y);mciSendString("close start",NULL,0,NULL);AfxMessageBox("游戲結束!n白方贏!");if(qi+2j-2.isbai=1)&&(qi+1j-1.isbai=1)&&(qi-1j+1.isbai=1)&&(qi-2j+2.isbai=1) /副對角線pDC->MoveTo(qi+2j-2.x,qi+2j-2.y);pDC->LineTo(qi-2j+2.x,qi-2j+2.y);mciSendString("close start",NULL,0,NULL);AfxMessageBox("游戲結束!n白方贏!");pDC->SelectObject(oldpen);判斷輸贏的主要代碼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB37-T 4640-2023 重金屬污染底泥原位修復指南
- 國家助學金申請書理由
- 個體戶免稅申請書范文
- 疫情下企業(yè)心理健康策略及其對工作績效的影響
- 申請書如何寫劇本
- 小學隊委申請書
- 怎樣寫失業(yè)證明申請書
- 2024-2025學年新教材高中歷史課時分層作業(yè)10影響世界的工業(yè)革命新人教版必修中外歷史綱要下
- 2024年秋八年級語文上冊第五單元19蘇州園林教學設計新人教版
- 2024-2025學年高中化學第三章烴的含氧衍生物第三節(jié)第二課時酯練習含解析新人教版選修5
- 2025長江航道工程局招聘101人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年國新國際投資有限公司招聘筆試參考題庫含答案解析
- 2025年八省聯考四川高考生物試卷真題答案詳解(精校打印)
- 《供電營業(yè)規(guī)則》
- 企業(yè)員工退休管理規(guī)章制度(3篇)
- 執(zhí)行總經理崗位職責
- 2025年中鐵十二局集團招聘筆試參考題庫含答案解析
- NS3000計算機監(jiān)控系統(tǒng)使用手冊
- 小學生情緒調適課件
- 2025蛇年中小學春節(jié)寒假安全教育課件模板
- 《黑神話:悟空》跨文化傳播策略與路徑研究
評論
0/150
提交評論