MFC五子棋(面向对象程序设计)

合集下载

MFC课程设计五子棋

MFC课程设计五子棋

Windows程序设计课程考核报告班级:学号:姓名:得分:2016年6月25 日1.设计目的及要求 (3)1.1设计目的及内容 (3)1.2设计要求 (3)1.3软件、硬件环境 (4)2.课程设计步骤 (4)3. 课程设计内容 (10)3.1 概要设计 (10)3.1.1 程序总体框架描述 (11)3.1.2程序常用类声明 (11)3.2主要技术 (11)3.3系统设计结果(界面截图、操作流程) (12)4.设计总结 (13)4.1遇到的问题及如何解决 (13)4.2体会 (13)5.源代码 (14)1.设计目的及要求1.1设计目的及内容描述1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.基本掌握面向对象程序设计的基本思路和方法;3.掌握用VC++开发应用程序的的一般步骤和方法;4.能够利用所学的基本知识, 设计一个简单的五子棋游戏,具有以下功能:①数据结构的设计;五子棋棋盘的绘制。

②两人下棋时,两人下棋算法的设计。

③两人下棋时,判断任一方获胜的算法的设计。

1.2设计要求用VS 2010进行编码,实现应用程序的功能。

注重编码质量,代码要有适当的注释;提交设计报告一份(课程设计任务书、目录、主要的数据结构、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献)。

游戏规则:首先可以在更多选项里面选择进行人人对战与人机对战,并可以在人机对战的功能框里选择难易程度。

当棋子连成有五个时游戏结束。

程序功能模块棋局的绘制、保存、和AI三大块1.3软件、硬件环境软件:Windows 10操作系统,Microsoft Visual studio 2010硬件:Inter(R) Core(TM) i5-4200H CPU @ 3.40GHz 2.课程设计步骤新建单文档程序Gobang_FiveChess接着就是定义变量了,但是,由于这个游戏要添加的变量和函数太多了,我们要建一个新类。

是否应该先添加应该类呢?最好是这样。

MFC课程设计报告-一个简单的五子棋游戏

MFC课程设计报告-一个简单的五子棋游戏

设计一个简单的五子棋游戏一、设计目标与容1.了解Windows编程的根底知识,掌握MFC应用程序的根本知识;2.根本掌握面向对象程序设计的根本思路和方法;3.掌握用VC++开发应用程序的的一般步骤和方法;4.能够利用所学的根本知识, 设计一个简单的五子棋游戏,具有以下功能:①数据构造的设计;五子棋棋盘的绘制。

②两人下棋时,两人下棋算法的设计。

③两人下棋时,判断任一方获胜的算法的设计。

二、设计要求1.用VC++进展编码,实现应用程序的功能。

注重编码质量,代码要有适当的注释;提交设计报告一份〔课程设计任务书、目录、主要的数据构造、设计的根本思路、设计的步骤及主要代码、心得体会、参考文献〕。

总体设计运行时效果如下:图3-1这个程序只能进展两个人之间的对弈,不能进展人机对弈,由于时间和个人能力的原因所以人机对弈的算法就没有写出。

同时程序中也存在着很多漏洞,但根本的功能都已经实现,还有待继续改进。

详细设计新建工程game_wzq选择单文档应用程序,在Step 4 of 6中先中Windows Sockets 复选框。

如以下图:图3-2资源编辑黑白位图Bitmap以表示棋盘上面的棋子:IDB_BLACKDB_WHITE黑白鼠标Cursor以替换当前鼠标:IDC_CURSOR1 黑棋子IDC_CURSOR2 白棋子黑白图标Icon以显示在状态栏供以提示IDI_BLACKIDI_WHITE菜单以供操作:开场:ID_START保存:ID_SAVE翻开:ID_OPEN如以下图所示:图3-3变量函数首先,为了实现状态栏的应用,我们必须更改它的变量:在MainFrm.h文件里面,把CStatusBar m_wndStatusBar 为public接着是在game_wzqView.h文件里面添加变量函数://两个鼠标HCURSOR hcursorwhite;HCURSOR hcursorblack;//棋盘数组int wzq[19][19];// colorwhite TRUE时白棋下,否那么黑棋下bool colorwhite;//棋子位图CBitmap m_bmblack;CBitmap m_bmwhite;//保存文件void Save();//检查是否完毕void over(CPoint point);//鼠标操作afx_msg void OnLButtonUp(UINT nFlags, CPoint point);//鼠标图形更换afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);//菜单的开场afx_msg void OnStart();//菜单的保存afx_msg void OnSave();//菜单的翻开afx_msg void OnOpen();具体实现1、由于我们的游戏的棋盘大小是一定的,不能改变大小的,是应该符合要求的。

