ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:82.80KB ,
资源ID:7748043      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7748043.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课 程 设 计 说 明 书五子棋C++.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课 程 设 计 说 明 书五子棋C++.docx

1、课 程 设 计 说 明 书五子棋C+课 程 设 计 说 明 书五子棋游戏The Game of Gobang学院名称: 专业班级: 学生姓名: 学号: 指导教师姓名: 指导教师职称: 2011年 7 月五子棋游戏摘要: 此课程设计的目的是为了达到熟练掌握C+语言的基本知识和C+调试技能;基本掌握面向对象程序设计的基本思路和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题;培养综合利用C语言进行程序设计的能力,主要是培养利用系统提供的标准图形函数进行创新设计。该游戏软件在Windows系统为玩家提供传统五子棋游戏的基本功能,在这简单的五子棋中,玩家通过鼠标进行两个人的游戏。游戏

2、的主战场为15行15列的棋盘,初始状态棋盘上无落子,进入游戏后,按照棋盘下的提示开局,然后轮流落子,一旦有一方的棋子在某一方向上构成连续的五个棋子,则该方胜利,游戏结束,如果有输赢,则输出谁胜,否则,输出平局的信息框。游戏还有悔棋和重新开始的的功能。关键词: 五子棋; 视窗操作系统; 悔棋; 双人游戏。The Game of GobangAbstract: This course is designed in order to master the basic knowledge of the c + + language testing skills; and c + + Basic gra

3、sp of object oriented programming basic train of thought and method; Can use of my knowledge of the basic knowledge and skills, solvesimple object-oriented program design problem; Using c + + language training comprehend sive program design ability, is mainly use the system to provide the training o

4、f standard graphics functions of innovation design. This game software on Windows system for players with traditional renju game, the basic function of in this simple renju players through the mouse, two personal game. The main battlefield games for line 15 to 15 listed in the board. The game is ove

5、r, if a loser, the output who wins, otherwise, the output of the draw information box.Keywords: Gobang; Windows System; Takeback; the game of Two people playing目 录课程设计任务书 4一、课程设计题目:五子棋游戏 4二、目的与要求: 41、目的: 42、基本要求: 43、创新要求: 44、写出设计说明书 4三、设计方法和基本原理: 4四、设计中涉及到的重要内容: 4五、程序设计和调试: 5六、答辩与评分标准: 5引言 6第一章 需求分析

6、 61.1系统概述 61.1.1概述 61.2系统运行环境 61.2.1运行环境 61.3功能需求描述 71.3.1功能需求 7第二章 总体设计 72.1开发与设计的总体思想 72.1.1总体设计思路 72.1.2屏幕的组成 82.1.3形状的组成 82.1.4形状的统一 8第三章 概要设计 93.1系统流程图 93.2 软件功能模块 103.3 系统功能模块 10第四章 详细设计 114.1.界面的设计 114.1.1总体界面设计 114.1.2 界面棋子的设计 114.2显示界面的准备 134.2.1在窗体类中添加存放黑白棋两维数组和背景棋盘、黑棋、白棋位图对象 134.2.2在窗体构造函

7、数中初始化wb,装入棋盘、黑棋、白棋位图 134.3显示棋盘和棋子代码 134.4轮流下子代码 144.5判断输赢 154.5.1判断是否白棋胜代码 154.5.2判断是否黑棋胜代码 164.5.3判断是否平局代码 174.6悔棋 184.7重新开始 184.8回放功能 19第五章 测试分析 20结论和心得体会 20致谢 21参考文献 22课程设计任务书一、课程设计题目:五子棋游戏二、目的与要求:1、目的:(1)要求学生达到熟练掌握C+语言的基本知识和C+调试技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。(4)培养学生

