飞行棋课程设计_第1页
飞行棋课程设计_第2页
飞行棋课程设计_第3页
飞行棋课程设计_第4页
飞行棋课程设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、武汉工程大学 计算机科学与工程学院综合设计报告设计名称: 系统软件综合设计 设计题目: 飞行棋游戏的设计与实现 学生学号: 1005090226 专业班级: 2010级计算机科学与技术 (计算机科学方向)02班 学生姓名: 张小朗 学生成绩: 指导教师(职称): 徐银霞(讲师) 课题工作时间: 2013.12.30 至 2014.1.10 说明:1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设

2、计完成情况、报告的质量及答辩情况,给出客观、全面的评价。4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。答辩小组成员应由2人及以上教师组成。5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。成绩评定表学生姓名: 张小朗 学号: 1005090226 班级: 10计科02班 类别合计分值各项分值评分标准实际得分合计得

3、分备注平时表现1010按时参加综合设计,无旷课、迟到、早退、违反实验室纪律等情况。完成情况3020按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。10能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。报告质量3510报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。5课题背景介绍清楚,综述分析充分。5设计方案合理、可行,论证严谨,逻辑性强,具有说服力。5符号统一;图表完备、符合规范要求。5能对整个设计过程进行全面的总结,得出有价值的结论或结果。5参考文献数量在3篇以上,格式符合要求,在正文中正确

4、引用。答辩情况2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。总评成绩: 分 补充说明: 指导教师: (签字)日 期: 年 月 日答辩记录表学生姓名: 张小朗 学号: 1005090226 班级: 10计科02班 答辩地点: 计算机大楼419 答辩内容记录:答辩成绩合计分值各项分值评分标准实际得分合计得分备注2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。答辩小组成员(签字): 年 月 日指导教师评语指导

5、教师: (签字)日 期: 年 月 日一、综合设计目的、条件、任务和内容要求: 目的:通过C+面向对象程序设计,实现飞行棋游戏的设计。旨在提高分析解决实际问题的能力,更进一步的掌握和理解所学的知识。条件:PC机一台 Microsoft visual C+ 6.0任务:1、根据功能要求,设计总体方案; 2、根据总体方案进行编程实现; 3、进行软件测试; 4、书写综合设计报告。 内容要求:利用C+程序设计实现飞行棋游戏设计。 指导教师签字: 年 月 日二、进度安排:1. 总体方案设计 (12天)2. 代码编写与调试(56天)3. 结果分析及书写报告(23天)三、应收集资料及主要参考文献:1 王浩.

6、Visual C+游戏开发经典案例详解M.北京:清华大学出版社.2010.2 刘宇军. C+程序设计教程M.北京:清华大学出版社.2008.3 任哲. MFC Windows应用程序设计M.北京:清华大学出版社.2007.4 A.Reinefeld. An Improvement of the Scout Tree Search AlgorithmJ. IccAJournal,VOL.6.No.4,1983.四、摘要:目前,以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的休闲方式。本次课程设计

7、是关于飞行棋的设计与实现,飞行棋是起源于中国古代的传统传统游戏之一。和现代飞行棋所不同的是,当年的飞行棋并没有飞机而是马车,但玩法一模一样。现代飞行棋已经成为休闲娱乐的好项目,它的广为流传和它的娱乐性、休闲性是密切相关的。本次课程设计实现了两个不同阵营中的两架飞机飞出大本营,走过相同或不同的路径,相同阵营飞机相遇叠加,不同阵营飞机相遇碰撞回大本营以及到达终点等功能。分了四章节来介绍本次飞行棋的课程设计,第一章是飞行器的背景简介,第二章是系统总体介绍,第三章是对飞行棋功能实现的具体介绍,第四章是对程序的测试,确保程序的健壮性。本游戏在 Visual C+6.0环境下使用MFC开发设计的,设计过程

8、遵从一般棋牌类游戏的开发原理,并且实现了飞行棋的基本要求。关键词:飞行棋 ;MFC ;Visual C+五、Abstract:Modern network technology, computer technology and network technology as the core has to be in real life and the production of widespread use of casual game set interesting, entertaining, interactive and educational one, has become the m

