(此文档为word格式,下载后您可任意编辑修改!)一、需求分析1.1开发背景电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。
互联网的出现为电脑游戏行业发展注入了新的活力,凭借信息双向交流、速度快、不受空间限制等优势,让真人参与游戏,提高了游戏的互动性、仿真性和竞技性,使玩家在虚拟世界里可以发挥现实世界无法展现的潜能,改变了单机版游戏固定、呆板、与机器对话的状况。
网络游戏的这些优势不仅使其在电脑游戏行业中异军突起并在某种程度上取代了单机版游戏,而且成为网络业三大(网上金融、网上教育和网络游戏)赢利且利润优厚的领域之一。
网络作为一种新兴的传播方式,主要包括三大内容:娱乐、资讯、通讯。
提到网络娱乐,过去主要指的是单机版游戏,没有引入网络的概念但随着科技的发展,游戏娱乐产业也在成长目前,国内的游戏娱乐产业正处于起步阶段,特点表现为:第一,它是一种文化的传播。
娱乐产业可以潜移默化地改变人的观念,当前,很多多媒体的播放已被电脑网络所取代。
第二,网络游戏加强了人与人的沟通。
第三,网络游戏具有一定的教育意义。
网络游戏所具有的角色扮演的功能,使得玩家能通过互助更好地完成游戏中的各项任务。
网络无国界,游戏在网络文化产业世界的发展中地位会越来越高。
目前在国外,休闲游戏如棋类等,玩家的年龄跨度非常大,这和我国目前网游市场以青少年为主要消费人群的状况截然不同。
其实,网络可以解决空间的问题,网络和生活越来越息息相关,因此,开辟适合各个年龄层的游戏产品迫在眉睫。
同时,这也涉及到一个企业开发的能力。
娱乐产业发展到一定程度,通过不断锻炼和经验的积累,完全可以通过融入娱乐的成分把教条的东西深入浅出地展现给消费者。
就国内的发展来看,最近這两三年内国内的游戏公司如雨后春笋般的成立,所开发或代理的网络游戏更是不胜枚举。
以全球游戏业界的发展来看,這几年韩国的表现最为突出,特別是在网络游戏的技术研发兴游戏制作,其所发行的网络游戏更成为全球游戏产业重要的指标之一。
去年在美国洛杉矶所举行的 E3(Electronic Entertainment Exposition)展中,已经有几家的韩国厂商挤入世界第一线的游戏开发厂商之列。
近几年来,由于 3D 硬体绘图技术的突破,使得即时描绘的书面越来越精致,而且3D遊戏性更多元化更逼近真实世界,因此在遊戏产业中,3D 游戏已经逐渐取代2D游戏为游戏市场的主流,即使是网络游戏,也慢慢趋向3D化。
然而游戏3D化将会带来的游戏开发上的困难等问题,这些问题以后都需要逐步解决。
人们面对电脑的时间越来越多,面对身边的人的时间越来越少,所以我们游戏所要达到的目的就是加大人们之间的沟通,让大家随时随地都可以体验到玩游戏的乐趣。
而三子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。
同样的,通过这个游戏,既能在休闲时刻娱乐一下,也能在压力面临的时候放松一刻。
1.2项目目标开发一个三子棋游戏。
该游戏基于DOS实现,其功能可概括为:一:玩家可以设定游戏的玩法,即在游戏开始时输入变量,决定选用三子棋或者四子棋;二:玩家可以设置期盼的大小,即在游戏开始时输入一变量n(n=3~9),使棋盘的大小为n*n。
;三:加入可以悔棋功能,要求任意方可以在对方下去后修改一步,即将对方当前步和本方上一步删除,本方重新下棋。
;四:下棋方法使用输入棋盘坐标,棋盘在每次下棋后刷新屏幕。
1.3运行环境软件:运行在Windows软件环境下;硬件:具有网络连接设备的PC机或笔记本电脑;最低配置:要求内存大于128M,硬盘大于1G。
本系统的设计是在Windows 7 RTM 7600.16385(X86)中文旗舰版操作系统环境下,使用Microsoft Visual C++ 6.0中文版开发成功的。
由于Visual C++ 6.0在不牺牲灵活性、性能和控制力度的同时,给C++带来更高水平的生产效率。
除了IntelliSense Technology(智能感应技术)和Edit and Continue (即编即调)等显著缩短开发时间的新特性外,Visual C++ 6.0还为Web开发和企业开发提供更良好的支持。
面向对象的程序设计Microsoft Visual C++ 6.0支持面向对象的程序设计,但它与一般的面向对象的程序设计语言(C++)不完全相同。
在一般的面向对象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;而Microsoft Visual C++ 6.0则是应用面向对象的程序设计方法,把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。
在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,Microsoft Visual C++ 6.0自动生成对象的程序代码并封装起来。
每个对象以图形方式显示在界面上,都是可视的。
二、程序分析2.1函数分析主函数:void main() 连珠游戏主界面,显示两个选项:A:三子棋、B:四子棋;采用do(){}while()语句实现;类:在public中包含一个构造函数,两个输出棋盘函数分别为print1()、print2(),一个三子棋游戏的函数(Three()),一个四子棋游戏的函数(Four ()),同时还有游戏四个判断胜利的函数、悔棋函数,和获取游戏结果的函数;头文件:将类定义在名为Game一个头文件中,同时对类中的各个函数定义、初始化。
2.2程序流程图三、技术路线3.1总体方案3.1.1 采用的软件及开发平台在Windows 7的环境下,采用的是Microsoft公司的Visual C++作为开发平台。
利用面向对象的思想实现一个连珠游戏系统,具体使用了:体现OOP的抽象、封装、多态3种关键技术,构造了基于Game的游戏系统,从而实现游戏的各种功能。
3.1.2 总体方案先设计一个基本构架,然后往函数中逐步添加相应的子函数,一步步完善功能;3.2详细设计1.设置一个类Game();2.我们可以在此基础之上为类添加相应功能函数,如judge1()、regret()等函数;3. Three()或者Four()函数调用相应的功能函数,来实现游戏的对局;4. 主函数中启用输入选项,若是选择三子棋,则调用Game类中Three()函数;如果选择四子棋,则调用Game类中Four()函数;5.进入相应的游戏玩法,可以查看对应的游戏帮助;6.游戏中途,可以选择悔棋,悔棋时,只要输入玩家想要悔棋的坐标即可;7.游戏结束后,统计游戏结果,并输出。
类说明:class Game{public:Game(int M);void print1(); //输出棋盘(1)void print2(); //输出棋盘(2)void Three(); //三子棋双人对战void Four(); //四子棋双人对战int judge1(int ,int ); //判断三子棋中玩家1胜利int judge2(int ,int ); //判断三子棋中玩家2胜利int judge3(int ,int ); //判断四子棋中玩家1胜利int judge4(int ,int ); //判断四子棋中玩家2胜利void regret(int ,int ); //悔棋static int GetX(){ //获取X的值return X;}static int GetY(){ //获取Y的值return Y;}private:int N;static int X; //记录玩家一赢的次数static int Y; //记录玩家二赢的次数char game[10][10];};int Game::X=0;int Game::Y=0;其中,“Game”类直接定义在“Game.h”中,并且Game类中的函数也都是相应的在“Game.h”中写好。
并且静态变量“X”“Y”也都相应的初始化。
因为这个程序并没有使用继承这一C++特性,而且只采用了一个类。
但是,类中还是采用了抽象、封装、多态三种关键技术。
四、工程进度当任务分配下来的第二天,我们组对我们所选的题目三子连珠游戏设计进行了讨论。
也明确了各个成员的工作:组长负责编程,其他成员负责查资料和编辑实验报告。
经过讨论,我们确定了这个程序所涉及的函数,查资料的也积极的参与当中。
任务开始的第一个星期的周末,编程的组员开始写一些基本的代码,同时,负责查找资料的组员也上网搜索有关的资料以及其他人编写的程序,看看他们的思路是怎样的。
接下来经过几天的讨论,小组最终确定思路,就开始各种功能函数的编写,通过一步步的调试与修改,程序也渐渐完善,只是在悔棋部分还有点问题。
和其他小组的几位成员讨论了下,还是没有想出解决的办法。
然后一直卡在那里,我们不断查阅相关的资料,看相关的代码,最后终于实现了。
最后在基本要求都实现的情况下,组长想到了加入一下小功能,如分别统计玩家一、二的胜利情况,还有就是平局。
胜利情况很好判断,只需要用两个全局变量,就可是实现了。
但是平局判断的情况,思想是:当棋盘下满的时候仍未分出胜负,此时记为平局。
我们用一个局部变量来记录棋盘中已经存在的棋子数目,然后和棋盘大小比较,这样就可以判断了。
最后考虑了下,对于三子棋的游戏规则来说,因为是人人对战,只要是第一个下棋的人,那就一定赢;另外,在四子棋中,同样是人人对战,一般不会出现平均的可能性,所以最后决定去掉这项。
最后是写实验报告,小组成员具体分工,有负责编辑文字的,也有流画程图的,总之大家一起努力,共同完成了实验报告。
四、测试报告5.1 阶段测试在程序基本设计好的时候,我们对整个程序进行了一次比较系统的测试,对各个系统的主要功能也都用数据进行了检测,以确保程序的正确性,同时希望程序能够完成各种要求。
以下是这次测试的具体结果:系统主界面运行该程序,首先进入的是游戏系统的主界面,该界面给出了一个选择项,三子棋或者四子棋;测试各个群组的初始化功能三子棋游戏帮助输入‘A’选择三子棋游戏,同时选择游戏说明,了解游戏规则。
同时界面回到游戏选择项。
开始游戏选择“双人游戏”模式,在弹出选项后,输入选择,进行棋谱大小的初始化,并开始游戏。
初始化棋盘后,开始游戏对局,并没有采用想“AI”算法,或者其他算法,所以游戏并不是人机对局,而是用户自己对局。
同时,游戏对局是输入坐标来进行的。
以下是游戏部分截图(游戏中在每次下棋后刷新屏幕):悔棋为了验证悔棋功能,我们也进行了相关的数据处理和验证,部分截图如下:上图为悔棋前的截图:上图为开始悔棋到成功的截图:其他情况退出游戏四子棋游戏帮助输入‘B’选择三子棋游戏,同时选择游戏说明,了解游戏规则。