欢迎来到天天文库
浏览记录
ID:25231677
大小:788.91 KB
页数:14页
时间:2018-11-19
《c++课程设计——五子棋》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《面向对象程序设计课程设计》————五子棋学号:201201051738学院:信息科学与工程学院班级:网络工程2班指导老师:学生姓名:日期:2013年06月24日12C++课程设计——五子棋一、功能描述设计一个五子棋游戏,实现双人对战,通过鼠标进行操作,具有悔棋功能,可以多次进行游戏,界面美观,有音效。重要的是按键进行弹窗提醒,由用户进行确认。二、概要设计窗口注册:向系统注册窗口。建立窗口:初始化并建立窗口。处理消息:等待消息传入,调用处理函数。POINT_类:记录一个点及其处理函数,包括点的位置规范化函数。Chess类:记录棋子相关信息及其处理函数,包括落子,起子函
2、数。GameGolbal类:记录一个五子棋游戏的整体信息及其处理函数,包括定义了POINT_类,Chess类的成员,及一些游戏中会用到的整体变量。主要函数包括如下:窗口刷新函数:通过储存的数据重新绘制窗口。新游戏函数:对游戏的变量进行初始化的处理。悔棋函数:对储存数据修改,达到悔棋的目的,会调用窗口刷新函数。声音播放函数:播放效果声音。12结果判断函数:每次落子后判断结果。结果显示函数:绘制游戏胜利的结果。程序运行流程及函数调用关系如下:注册窗口建立窗口等待信息窗口菜单命令WM_COMMAND鼠标左单击WM_LBUTTONDOWN判断胜负关于IDM_ABOUT悔棋ID
3、_BACK退出IDM_EXIT新的一局ID_NEW判断并累加操作的棋子数据初始化修改数据窗口刷新标准化并记录坐标判断是否棋子覆盖绘制棋子判断胜负调用声音函数显示结果12一、详细设计窗口注册:声明窗口结构与类别,对窗口的信息进行描述建立窗口:通过窗口的描述,初始化窗口,显示窗口。处理消息:等待消息传入,调用处理函数处理信息。POINT_类:储存棋子在棋盘上的位置,其中的voidSTAND(intX,intY)函数负责将输入的点规范为棋盘格上对应位置。Chess类:棋子类储存棋子信息,包括棋子颜色,阴线阳线上的棋子个数,同时其中包含落子函数,起子函数来对相应的数据进行操作
4、。落子函数除了对数据进行记录之外,还负责棋子的绘制,绘制棋子时,主要是加载棋子贴图,由于为了使棋子落在边缘时不会遮挡棋盘边缘的纹理,所以对贴图边缘要进行透明化处理,应用的是简单的图形运算,通过异或处理,使图片与背景贴合。最后悔棋函数用棋子类建立一个二维矩阵,其横纵坐标与棋盘上的位置对应。GameGolbal类:记录一个五子棋游戏的整体信息及其处理函数,包括定义了POINT_类,Chess类的成员,及一些游戏中会用到的整体变量。主要函数包括如下:窗口刷新函数:通过储存的数据绘制窗口,屏幕刷新时调用,或者主动调用,比如开始新的一局,悔棋时。新游戏函数:对游戏的变量进行初始
5、化的处理,之后调用窗口刷新函数。悔棋函数:对储存数据修改,将棋盘矩阵的相应纵坐标减一,同时调用棋子类二维数组中对应的元素起子函数。之后调用窗口刷新函数,棋子会在棋盘上消失。12声音播放函数:主要是产生落子声音和胜利的声音,播放声音函数将完成建立DirectSound对象,创建缓存区,设置文件格式,读取文件,播放声音,清空缓存区等一系列操作,完成声音的播放。结果判断函数:每次落子后调用,通过判断相邻的阴线,阳线上是否存在5个连续的同色棋子,判断是否一方已胜利,若存在胜利的一方,返回的结果是胜利的一方的整形数据代号,否则返回的是无关整形数据。结果显示函数:绘制游戏胜利的结
6、果,加载贴图。弹窗:弹窗的目的主要是对让用户先前做出的行为进行确认,通过调用系统的intMessageBox(HWNDhWnd,LPCTSTRlpText,LPCTSTRlpCaption,UINTuType)函数,弹出一个窗口,由用户对输入消息确认,通过返回值获取用户结果,进行相应的操作。一、效果及存在问题效果图如下:进入后界面落子效果12悔棋后结果显示选项菜单帮助菜单弹窗提示关于窗口12不足之处1、不能进行存档,学习文件流之后可以进一步改进。2、不能进行人机对战,这属于策略型游戏AI,我本身对五子棋不是很擅长,确实有一定难度,这方面有时间可以参考相关资料的算法进行
7、改进。3、弹出的窗口比较简单,只是调用了MessageBox命令,而已,对API窗口的建立和调用以及其他资源文件的加载还是不够了解。4、因为本程序不需要改变窗口大小,游戏全屏后部分地方为白色,改变之后反而有可能会影响美观,因此可以去掉最大化窗口和改变窗口大小的功能,但我对窗口的建立不是很熟悉,因此暂时还没有去掉。一、心得体会通过对这个五子棋程序的编写,我在一定的程度上对VC的API可视化编程有了一定的了解,对Windows下程序运行流程有了简单的认识,修正了一些以前对程序运行的错误观念。在编程的过程中,我认识到编程前对程序整体结构的分析,对各个部分的
此文档下载收益归作者所有