9、ajority population of leisure.This course is designed to design and implementation on the flight chess.Flying Chess originated in ancient China, the traditional one of the traditional game. And modern flight chess, flight chess and aircraft, but the carriage, but the games are played exactly the sam

10、e. Modern flight chess has become a recreational project, it spread far and wide and it's entertaining, and casual sex are closely related.This course is designed to achieve two different camps in the two planes flying stronghold, the same or different paths through the same camp overlay planes

11、meet, encounter different camps plane crash back to base camp and reach the finish line functions. Of the four chapters to introduce this flight chess curriculum design, the first chapter is the aircraft Background Introduction, Chapter II is a system overview, the third chapter is an introduction t

12、o flight chess specific functions to achieve, is the fourth chapter testing procedures to ensure the robustness of the program.This game use MFC Visual C + + 6.0 environment, development and design, the design process to comply with the principle of the development of the chess game.Keywords: Flying

13、 Chess;MFC;Visual C+武汉工程大学计算机科学与工程学院 综合设计报告目 录摘 要 IIAbstract . III第一章 飞行棋概述. 11.1 飞行棋背景与研究意义 .11.2 主要工作和报告结构 .1第二章系统总体设计.32.1 需求分析.32.2飞行棋系统功能与结构.32.2.1 飞行棋功能.32.2.2 飞行棋结构.4第三章飞行棋系统详细设计. 63.1 飞行棋棋盘设计.63.2 细节设计.63.3 飞机撞机、并列、飞出.83.4函数设计与分析.83.4.1 全局变量分析.83.4.2程序函数的设计与分析.9第四章系统测试与结果分析.104.1 系统主界面.104.2

14、飞机飞行过程测试与分析.104.3 撞机,叠机.114.4 到达终点.124.5 性能测试.13总 结.14 致 谢 .15 参考文献 .16附录 主要程序代码 .17 摘 要目前,以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的休闲方式。本次课程设计是关于飞行棋的设计与实现,飞行棋是起源于中国古代的传统传统游戏之一。和现代飞行棋所不同的是,当年的飞行棋并没有飞机而是马车,但玩法一模一样。现代飞行棋已经成为休闲娱乐的好项目,它的广为流传和它的娱乐性、休闲性是密切相关的。本次课程设计实现了两个不

15、同阵营中的两架飞机飞出大本营,走过相同或不同的路径,相同阵营飞机相遇叠加,不同阵营飞机相遇碰撞回大本营以及到达终点等功能。分了四章节来介绍本次飞行棋的课程设计,第一章是飞行器的背景简介,第二章是系统总体介绍,第三章是对飞行棋功能实现的具体介绍,第四章是对程序的测试,确保程序的健壮性。本游戏在 Visual C+6.0环境下使用MFC开发设计的,设计过程遵从一般棋牌类游戏的开发原理,并且实现了飞行棋的基本要求。关键词:飞行棋 ;MFC ;Visual C+AbstractModern network technology, computer technology and network tech

16、nology as the core has to be in real life and the production of widespread use of casual game set interesting, entertaining, interactive and educational one, has become the majority population of leisure.This course is designed to design and implementation on the flight chess.Flying Chess originated

17、 in ancient China, the traditional one of the traditional game. And modern flight chess, flight chess and aircraft, but the carriage, but the games are played exactly the same. Modern flight chess has become a recreational project, it spread far and wide and it's entertaining, and casual sex are

18、 closely related.This course is designed to achieve two different camps in the two planes flying stronghold, the same or different paths through the same camp overlay planes meet, encounter different camps plane crash back to base camp and reach the finish line functions. Of the four chapters to int

19、roduce this flight chess curriculum design, the first chapter is the aircraft Background Introduction, Chapter II is a system overview, the third chapter is an introduction to flight chess specific functions to achieve, is the fourth chapter testing procedures to ensure the robustness of the program

20、.This game use MFC Visual C + + 6.0 environment, development and design, the design process to comply with the principle of the development of the chess game.Keywords: Flying Chess;MFC;Visual C+II武汉工程大学计算机科学与工程学院 综合设计报告第一章 飞行棋概述1.1飞行棋背景和研究意义 如今外国游戏已经在中国市场占有很重要的地位,使得中国的文化环境逐渐改变,民族文化已经不能吸引玩家,尤其近年来屡屡的事

