版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目: 五子棋 专 业: 计算机科学与技术 姓 名: 学 号: 指导教师: 李 晓 虹 2016 年 1 月 6 日1、系统需求分析 “五子棋”是一种历史悠久,十分有趣,简单实用的游戏。在中国,五子棋正越来越收人们的重视和欢迎,随着网络的日益普及,越来越多的人选择网络作为休闲娱乐的场所。因此,开发基于计算机的五子棋对弈符合人们的需求和休闲方式。 本程序设计为人与人之间的对弈,一方执黑棋,一方执白棋,每方都试图在游戏结束前让自己的五子相连,首先实现五子相连的一方获胜。2、总体设计2.1 开发环境开发环境:visual c+ 6.0开发
2、语言:MFC+C/C+操作系统:windows7/XP2.2 系统流程分析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); /循环播放音乐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. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 留学规划 课程设计
- 清华大学品牌课程设计
- 2024-2030年中国甲基脱氢皮质醇行业发展格局及供需趋势预测报告
- 2024-2030年中国树脂眼镜行业未来发展趋势及投资风险分析研究报告
- 2024-2030年中国散热器行业销售状况与未来需求预测报告
- 2024-2030年中国卧式屈腿训练器行业竞争状况及盈利前景预测报告
- 2024-2030年中国三铲深松机行业发展动态与投资趋势预测报告
- 什么桥的课程设计好做
- 环境监测信息管理制度
- 医院员工外出开会进修管理制度
- 小学四年级数学三位数除以两位数过关考核口算题带答案
- 糖尿病健康知识宣教
- 2024年湖南湘潭市公安局招聘留置看护巡逻警务辅助人员28人历年高频难、易错点500题模拟试题附带答案详解
- 期中考试试题(1-4单元)(试题)-2024-2025学年二年级上册数学青岛版
- 2024-2030年中国电表行业发展分析及投资前景预测研究报告
- (新版)糖尿病知识竞赛考试题库300题(含答案)
- 《创意改善生活》课件 2024-2025学年湘美版(2024)初中美术七年级上册
- 2024-2025学年 浙教版七年级数学上册期中(第1-4章)培优试卷
- CHT 1027-2012 数字正射影像图质量检验技术规程(正式版)
- 国际经济与贸易专业生涯人物访谈报告
- 《扣件式钢管脚手架安全技术规范》JGJ130-2023
评论
0/150
提交评论