8、综合利用C语言进行程序设计的能力,主要是培养学生利用系统提供的标准图形函数进行创新设计。2、基本要求:(1)在开始编写程序以前,要完成对系统的分析,画出程序的流程框图。(2)要求用C+类的思想来完成程序的设计。(3)要求的程序中至少要定义两个类(例如:坐标position类,棋子chess类等),类中要有多个属性和方法。(4)完成的程序界面要美观,能够完成五子棋的基本游戏功能(两人对战)。3、创新要求:在基本要求达到后,进行创新设计,完善与增加游戏的功能,例如悔棋功能。4、写出设计说明书按照设计过程写出设计说明书。三、设计方法和基本原理:1、创建棋盘大小(可任意),并且要保存棋盘上各个点的位置

9、;2、创建棋子类及其属性和方法;3、从盘键分别获取两个用户的输入,根据用户的身份及输入的位置,调用棋子类的相应方法,完成棋子的走动;4、输赢的判断;5、游戏结束。四、设计中涉及到的重要内容:1、对话框应用程序的编写方法及其相关函数;2、绘图工具的使用方法;五、程序设计和调试:六、答辩与评分标准:1、完成基本功能:40分;2、设计报告及使用说明书:30分;3、设置错误或者按照要求改变结果:15分;4、回答问题:15分。引言随着经济时代的发展,人们的精神压力越来越大,精神上得不到应有的放松,精神生活得不到极大的满足,随着计算机技术的飞速发展,计算机已逐渐成为人们办公不可或缺的工具,因此及时的开发一

10、些应用于计算机上的小型游戏软件,以供人们在办公的闲暇时间得到充分的休闲娱乐。而棋类因为其兼具动脑并且娱乐的双重功效,并且十分符合现代式生活,因此已经得到越来越多人的欢迎,为此我们开发一个简单的五子棋游戏,开发此五子棋游戏软件的目的,主要是供办公人员与同事一起休闲娱乐,增进友谊、减轻疲劳,以提高工作效率,创造更多的社会财富,造福人类。查阅有关程序设计的案例资料,进一步理解程序设计模块化的思想,并利用此思想,根据对程序设计课程的学习,编写一个简单的游戏软件系统。通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。在下面的各章中我们将以开发一个五子棋

11、游戏为例,谈谈其开发过程和所涉及到的问题及解决方法。第一章 需求分析1.1系统概述1.1.1概述:本程序是一款棋类益智游戏程序,名为五子棋游戏,是采用C语言编写的可在WINDOWS 系统下运行的娱乐游戏平台。该程序面向广大棋类游戏的爱好者,能够提供方便,实现基本智能控制的游戏环境。棋盘由若干网格构成,初始状态棋盘上无落子,玩家可以通过鼠标在棋盘的相应位置下子,一方为白色,另一方为黑色,先下的为黑子。游戏过程中,一旦有一方的棋子在某一方向上先构成连续的五个棋子,不论横、竖或斜,就会在屏幕上显示是谁赢了比赛。1.2系统运行环境1.2.1运行环境(1)硬件环境。本系统适用于那种Inter386以上计

12、算机,内存容量为128M,应配备键盘、鼠标、显示器等外部设备。(2)软件环境。本系统的设计采用Visual C+6.0编写。在Windows XP SP2环境下测试通过。(3) 只要计算机具有Visual C+6.0, 本游戏软件在Windows平台下都可以运行。1.3功能需求描述1.3.1功能需求五子棋是一种大众喜爱的游戏,其规则简单,变化多端,非常富有趣味性何消遣性,是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。近来随着计算机的快速发展,各

13、种棋类游戏被纷纷请进了电脑,使得那些喜爱下棋,又常常苦于没有工具的棋迷们能随时过足棋瘾。在这里我也设计了一个较简单的五子棋游戏,这个游戏,不仅可以满足游戏爱好者对游戏的要求,同时我们增加了美观因素,让游戏有一个比较美观的界面,满足我们游戏爱好者的视觉要求,同时有悔棋和重新清盘开始的功能,更加方便了玩家的操作和游戏的有趣性。第二章 总体设计2.1开发与设计的总体思想2.1.1总体设计思路棋盘设计为15*15格,初始状态棋盘的为空,玩家黑子先走,轮流落子,当一方连成五子或下满棋盘时,游戏结束(连成五子的一方获胜,下满棋盘为和棋)。当游戏一方胜利后显示胜利信息。从程序表面看,这是一个二维平面图,所以