21、件和媒体舆论的影响,已经让网络游戏成为大众眼中毒害青少年的精神毒品。而宣传中国传统文化,引导青少年健康游戏、快乐游戏应该是每个游戏工作者的责任和义务。棋类游戏是中华民族文化的瑰宝,被人们称为“智慧的体操”,是老少皆宜的竞赛游戏。幼儿园中班教育教学中,引入融趣味性、益智性于一体的飞行棋游戏,让孩子们在游戏中学习下棋,体验下棋带来的愉悦与成就感,不仅可以开发儿童智力、训练儿童思维,还可以培养儿童的专注力、意志力、合作能力以及规则意识、创新意识等,养成做事认真、专注的好习惯,促进儿童的全面发展。而飞行棋作为一种常见的、富有趣味性、益智性、玩法简单、易学的棋类游戏,在儿童教育教学阶段开展,不仅让孩子们

22、在游戏中学习下棋,体验下棋带来的愉悦与成就感,开发儿童智力、训练儿童思维,还可以培养儿童的专注力、意志力、合作能力以及规则意识、创新意识等,养成做事认真、专注的好习惯,促进儿童的全面发展。飞行棋这种转圈式的路程设计来自于空战中的“拉弗伯雷圆圈”。法国人拉弗伯雷对德国的"大圆圈编队"战术作了改进,使参加编队的飞机不但保持在一个水平面上飞行,而且可绕圆圈盘旋爬高。这样就可以利用防御队形进行盘旋以取得高度优势,伺机进行攻击。这就是著名的"拉弗伯雷大圆圈"。当时人们发明这种棋,是用一种先进的空战战术。 本次课程设计的意义在于掌握对于MFC编程的综合运用,怎样通过

23、图形界面控制绘图实现游戏的一些基本功能,对于MFC的学习有很大帮助。界面设计应该是游戏设计中非常重要的一个环节,玩家与游戏系统的直接交互就是通过界面系统完成的。游戏的界面跟产品的外观和功能一样,要能吸引玩家并且易用。在设计界面的过程中,要一直注重易用性设计原则,并且充分考虑用户感受,随时调整和修改界面的设计细节。 游戏界面既具有界面设计的一般规律,更有游戏这一特殊领域的个性设计原则。在界面的设计制作过程中,应在掌握基本游戏框架设定能力和对用户需求分析能力的基础上,了解并掌握游戏开发机制尤其是游戏界面的实现原理以及设计中 常 用 的 技 术,例 如 :界 面 风 格 制 定、美 术 需 求 文

24、档 制 作、界 面 原 型 制 作、程 序 坐标图制作等技术。1.2主要工作和报告结构本次课程设计的主要工作是完成飞行旗游戏的设计以及具体实现过程。其主要设计分为棋盘的设计,随机数的产生(模拟骰子),飞机在飞行中的起步、飞行、叠加、撞机、到达终点等,具体介绍参照第三章。本次课程设计报告的结构如表1-1所示:表1-1 论文结构表概要包括游戏以及设计介绍游戏设计包括界面以及玩法游戏具体实现包括游戏核心算法功能测试包括游戏测评及总结本次课程设计大致分为四个部分,第一章概要,介绍了飞行棋的发展背景和研究意义,并描述了本次课程设计报告的内容结构。第二章系统总体设计,介绍了需求分析、系统功能及结构,说明了

25、整个游戏的大致设计框架,游戏控制流程等,部分重要细节通过图表的形式进行了描述。第三章系统详细设计,介绍了棋盘设计、细节设计,细节设计中详细介绍了游戏过程中的游戏功能和功能函数的实现。第四章设计结果及分析,介绍了棋盘界面初始化、游戏进行过程中的出现的缺陷以及相应的优化方案。第二章 系统总体设计2.1 需求分析飞行棋游戏是一个比较流行的游戏,本次实验设计主要是对它进行简化设计。但是仍然保留了它大多数的基本功能。基本需求如下:首先,飞行棋游戏是一个在棋盘上进行的游戏。所以其需要用一个总体棋盘来表示飞机的轨道,在该棋盘上主要对飞机进行游戏规则限定;其次,飞行棋玩家本次设计主要限定为两个玩家。故在这里需