c 课程设计报告五子棋

c  课程设计报告五子棋

c 课程设计报告五子棋C++面向对象课程设计报告院(系):专业: 学生姓名: ,,班级:,,,学号:题目: 五子连珠棋 ,,,,,,,,,起迄日期: 2010-12-20,,,, ,,,,, 设计地点:指导教师:完成日期: 2010 年 12 月31 日课程设计报告内容一、需求分析1( 选做此课题目的五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。

而且我对五子棋有着独特的爱好,希望自己也可以编写出一款可以实现人机对战的五子棋游戏。

把自己的思想付给电脑,让自己有些成就感,给自己继续努力的动力。

借此次课程设计的机会,把想法变成现实。

而且五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。

它是中西文化的交流点,是古今哲理的结晶。

所以此次c++课程设计选择五子棋这个题目。

2( 程序所实现的功能通过给电脑赋予人工智能,利用电脑运算速度快的特点,结合五子棋的游戏规则,给电脑设定固定的扫描方式,设定权值,使电脑能够选择最合适的落子点,然后调用加载已做好的棋盘棋子图像,最终实现简单的人机对弈。

3(该游戏为普通玩家使用,只要连成五子即获胜,没有禁手、RIF(国际连珠连盟)正式规则、“Yamaguchi”、”Tarannikov”、“Taraguchi”等规则。

二、设计内容1( 根据所选题目,给出模块图主界面开始游戏重新开始游戏游戏结束初始化棋盘初始化棋盘结束界面落子判断输赢2( 画出主程序及其主要模块的流程图游戏开始初始化棋盘加载棋盘图片1点鼠标左键落子加载棋子图片到棋盘扫描棋盘,根据预设权值,选择最佳地点落子否五子连珠,加载棋子图片到棋盘是否五子连转1 珠,是用红色显示游戏结束3( 编写程序代码加载位图(棋盘和棋子):m_board->m_hObject = (HBITMAP)::LoadImage (NULL,"checkerboard.bmp",IMAGE_BITMAP,320,320,LR_LOADFROMFILE); m_white->m_hObject = (HBITMAP)::LoadImage(NULL,"bai.bmp",IMAGE_BITMAP,20,20,LR_LOADFROMFILE);m_black->m_hObject = (HBITMAP)::LoadImage(NULL,"hei.bmp",IMAGE_BITMAP,20,20,LR_LOADFROMFILE);m_temp->m_hObject = (HBITMAP)::LoadImage(NULL,"mask1.bmp",IMAGE_BITMAP,20,20,LR_LOADFROMFILE);m_red->m_hObject=(HBITMAP)::LoadImage(NULL,"dred.bmp",IMAGE_BITMAP,20,20,LR_LOADFROMFILE); 响应左键:LButtonDown(UINT nFlags, CPoint point) { int m ,n;CDC thmem1 ;CClientDC dc(this);thmem1.CreateCompatibleDC(&dc);int curx = point.y;int cury = point.x;m =int((curx-5)/20);n = int((cury-15)/20);}没有五子连珠时简单显示棋子:显示白色棋子: if(board[i][j]==0){ thmem2.SelectObject (m_temp);dc.BitBlt(j*20+15,i*20+5,20,20,&thmem2,0,0,MERGEPAINT); thmem2.SelectObject (m_black);dc.BitBlt (j*20+15,i*20+5,20,20,&thmem2,0,0,SRCAND);m_byColour = white ;}显示黑色棋子: if(board[i][j] == 1){ thmem2.SelectObject (m_temp);dc.BitBlt(j*20+15,i*20+5,20,20,&thmem2,0,0,MERGEPAINT); thmem2.SelectObject (m_white);dc.BitBlt (j*20+15,i*20+5,20,20,&thmem2,0,0,SRCAND);m_byColour = black;}五子连珠时红色显示棋子:人赢时: if(ptable[ii][jj][j] == true){ thmem2.SelectObject(m_temp);dc.BitBlt(jj*20+15,ii*20+5,20,20,&thmem2,0,0,MERGEPAINT); thmem2.SelectObject(m_red);dc.BitBlt(jj*20+15,ii*20+5,20,20,&thmem2,0,0,SRCAND); } // MessageBox("你赢了");计算机赢时: if(ctable[ii][jj][j] == true){ thmem2.SelectObject (m_temp);dc.BitBlt(jj*20+15,ii*20+5,20,20,&thmem2,0,0,MERGEPAINT); thmem2.SelectObject (m_red);dc.BitBlt(jj*20+15,ii*20+5,20,20,&thmem2,0,0,SRCAND);}电脑扫描棋盘: for(i = 0 ; i<15; i++)for(j= 0 ;j <15 ;j++)board[i][j] = 2; // 初始化棋盘数组for(i = 0 ; i <15 ; i++) //对列进行隔行扫描,for(j=0 ; j <11 ; j++){for( k = 0 ; k <5 ;k++){ptable[j+k][i][count] = true;ctable[j+k][i][count] = true;} count ++;}for(i = 0 ; i <15 ; i++) //对行进行隔行扫描for(j=0 ; j <11 ; j++){for( k = 0 ; k <5 ;k++){ptable[i][j+k][count] = true;ctable[i][j+k][count] = true;}count ++;}for(i = 0 ; i <11; i++) //对交叉的情况,东南,西北走向,进行扫描for(j=0 ; j <11 ; j++){for( k = 0 ; k <5 ;k++){ptable[j+k][i+k][count] = true;ctable[j+k][i+k][count] = true;}count ++;}for(i = 0 ; i <11 ; i++) //对交叉的情况,东北,西南走向,进行扫描for(j=14 ; j >= 4 ; j--){for( k = 0 ; k <5 ;k++){ptable[j-k][i+k][count] = true;ctable[j-k][i+k][count] = true;}count ++;}Start:void CMyDlg::Onstart() {MessageBox("请落子");m_byColour = black;}Restart:再次初始化棋盘,函数类似于扫描{for(i = 0 ; i<15; i++)for(j= 0 ;j <15 ;j++)board[i][j] = 2;for(i = 0 ; i <15 ; i++)for(j=0 ; j <11 ; j++){for( k = 0 ; k <5 ;k++){ptable[j+k][i][count] = true; ctable[j+k][i][count] = true; }count ++;}for(i = 0 ; i <15 ; i++)for(j=0 ; j <11 ; j++){for( k = 0 ; k <5 ;k++){ptable[i][j+k][count] = true;ctable[i][j+k][count] = true;}count ++;}for(i = 0 ; i <11; i++)for(j=0 ; j <11 ; j++){for( k = 0 ; k <5 ;k++){ptable[j+k][i+k][count] = true;ctable[j+k][i+k][count] = true;}count ++;}for(i = 0 ; i <11 ; i++)for(j=14 ; j >= 4 ; j--){ for( k = 0 ; k <5 ;k++){ ptable[j-k][i+k][count] = true;ctable[j-k][i+k][count] = true; }count ++; }三、调试分析1( 实际完成的情况说明能够判断胜负,没下一子,都要进行胜负判断,赋予电脑人工智能,玩家通过点击鼠标左键落子,电脑会根据预设的方式扫描,计算每一点的权值,从而找到最佳落子点,实现人机对弈。

软件工程课程设计面向对象(五子棋)

软件工程课程设计面向对象(五子棋)

海南大学信息科学技术学院课程设计报告设计课程:软件工程设计课题:五子棋游戏开发*名:***专业:计算机科学与技术班级:08 级(1)班同组人员:向俊龙、罗秋兰、陈小燕、赵梦、辜武斌、全克杰、徐纯金指导教师:**目录问题概念 (3)序言 (4)选题背景 (4)开发目的娱乐 (5)销售 (6)可行性研究 (3)可行性研究前提 (5)可行性研究任务技术可行性 (5)经济可行性操作可行性社会因素系统开发打算 (4)系统要求 (4)实施打算支持条件用户需求 (5)模型分析 (6)模型设计 (7)代码 (7)界面设计 (8)测试 (9)总结 (9)基于JAVA五子棋一、问题概念序言随着运算机技术的飞速进展和物联网时期的开启,愈来愈多的人被吸引到了这股运算机风来。

在今天,运算机已经与人们的生活息息相关,尤其是由信息技术推动和基于因特网而兴起的电子游戏,已经成为大人小孩日常休闲的一种必不可少的方式,已经成为人们普遍同意的一种崭新的休闲娱乐方式。

面对现今猛烈的商业竞争,商业主纷至沓来,纷纷进入游戏那个缤纷的世界,伸展拳脚。

游戏公司也纷纷开启,在那个游戏大潮中大展身手。

游戏作为一种娱乐方式,古已有之,随着社会经济生活的日趋丰硕多彩,游戏自身也在发生各类转变,从手动游戏,到桌面游戏,以至此刻的电脑游戏,显得日趋兴隆,转变出迷人的色彩。

相信在不远的以后,随着电子技术的飞速进展,电脑游戏会迅猛进展,以一种更新更有趣的方式呈此刻咱们眼前。

选题背景随着运算机技术的飞速进展和物联网时期的开启,必然带动了游戏界的迅猛进展,电脑游戏在中国的显现和进展最先要追溯到上世纪80年代初,80年代初期,中国的一些儿童娱乐场和青年活动中心所第一显现了街机这种那时只是供青青年娱乐的大型电子玩具。

在那时,这种大型街机还很简陋,游戏画面相对而言是很一样,游戏种类也很少,不外乎也确实是任天堂公司的《超级玛利》、《大金刚》,还有《小蜜蜂》之类。

大约到了1986年左右,一种黑白液晶掌上游戏机在学校普及起来。

MFC程序五子棋实验报告

MFC程序五子棋实验报告

MFC程序五子棋实验报告1.实验目的:通过学习MFC应用程序开发,编译一个简单的五子棋人人对战游戏。

2.实验进程:(1)实验分工该实验是由小组人员一路合作完成,算法设计有**负责,编码和函数实现由***负责,调试运行和结果测试别离有**和**负责,实验报告的书写由**负责。

(2)算法设计五子棋的游戏规那么对咱们大伙儿来讲都很很清楚的。

只要某一方的棋子在一条直线上,棋子数先达到五或以上,那么该方为胜者。

依照游戏规那么,算法设计分以下几个方面:A.棋盘设计:棋盘设计能够用一个对话框实现,B.棋子设计C.开始函数D.终止函数E.下棋子函数F.选择哪一种棋子先下函数G.判定输赢函数五子棋成功的条件是一方的五个棋子连成一条直线,包括纵,横,左斜,右斜四种,能够用二维数组来保留每一个位置棋子的值,别离用0,1,2来表示无棋,黑棋,白棋,每当下一个棋子后,用值保留其颜色,当白棋或黑棋有一者符合上述四种情形之一时,就能够够够判定出哪方成功。

H.从头开始棋局函数(3)编码和函数实现void CTestDlg::OnButton11(){if(ToStart==1&&Q[0][0]==0){eleteObject();oadBitmap(IDB_BITMAP2);(HBITMAP(m_cBmp[0][0]));Qi++;eleteObject();m_cBmp[0][0].LoadBitmap(IDB_BITMAP3);oadBitmap(IDB_BITMAP1);Q[i][j]=0;}eleteObject();OnButtonStart();MessageBox("点击“开始”,清屏并从头开始游戏");ToStart=0;Qi=0;m_flag_Color=true;}验结果分析:4.实验总结:。

如何用MFC编五子棋游戏

如何用MFC编五子棋游戏

怎样做一个五子棋游戏?五子棋游戏算法比较简单,实现起来比较容易,适合初学者练习。

我这个五子棋游戏是自己花了2天的时间完成的,当时刚学mfc,想练一下手就做了这个游戏。

棋盘和棋子可以用GDI来实现,棋盘用GDI划线,基本上就是LineTo(x,y),MoveTo(x,y),一个棋盘就出来了。

具体代码如下在OnPaint()函数的else内加入如下代码CPaintDC dc(this);dc.SelectStockObject(BLACK_PEN);int i,j;for(i=60;i!=420;i=i+40){dc.MoveTo(i,60);dc.LineTo(i,380);}for(j=60;j!=420;j=j+40){dc.MoveTo(60,j);dc.LineTo(380,j);}一个9×9的棋盘就画好了。

至于如何画棋子,我思考了很长时间,贴图太麻烦,就用GDI来画圆,然后填充上不同的颜色,黑子、白子也就实现了。

这里的棋子不应该是一个独立的量,它有自己的区域,应该能判断鼠标是不是点击到了这个区域,当点击这个区域的时候是否应该显示,应该显示什么颜色的旗子……把这么多东西集合在一起,应该定义一个类,于是CQuyu这个类就出现了。

CQuyu有四个变量如下:int flag;CRect rect;int y;int x;x,y表示这个区域的中心,rect为以x,y为中心的边长为30的矩形,flag 用来表示该对象的状态(0:空白 1:黑子 2:白字)。

然后又定义了5个方法bool isWhite();//如果为白子,返回trueCRect getRect();//获得该对象对应的CRectbool isBlack();//如果为黑子,返回truebool isEmpty();//如果为空,返回truebool isOn(CPoint point);//如果该点出在该区域返回true,用来判断鼠标单击对应的区域在view类中定义了一个vector容器,(需要包含#include <vector>)vector<CQuyu> qy;在OnInitDialog()内对qy进行初始化int i,j;CQuyu q;for(i=60;i!=420;i=i+40){for(j=60;j!=420;j=j+40){q.x=i;q.y=j;qy.push_back(q);}}当鼠标单击的时候,判断单击的是哪一个区域,如果该区域为空则修改区域状态void CWuziqidlgDlg::OnLButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call default int i;for(i=0;i!=qy.size();i++)if(qy[i].isOn(point)&&!over&&qy[i].isEmpty()){qy[i].flag=1;ison=1;break;}Invalidate();//引发重绘}在OnLButtonUp()中实现ai,电脑走棋void CWuziqidlgDlg::OnLButtonUp(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call default//flag 1:black 2:white//color 1:white 2:blackint i,temp1,temp2,max1,max2;max1=0;max2=0;temp1=0;temp2=0;for(i=0;i!=qy.size();i++){if(qy[i].isEmpty()){qy[i].flag=2;if(getScore(1)>max1){temp1=getScore(1);max1=temp1;temp1=i;}qy[i].flag=1;if(getScore(2)>max2){temp2=getScore(2);max2=temp2;temp2=i;}qy[i].flag=0;}}if(ison==1&&!over){if(max1>=max2)qy[temp1].flag=2;elseqy[temp2].flag=2;}ison=0;if(!isWin())Invalidate();CDialog::OnLButtonUp(nFlags, point);}OnPaint()函数中实现绘制,每次先把棋盘画好,然后遍历各区域,如果不为空就绘制相应的棋子。

MFC-C++五子棋课程设计报告

MFC-C++五子棋课程设计报告

课程设计成绩考勤成绩( %) 指导老师评语报告及程序成绩( %)总评成绩指导老师签名:《windows程序设计》课程设计报告学院(系):计算机科学与技术系班级:计专2班学生姓名:梁剑学号**********指导教师:时间:从2010 年1 月18 日到2010 年1 月22 日摘要1.能够利用所学的基本知识, 设计一个简单的五子棋序,具有以下功能:①数据结构的设计;五子棋棋盘的绘制。

②人机下棋时,计算机下棋算法的设计。

③人机下棋时,判断任一方获胜的算法的设计。

关键字:MFC编程,Windows程序目录项目一: 五子棋1 设计目的与要求 (1)1.1 设计目的 (1)1.2 设计内容 (1)1.3 设计要求 (1)2 设计环境或器材、原理与说明 (3)2.1 设计环境与器材 (3)2.2 原理与说明 (3)3 设计过程及程序代码 (6)3.1 服务器端设计 (6)3.1.1 界面设计 (6)3.1.2 人下棋设计 (8)3.1.3 电脑下棋设计 (8)3.1.4 搜索最优下棋点 (9)4 设计结果与分析 (21)4.1 设计结果 (21)4.2 设计分析 (22)5 设计体会与建议 (23)参考文献 (24)五子棋1 设计目的与要求1.1 设计目的1、进一步掌握利用Visual C++进行程序设计的能力;2、进一步理解和运用面向对象程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、理解Windows程序的运行过程;1.2设计内容能够利用所学的基本知识, 设计一个简单的学生信息管理应用程序,具有以下功能:①数据结构的设计;五子棋棋盘的绘制。

②人机下棋时,计算机下棋算法的设计。

③人机下棋时,判断任一方获胜的算法的设计。

1.3 设计要求整个程序使用winsocket 函数做网络数据收发,基于UDP协议。

可以直接使用Windows API编程(SDK编程),也可以使用MFC编程。

五子棋游戏详细设计

五子棋游戏详细设计

五子棋游戏‎详细设计1、窗体设计利用MFC‎ AppWi‎n zard‎生成五子棋‎游戏应用程‎序框架具体‎步骤如下:(1)执行VC程‎序,选择Fil‎e|N ew命令‎,弹出New‎对话框.单击Pro‎jects‎标签,转到Pro‎jects‎选项卡,选择MFC‎ AppWi‎z ard(exe)选项,然后在Pr‎oject‎name文‎本框中输入‎F ivec‎h ess_‎44 。

Lacat‎i on文本‎框是指项目‎的本地路径‎。

(2)单击按钮,弹出MFC‎ AppWi‎n zard‎_Step‎1对话框。

选中单选按‎钮,如图所示。

(3)单击完成按‎钮,则建立一个‎单文档应用‎框架。

2、游戏项目开‎发2.1棋盘设计‎1.在已创建的‎工程Fiv‎eches‎s_44中‎添加画棋盘‎的函数。

首先在“Fivec‎h ess_‎44.h”头文件中定‎义一个用于‎显示棋盘的‎自定义公有‎函数:void Check‎e rboa‎r d(CDC*pDC);然后在“Fivec‎h ess_‎44Vie‎w.cpp”源文件中实‎现该函数。

代码如下:void CFive‎c hess‎_44Vi‎e w::Check‎e rboa‎r d(CDC*pDC){for(int i=0;i<20;i++) //连续画20‎条竖线{pDC->MoveT‎o(i*50,0); //画笔移动到‎(i*50,0)点pDC->LineT‎o(i*50,1000); // 画笔从(i*50,0)点到(i*50,1000)点}for(i=0;i<20;i++) //连续画20‎条横线{pDC->MoveT‎o(0,i*50);pDC->LineT‎o(1000,i*50);}}2.在应用程序‎框架的On‎D raw()函数中调用‎该画棋盘函‎数,将pDC对‎象作为实参‎传递给Ch‎ecker‎b oard‎()函数,代码如下:void CFive‎c hess‎_44Vi‎e w::OnDra‎w(CDC* pDC){CFive‎c hess‎_44Do‎c* pDoc = GetDo‎c umen‎t();ASSER‎T_VAL‎I D(pDoc);// TODO: add draw code for nativ‎e data hereCheck‎e rboa‎r d(pDC); //调用自定义‎的画键盘函‎数}3.编译运行得‎到如下效果‎:一个空棋盘‎2.2放置棋子‎功能的开发‎按照规划,棋子使用鼠‎标的左键和‎右键(分别用这两‎键来表示下‎棋的双方)来进行单机‎下棋,即是当用户‎单击左键时‎,下黑色棋子‎,,用户单击右‎键时,下白色棋子‎。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
一、绪论 (1)
1.1课题背景 (1)
1.2需求分析 (1)
2.1游戏流程 (1)
2.2系统功能结构图 (2)
三、详细设计 (3)
3.1.1游戏界面的制作 (3)
3.1.2游戏开始 (4)
3.1.3游戏结束 (5)
3.1.4排行榜 (6)
3.2核心算法 (6)
四、用户使用说明 (8)
4.1游戏开始 (8)
4.2游戏中 (8)
4.3结束 (9)
五、附录 (10)
参考资料 (10)
一、绪论
1.1课题背景
本课程设计是C++面向对象程序设计的重要的实践环节之一,是在学生学习完《C++面向对象程序设计》课程后进行的一次全面的综合练习,此次课程设计的题目是自拟的。

在和我的队友反复的讨论下,我们一致同意写以C++和MFC 为主要知识点的MFC人—人对战五子棋。

1.2需求分析
(1)设计用户图形界面,用户通过鼠标就可以操作游戏。

(2)以二维数组的形式储存棋盘的下子信息,包括坐标和棋子类型。

(3)设置开始、结束和排行榜用于操作和查看下棋的信息。

(4)游戏有自动保存玩家输赢信息的功能。

(5)为了使算法简单,游戏中的棋盘、棋子等都以位图的形式操作。

二、概要设计
2.1游戏流程
三、详细设计
3.1.1游戏界面的制作
利用MFC AppWinzard生成五子棋游戏应用程序框架具体步骤如下:
(1)执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project name文本框中输入Fivechess_44 。

Lacation文本框是指项目的本地路径。

(2)单击按钮,弹出MFC AppWinzard_Step1对话框。

选中单选按钮,如图所示。

(3)单击完成按钮,则建立一个单文档应用框架。

(4)将单文档的菜单栏去掉,并加入背景图片。

背景图片中包含了棋盘。

部分代码如下:
3.1.2游戏开始
(1)界面中的设置,以位图的形式放到背景中。

当鼠标在次范围内左击是就会弹出开始对话框。

(2)开始对话框的设置。

在对话框中可以设置
玩家姓名。

(3)部分代码如下:
3.1.3游戏结束
(1)界面中的设置,以位图的形式放在背景中。

当鼠标在次范围内左击是就会弹出结束对话框。

(2)结束对话框的设置。

(3)部分代码:
3.1.4排行榜
(1)在界面中的设置,以位图的形式放在背景中。

当鼠标在次范围内左击是就会弹出排行榜对话框。

(2)排行榜对话框的设置。

(3)部分代码:
3.2核心算法
(1) 游戏开始。

GameStart即对游戏进行初始化操作。

主要包括去掉棋盘上的棋子、确定走棋的顺序,以及改变Game_State到开始游戏。

(2) 棋盘响应。

DoMsg(),它用来响应用户传入的落子信息,并对位置进行动作。

(3) 更新游戏状态。

Updata()即更新游戏状态,主要用于判断下子后的状态,并作出一些响应。

(4) 游戏核心的最后收工。

添加Manager构造函数,初始化程序。

四、用户使用说明
4.1游戏开始
选择开始——输入玩家——确定开始
4.2游戏中
用鼠标控制输入棋子
4.3结束
右上角会提示玩家赢。

五、附录
参考资料
1.谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,2006.
2. Visual C++MFC棋牌游戏编程实例人民邮电出版社, 2008.
10。

相关文档
最新文档