14、数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,用坐标表示位置,数组元素的值代表棋格上的状态,共有三种情况,分别是0代表空格,1代表黑棋,2代表白棋。这样程序的主要工作是接收棋手鼠标按键操作,棋手用鼠标控制光标移动,按键表示落子。一旦接收到按键,说明棋手落子,先判断是否是有效位置,也就是说已经有棋子的位置不能重叠落子。落子成功后,马上判断该棋盘上是否有相同颜色的棋子连成五子,如果连成五子,则游戏结束,输出相应的信息。按确认后,自动调用清盘函数,此时清盘重新开始,输家先走。在游戏中,如果玩家悔棋,则按下悔棋按钮,调用悔棋函数,将刚下的棋去掉,重下一子。按下重新开始菜单,可清盘使游戏重新开

15、始。2.1.2屏幕的组成一个游戏一定要有一个界面供游戏者对游戏控制。这个界面中要包含让游戏者更加清楚游戏状态的信息,比如,白方要下子时,必须要先看一看所有黑子的排列情况,决定是防守还是进攻,这关系着玩家要如何放置自己的棋子,让整体有个更加的布局,有利于游戏的进行。此游戏的屏幕由15行15列的网格和菜单栏组成。2.1.3形状的组成每一种形状都是由五个棋子组成,比如或 由五个棋子排列而成。2.1.4形状的统一棋子的排列,如:等共有8种形状(黑白的形状归为不同的形状)。如图形状:黑棋的四种情况: 图2.1白棋的四种情况: 图2.2第三章 概要设计3.1系统流程图系统流程图是对系统的大致流程进行描述,

16、本游戏的系统流程图如下:重新开始 图3.1 系统流程图3.2 软件功能模块本游戏的软件功能模块如下: 图3.2 软件功能图3.3 系统功能模块系统功能模块是对系统的大致功能进行描述,本游戏的系统功能模块如下:图3.3 系统功能图第四章 详细设计根据上面所介绍的本系统的各个模块及其需要实现的功能,下面详细设计如下:4.1.界面的设计4.1.1总体界面的设计程序界面程序在启动运行时,系统会调用在资源视图中导入的围棋背景图片,使程序界面更加友好,在使用上给用户一种直观方便的感觉。4.1.2界面棋子的设计在资源视图中导入围棋的黑棋图片、白旗图片,使下子时调用此图片,使游戏更加直观有趣。同时在窗口视图中

17、添加显示透明色图片函数,是棋子图片更加逼真有趣。显示透明色图片函数如下所示:/显示透明色函数void PutBitmap(CDC *pDC,int x,int y,CBitmap *pBitmap,COLORREF color) COLORREF oldColor; CBitmap bmAndBack,bmAndObject,bmAndMem,bmSave; CDC memDC,backDC,objectDC,saveDC,pieceDC; BITMAP bm; pBitmap-GetBitmap(&bm); int nWidth=bm.bmWidth,nHeight=bm.bmHeight;

18、 memDC.CreateCompatibleDC(pDC); backDC.CreateCompatibleDC(pDC); objectDC.CreateCompatibleDC(pDC); saveDC.CreateCompatibleDC(pDC); pieceDC.CreateCompatibleDC(pDC); bmAndBack.CreateBitmap(nWidth,nHeight,1,1, NULL); bmAndObject.CreateBitmap(nWidth,nHeight,1,1,NULL); bmAndMem.CreateCompatibleBitmap(pDC,

19、nWidth,nHeight); bmSave.CreateCompatibleBitmap(pDC,nWidth,nHeight); backDC.SelectObject(&bmAndBack); objectDC.SelectObject(&bmAndObject); memDC.SelectObject(&bmAndMem); saveDC.SelectObject(&bmSave); pieceDC.SelectObject(pBitmap); saveDC.BitBlt(0,0,nWidth,nHeight,&pieceDC,0,0,SRCCOPY); oldColor=piece