26、要设计两个大本营来代表两个玩家的角色;再次需要设计一个文本框来显示游戏玩家所摇出来的数字以模拟骰子。最后,游戏需要有一个终点,当玩家的飞机抵达终点时进行判断游戏是否终止。本次课程设计所安排的玩家角色为两人,在地图上呈对角分布,玩家行走路线为逆时针。每个玩家拥有两架飞机进行游戏。详细游戏规则如下: 飞机出动规则:首先由玩家A点击“开始”按钮摇骰子,显示数字N,当数字框显示的数字N=6时才允许出动一架飞机,如果没有摇到数字6则由玩家B进行相同的操作。轮流操作,直到有飞机从基地中出发。当某个基地中存在一架飞机时,游戏玩家通过鼠标选择飞机进行游戏,例如:当摇出的数字为非6时,可以选择已经出动的飞机进行

27、游戏,数字为几就前进几步;若为数字为6时可以选择未出动的飞机,使飞机出基地。当基地中不存在飞机时,摇出数字后玩家通过鼠标选择希望前进的飞机进行游戏,数字为几就前进几步。飞机在地图中前进时的规则:点击“开始”按钮,数字显示后,通过鼠标选择需要前进的飞机,数字为几就前进几步。当飞机在地图上前进时,若两个玩家的飞机均落在了同一个地点,那么后去的飞机将把前一个落在该地点的飞机弹回飞机本来的基地中,被弹回的飞机需要玩家根据“飞机出动规则”再次出动飞机。飞机到达目的地规则:玩家需要将自己基地中的飞机通过指定的路线进入目的地,在到达目的地之前,如果摇出的数字刚好使得飞机进入目的地,则该飞机成功完成任务。如果

28、摇出的数字M多出飞机到达目的地本应该对应的数字N时,则飞机从目的地倒退M-N步,直到某个玩家的飞机全部到达终点,该玩家获胜,游戏结束。游戏的界面元素: 对一个游戏而言,游戏界面是一个相当重要的部分,界面的美观直接影响到玩家对游戏喜爱程度,下面主要介绍界面中的一些主要元素。游戏界面元素有:地图、骰子、两方棋子(每方2个共4个角色)。2.2 飞行棋系统功能与结构2.2.1 飞行棋功能本次设计的系统大致上能够实现飞行棋的一些基本操作,诸如掷骰子,然后根据点数判断是否出飞机或走动飞机,以及飞机撞机后的处理,并严格按照飞行棋的游戏规则进行走动。用户只能在特定的区域来掷骰子以及控制飞机的移动。最后当其中一

29、方所有的飞机都已经到达终点则会弹出消息框提示胜利,至此,一轮游戏结束。2.2.2 飞行棋结构飞行棋游戏由棋盘,飞机A1、A2,B1、B2,骰子和相关的后台控制程序组成。游戏框架结构如图2.1所示:图2.1 框架结构如图2.1所示,在游戏进行时,由鼠标操作,棋盘界面变化,游戏控制模块三部分相结合来实现游戏的具体内容。具体操作为:通过鼠标在棋盘界面上进行点击操作,执行摇骰以及选择飞机的功能。其中可操作的对象为一个“摇一摇”骰子和4架飞机分别是A1、A2、B1、B2,通过鼠标点击骰子可以产生随机数,点击飞机可以选择出动飞机的类型。在通过鼠标操作后,图形界面将相应的数据输入后台程序,通过游戏规则进行判

30、断飞机处于哪种状态,并将相应的数据通过逻辑运算得到最后的结果,最终结果再由图形界面的棋盘进行输出显示。整个程序流程大致如图2.2所示: 图2.2 飞行棋流程图 在整个程序中首先对所有的变量(所有的飞机的ID号)进行初始化并且赋值为0,初始化后,点击“开始”按钮,得到行走的步数赋值给step,通过if-else语句判断step是否等于6,并按照游戏规则进行游戏。当step为6时,玩家可以按照游戏规则,让大本营中未出动的飞机飞出,或者让处于棋盘上的飞机向前飞行6步;当step不为6时,玩家只能让处于棋盘上的飞机向前飞行,若玩家没有飞机处于棋盘上,则由下一位玩家摇骰。直到某一位玩家的所有飞机都到达终

31、点,那么该玩家获胜,游戏结束。 在用VC+6.0建工程时,系统会自带CAboutDlg,,CFXQApp, CFXQDoc,CFXQView,CMainFrame五个类,为了实现本次课程设计的功能,新建了一个CGameDlg类如图2.3所示: 图2.3 飞行棋工程类 图2.4 主要函数同时,在新建的CGameDlg类中,根据需要添加了Onbegin(),OnBtnA1(),OnBtnA2(),OnBtnB1(),OnBtnB2()五个功能函数,每个函数现实了每个对应按钮的功能。其中OnBegin()函数就是一个控制游戏开始的函数,在里面主要涉及了对游戏用户的飞机控制调用函数集判断表达式。OnB

32、tnA1()是玩家A的一号飞机控制函数,在里面有一些主要算法用来判断各个飞机所处各自状态下的所遇到的情况进行各自相对应处理。OnBtnA2()、OnBtnB1()、OnBtnB2()为其它三个飞机的相对应操作。具体设计图如下图2.4所示。第三章 飞行棋系统详细设计3.1 飞行棋棋盘设计界面是通过MFC绘画出来的,其中设置了两个大本营、一个终点。大本营在地图中对角分布,终点处于地图的中心。主要用了Button按钮来模拟飞机跑道以及选择按钮设计。如图3.1所示:图3.1 棋盘设计界面设计主要是用MFC的文件进行设计,通过MFC的代码生成菜单选择。在菜单选择中添加一个游戏菜单选项,通过点击此选项来进

33、入游戏的棋盘界面。由游戏控制按钮打开游戏棋盘后,可用发现整个棋盘规划样式。左边是整个游戏的飞行界面。使用Button按钮来设计飞机跑道、飞机大本营以及终点。整个路径使用Button按钮的id来进行编号同时为后面的游戏进行控制。在界面的右侧是一个游戏控制选择,该位置有五个按钮和一个文本对话框,对话框主要是用来显示产生数字以及显示飞机出动的一方;五个按钮分别是游戏开始按钮,用来产生随机数,此随机数也是飞机飞的格数;四个分别控制A1,A2,B1,B2按钮来控制飞机的选择,实现飞机的行走。地图的正方形框一共有60步,逆时针排序分布,进入终点的路线分别是61到66,67到72,终点的ID号为73。3.2

34、 细节设计1. 骰子设计飞行棋的游戏设计主要是当按下开始按钮后,函数使用GetTimer()函数来获取电脑当前时间,对此时间取整,获得一个数字,然后用此数字再对数字6进行取模运算,用以产生游戏运行时所需的数字信息,模拟骰子转动后产生的数字。在显示时间时,用itoa()将产生的随机数转换成字符,通过SetDlgItemText()函数来进行显示数字,用以提供给此时游戏玩家如何选择飞机行走,如图3.2所示:图3.2骰子设计在对话框中的第二个显示窗口显示飞机出动的一方。此功能的实现方法是:根据定义的全局变量n的奇偶性来判断,当n为奇数时,选择大本营1中一架飞机出动,当n为偶数时,选择大本营2中一架飞

35、机出动,如图3.2所示。2. 飞机出大本营飞机飞出大本营的要求是当前玩家摇出的骰子点数为6,当为6时,飞机才能够允许飞出大本营,如果摇出的骰子点数不为6,那么就算是点击飞机,飞机也不会从大本营中飞出。该功能通过void CGameDlg:OnBegin()函数实现。 在第一个玩家摇骰之后,就由第二个玩家摇骰。所以在对于所摇出的骰子数运用于哪个玩家需要通过一个设定的N来控制。当N为奇数时,骰子数作用在玩家A上;当N为偶数时,骰子数作用在玩家B上。因为地图中的每一步格子都是有自己独有的ID号的,所以在飞机出动之后,不同玩家的飞机所处的地点不一致,飞机均停靠在自己大本营旁边,并且行驶步数为1,所以在