20、DC.SetBkColor(color); objectDC.BitBlt(0,0,nWidth,nHeight,&pieceDC,0,0,SRCCOPY); pieceDC.SetBkColor(oldColor); backDC.BitBlt(0,0,nWidth,nHeight,&objectDC,0,0,NOTSRCCOPY); memDC.BitBlt(0,0,nWidth,nHeight,pDC,x,y,SRCCOPY); memDC.BitBlt(0,0,nWidth,nHeight,&objectDC,0,0,SRCAND); pieceDC.BitBlt(0,0,nWidth

21、,nHeight,&backDC,0,0,SRCAND); memDC.BitBlt(0,0,nWidth,nHeight,&pieceDC,0,0,SRCPAINT); pDC-BitBlt(x,y,nWidth,nHeight,&memDC,0,0,SRCCOPY); pieceDC.BitBlt(0,0,nWidth,nHeight,&saveDC,0,0,SRCCOPY);4.2.显示界面的准备4.2.1在窗体类中添加存放黑白棋两维数组和背景棋盘、黑棋、白棋位图对象int wb1515;CBitmap Board,Black,White; /背景棋盘、黑棋、白棋位图对象4.2.2 在窗

22、体构造函数中初始化wb,装入棋盘、黑棋、白棋位图 for(int i=0;i15;i+) for(int j=0;jBitBlt(0,0,535,536,&mem,0,0,SRCCOPY); /绘制棋盘 for(int i=0;i15;i+) /绘制棋子 for(int j=0;j15;j+) if(wbij=1) PutBitmap(pDC,5+i*35,7+j*35,&Black,RGB(255,255,255); else if(wbij=2) PutBitmap(pDC,5+i*35,7+j*35,&White,RGB(255,255,255); / TODO: add draw co

23、de for native data here4.4. 轮流下子代码void CChessView:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultif(flag=1)int x=(point.x-5)/35,y=(point.y-7)/35; /计算坐标if(x15&yGetDC(); PutBitmap(pDC,5+x*35,7+y*35,&Black,RGB(255,255,255); /显示该棋子CView:OnLButtonDo

24、wn(nFlags, point);flag=2;if(heisheng(wb)=1)this-MessageBox( 黑子胜,完成,MB_OK); OnStart();if(ping(wb)=1)this-MessageBox(平均,完成,MB_OK);OnStart(); elseint x=(point.x-5)/35,y=(point.y-7)/35; /计算坐标if(x15&yGetDC(); PutBitmap(pDC,5+x*35,7+y*35,&White,RGB(255,255,255); /显示该棋子CView:OnLButtonDown(nFlags, point);fl

25、ag=1;if(baisheng(wb)=1)this-MessageBox( 白子胜,完成,MB_OK);OnStart();if(ping(wb)=1)this-MessageBox(平均,完成,MB_OK);OnStart();4.5. 判断输赢此功能用来判断当某一方下完子后在八个方向上是否有连成五个子的可能性,若连成五子则执此棋子方获胜;或者棋盘下满为和局。4.5.1判断是否白棋胜代码int CChessView:baisheng(int a1515) int i,j;/判断横着的5个是否都相等 for(i=0;i15;i+) for(j=0;j15;j+) if(aij=2&aij+

26、1=2&aij+2=2&aij+3=2&aij+4=2) return 1; for(j=0;j15;j+)/判断竖着的5个是否都相等 for(i=0;i15;i+) if(aij=2&ai+1j=2&ai+2j=2&ai+3j=2&ai+4j=2) return 1; for(i=0;i15;i+)/判断左斜5个 for(j=0;j15;j+) if(aij=2&ai+1j+1=2&ai+2j+2=2&ai+3j+3=2&ai+4j+4=2) return 1; for(i=0;i=0;j-) if(aij=2&ai+1j-1=2&ai+2j-2=2&ai+3j-3=2&ai+4j-4=2) return 1; return 0; 4.5.2判断是否黑棋胜代码int CChessView:heisheng(int a1515) int i,j;/判断横着的5个是否都相等 for(i=0;i15;i+) for(j=0;j15;j+) if(aij=1 & aij+1=1 & aij+2=1 & aij+3=1 & aij+4=1) return 1; for(j=0;j15;j+)/

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1