36、设计函数时,每一个飞机在飞出大本营后,设定的ID号由程序内部分别进行控制。3. 飞机前进在飞机飞出大本营后,飞机通过骰子的点数前进,点数为几就前进几步。该功能通过GetDlgItemText()函数来将刚才产生的数字调用并递交到行走函数中,供飞机进行飞行。该函数是通过对飞机当前所在按钮的id进行运算,消除原来按钮的属性值,并且将新的属性值显示到新的按钮中。结束该玩家的控制权,递交控制器到对方玩家。当某一玩家仍然有一架飞机未飞出大本营,骰子的点数在作用于那架未出动的飞机时,游戏中会弹出框,显示“飞机还没有飞出大本营”。由于地图中的ID号是按照逆时针的顺序安排的,所以玩家B的飞机在前进过程中会遇到

37、ID号突变的问题,所以在ID号突变的时候,需要通过计算,使飞机在前进过程中能够正常的前进。图3.3 飞行路径4. 飞机到达终点飞机不断前进,最后处于自己独有的线路上,该线路只有对应的飞机才能够停留(如:玩家A的飞机只能从ID为6166进入终点,玩家B的飞机只能从ID为6772进入终点),最后通过自己的线路进入终点。在3. 1的图中可以看出,在行驶过程中ID号并不是一直加1的,所以在玩家A进入自己的线路时,要通过计算,使得飞机并不是从ID53前进到ID54,而是直接从53跳转到61。玩家B同理。飞机行走按照逆时针运转。当飞机接近终点路径时,将会调用对操作进行预处理,判断当完成此操作后,飞机是否会

38、抵达终点,或者超出终点id编号。如果飞机抵达终点且该玩家只有一架飞机抵达则弹出对话框对应的飞机已到达终点,同时在此后的操作中禁止对该飞机进行操作;若两架飞机抵达终点,则弹出对话框该玩家取得游戏的胜利,同时调用EndDialoge()函数来结束该游戏;若飞机未抵达终点并且超出了终点的id编号,则调用操作id=id*2-step-endid用来将该操作进行处理;若飞机未能抵达终点,则进行3.2.3操作。行走完毕后,结束该玩家的控制权,并将控制权转移到对方玩家。3.3飞机撞击、并列、飞出当飞机在棋盘行走的时候,如果同一个玩家的两架飞机抵达同一个地点时,则会进行清除该飞机与当前所在位置原来的痕迹,重新

39、写新的位置属性。调用wsprintf()函数来产生一个新的字符串,其后将该字符串写在对应的按钮中;两架飞机不是同一个玩家的时候,新来的飞机将会把原来的飞机踢回大本营,并且消除该位置的属性,重新写入该位置的属性。对方玩家的飞机将会重新开始行走。行走完毕后,结束该玩家的控制权,并将控制权转移到对方玩家。当玩家获得控制权后,选择一架飞机进行飞行,该位置属性将会消除,将未飞出的飞机编号写入该位置的属性。同时将飞出的飞机编号写入其飞入的位置属性。行走完毕后,结束该玩家的控制权,并将控制权转移到对方玩家。3.4函数设计与分析 3.4.1 全局变量分析每一个函数都会赋予一些字母特殊的意义,在计算机中,全局变

40、量就属于这类角色。每一个变量都有其作用域,而全局变量就存在于整个工程。在飞行棋设计中用到的一些全局变量如图3.4所示,其具体作用如下: 图3.4 全局变量介绍step: 模拟骰子的点数,也是飞机跳动的格数;n : 点击开始的次数,他的奇偶性影响到飞机的飞行,当n为奇数时,选择大本营1中的一架飞机出动,当n为偶数时, 选择大本营2中的一架飞机出动;m1: 赋予大本营1中一架飞机的变量,随着骰子的点数变化,其值与棋盘中按钮的ID号对应;m2: 赋予大本营1中一架飞机的变量,随着骰子的点数变化,其值与棋盘中按钮的ID号对应;n1: 赋予大本营2中一架飞机的变量,随着骰子的点数变化,其值与棋盘中按钮的

41、ID号对应;n2: 赋予大本营2中一架飞机的变量,随着骰子的点数变化,其值与棋盘中按钮的ID号对应;d1: 大本营1中飞机到达终点的架数,当其值为2时表示最终胜利;d2: 大本营2中飞机到达终点的架数,当其值为2时表示最终胜利;3.4.2 程序函数的设计与分析在程序中,实现一些具体的功能就要依赖函数来实现。在本次飞行棋的课程设计中,实现飞行的具体步骤都是依靠具体的函数实现的。本次课程设计中所使用到的函数都归纳在CGameDlg这个类中,具体的函数如图3.3所示: 图3.3 函数介绍 OnBegin() : 此函数是“开始”按钮功能的实现,通过点击“开始”按钮,摇出骰子的 点数,飞机飞行的格数就

42、是摇出的点数;还有另一个功能就是显示飞机出动的一方;OnBtnA1() : 此函数作用于按钮“A1”,当点击开始按钮后,点击“A1”按钮,根据要求具体情况,飞机走出相应的格数,或者原地不动;OnBtnA2() : 此函数作用于按钮“A2”,当点击开始按钮后,点击“A2”按钮,根据要求具体情况,飞机走出相应的格数,或者原地不动;OnBtnB1() : 此函数作用于按钮“B1”,当点击开始按钮后,点击“B1”按钮,根据要求具体情况,飞机走出相应的格数,或者原地不动;OnBtnB2() : 此函数作用于按钮“B2”,当点击开始按钮后,点击“B2”按钮,根据要求具体情况,飞机走出相应的格数,或者原地不

43、动;在函数设计中,OnBtnA1(),OnBtnA2() ,OnBtnB1() ,OnBtnB2() 这四个函数的功能是一样的,代码大部分也一样,但还是有一部分是不相同的。对于功能实现,代码难点主要在于跳出大本营,撞机,叠机以及到达终点的算法实现,因为在写算法时,里面的部分数据会是跳跃的,这就增加了难度。第四章 系统测试与结果分析4.1 系统主界面首先运行程序,棋盘完整、飞机有序显示在对应区域,如图4-1所示。图4.1 系统主界面在此飞行棋中,功能比较简单,两个大本营中各有两架飞机,分别命名为A1,A2(此为大本营1中的两架),B1,B2(此为大本营2中的两架)。由于本次课程设计的飞行棋功能比

44、较简单,同时棋盘界面做的也不是很华丽,看起来和玩起来就少了很多乐趣。所以考虑了进一步改进的方向:本游戏改进方向之一便是添加flash动画效果来实现掷骰的动作以及飞机飞行的动作。此过程的实现需要使用ActiveX控件在V应用程序中添加Flash。其次本游戏改进方向之二便是添加网络来实现人人对战,此过程需要用到MFC中的CAsyncSocket和CSocket进行开发。Socket编程分为两种:面向连接协议的网络通信编程和面向无连接的网络通信编程。由于连接协议提供一系列数据纠错功能,可以保证在网络上传输的数据及时、正确地到达,所以面向连接协议的Socket编程模型应用更为广泛。而Socket的使用

45、时基于CS系统的(客户机、服务器)。4.2 飞机飞行过程测试与分析点击开始按钮开始游戏、此时设置的骰子(摇一摇框中的第一个显示框,第二个显示框哪个大本营走)就会显示点数。当掷的非6时飞机不能准备起飞、当掷到6后、飞机进入准备起飞状态,即跳到距大本营一步的地方。大本营1,2依次掷骰,点数即为飞机的前进步数、若点数为6,则用户可以选择新出飞机或者选一架飞机继续走。如图4-2所示。图4.2 飞机飞行在测试飞机飞行过程中,出现了诸多问题,比如当一架飞机走后,在原来的位置会留下痕迹,这个痕迹不会消失,就会在玩的过程中留下疑问,不知道飞机当前位置;在飞行过程中会出现id跳跃的现象,所以在写算法时要注意之间

46、的差值,这些问题都在测试的过程中出现,我们组也一次解决了这些出现的问题。由于本次设计过于简单,以后改进方向可以为:增加游戏规则,增加代码以完成对应规则。可以在游戏地图上设置关卡:1、普通;2、地雷;3、暂停;4、幸运轮盘等。这里普通位置仍旧按照原来的规则进行飞行,遇到地雷将会发生爆炸,飞入该位置的飞机将会发生爆炸,然后该飞机将被弹回大本营,暂停则是对方在完成一次操作后仍旧继续游戏,该用户错过一次操作。幸运转盘可以让用户通过转动转盘来获得一个新的机会等操作,以期通过改进使得玩家获得一个更加丰富的体验。4.3 撞机、叠机撞机:当不同大本营的飞机走到同一格时,后到的飞机将把前一架飞机撞回大本营。叠机

47、:当同一个大本营的飞机走到同一格时,此时的飞机将会叠加起来,当再次掷出点数时,选择其中任一飞机走出相应的格数。撞机过程截图4-3,如图4-3所示大本营1中A1飞机将大本营2中B2飞机撞回机场。图4.3 撞机撞机事件出现在不同大本营之间,并且只会出现在两个大本营共同的路径上面。在测试时没有出现很大问题,主要就是在编码时,把被撞飞机的全局变量设置为0就行了。叠机过程截图4.4,如图4-4所示大本营1中A1,A2飞机相遇。图4.4 叠机在飞行过程中,叠机是其中的一种特殊情况。在同一大本营中的飞机相遇,不会出现上面撞机的情形,而会叠加在一起,当再次飞行时两架飞机则分开。测试过程中,主要解决的问题是,当

48、两架飞机相遇时,前一架飞机不会被覆盖,再分开时后一架飞机会保留,为了实现此功能在主程序中增加了两个if语句。4.5 到达终点胜利标准:两个大本营中,哪个大本营的两架飞机均到达终点,则胜利!在向终点进发的过程中,当有飞机到达终点时,会给出提示框口飞机到达终点,如图4.5所示。当同一阵营的飞机都到达终点时,给出胜利提示,如图4.6所示。 图4.5 飞机抵达 图4.6 胜利抵达到达终点的情况分为两种,一种为一架飞机到达,另一种情况是同一阵营的飞机都到达重点胜利。在到达终点的测试过程中,最主要的问题集中在到达终点的算法实现,因为规则规定只有在点数恰好为隔的格数,才能到达终点,不然要往后退。根据规则,我

49、们添加了一组if-else语句。在飞机到达终点或者是阵营胜利都会弹出窗口显示到达或胜利,如图4.5,4.6所示。本处游戏设计的不足是当游戏完成后,只给出了一个对话框就宣告游戏结束,如果用户想再次游戏则需要重新打开游戏来玩,太过麻烦。所以改进的地方就是结束时有个新的界面来显示游戏已经结束,同时弹出对话框给用户来选择是否重新玩一局。4.6 性能测试本阶段主要测试恶意点击飞机与棋盘来测试程序的健壮性。首先棋盘初始化后,在未点开始前、任意点击棋盘的其它位置(最小化、关闭除外)都不会引起程序的崩溃或者飞机的移位等事件。其次,在游戏过程中,当掷骰后,只能对特定的飞机进行操作,任意点击其它飞机均无任何响应。

50、对最初的代码进行测试性能过程中,遇到了诸多问题,如在A1,A2在向终点进发的最后一个左转,其id跳跃时,根据原代码会出现原来的位置飞机不会消除;B1,B2在大本营1左转时的跳跃及向终点左转时的跳跃都会产生上述问题。这些bug都会对程序的健壮性有影响,一个健壮的工程程序会包含各种情况,也许在我们本次课程设计中还会存在其它我们组没有发现的问题。本次程序设计主要是在内部函数中进行设计的,没有产生一些函数来辅助完成一些基本操作,而通过内部函数虽然设计起来较为简单,但是在设计大型程序时将会显得程序较为臃肿,给程序阅读者造成障碍;同时,在程序设计过程中没有对程序设计者进行签名,当一段程序发生bug时,可能造成责任不清晰的问题,程序设计过程中也没有对程序进行注释,阅读者有时会产生难以理解的问题。- 23 -总结本次课程设计按照老师的要求,在开始之前就根据题目的功能和难度进行了规划。本次课题需要实现哪些功能,每个功能都是如何通过函数实现,以及各个功能的工作人员分配和时间分配等问题在开始工作之前就一并计划完成,这样使得我们的工作更加明确,也更加清晰的了解到在规范的安排下,同学之间的分工合作可以使工作效率提高很多。由于本人水平有限,所以使用的语句也比较简单,算法中的时间效率以及空间效率的问题考虑不全,这些地方都是需要进行优化的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论