横版过关游戏《三国志》的设计与开发毕业论文.docx_第1页
横版过关游戏《三国志》的设计与开发毕业论文.docx_第2页
横版过关游戏《三国志》的设计与开发毕业论文.docx_第3页
横版过关游戏《三国志》的设计与开发毕业论文.docx_第4页
横版过关游戏《三国志》的设计与开发毕业论文.docx_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

摘要 本论文着重分析用Microsoft Visual C+语言实现一个家喻户晓的街机游戏三国志,由于创意并非原创,旨在介绍游戏的实现方法,并逐步了解Microsoft Visual C+的应用。本设计通过开头动画类、主菜单类、游戏主程序任务类三大类以及键盘操作模块、人工智能模块、背景音乐播放模块、图形渲染模块,共四大模块构成。实现了游戏分数记录、道具的使用、人工智能、背景音乐播放、游戏帮助、胜负判断等多个功能,采用图形函数的使用实现了一个完整的三国志游戏界面,界面清晰可见。关键词 横版过关;c+语言;人工智能;图形编程ABSTRACT This paper emphatically analyzed using Microsoft Visual c + + language to achieve a household arcade games adapted, because the idea is not original, aims to introduce the realization method of the game, and gradually understand the Microsoft Visual c + + applications. This design through the opening animation, the main menu and game main program task class three categories and the keyboard module, artificial intelligence module, background music playback module, graphic rendering module, a total of four modules. Implements the game score record, the use of props, artificial intelligence, background music playback, the multiple function such as game, the outcome to decide, adopt the use of graphics functions implemented a complete reflection game interface, interface is clearly visible.KEY WORDS Xross Scramble; C+; Artificial intelligence; Graphics programming目 录前 言1第一章横版过关类游戏的相关简介21.1横版过关类游戏的概念和发展历史21.2横版过关类游戏的基本要求21.2.1开发软件及硬件要求21.2.2运行环境31.2.3测试环境操作系统与硬件配置31.3横版过关游戏具有的基本功能31.4横版过关游戏相关的技术要点41.4.1数组41.4.2碰撞检测41.4.3有限状态机(FSM)61.4.4模式移动和追踪算法7第二章横版过关类三国志游戏的总体设计92.1游戏流程92.2界面102.2.1游戏菜单界面102.2.2游戏操作说明界面112.2.3游戏声音设置界面122.2.4游戏运行界面132.2.5游戏结束界面142.2.6地图142.3敌人信息152.4道具信息152.5人物操作信息16第三章横版过关类三国志游戏的功能实现173.1项目类173.2技术要点在项目中的实现183.2.1数组在项目中的实现183.2.2碰撞检测在项目中的实现193.2.3有限状态机(FSM)在项目中的实现203.2.4模式移动和追踪算法在项目中的实现22第四章总结与展望244.1总结244.2展望24参考文献25致谢26to the terms of the contract, in line with the spirit of collaboration in coordination with the supervisor . We will work with other sites or other conflicts in common use facilities will be coordinated by the employer and the supervisor. We would for other packages to meet engineering and construction must be used to provide convenient, and are subject to the supervisors decision. 13.6 proposed main construction equipment to be put into this contract work table device name, model number and specifications of main construction equipment manufacturer name year of purchase has been using classes maintenance situation now where to enter time mixing machine 0.5 1 China 2010 158 good HZS60 2 2009 300 company 2012.10 mixer 2012.10 ZL30 2 2011 800 loader in good company good lease 2012.10 loader ZL50 2 2011 270 2012.10 concrete mixer truck in good company good 10m3 6 2009 1200 rental 2012.10 2007 2000 good company, China Steel bending machine GW6-40 4 GQ40 4 2012.10 steel bar cutting machine 2010 1800 good corporate 2012.10 steel bar straightening machine GTJ14 4 2010 200 good corporate 2012.10 AC electric welding machine BX-400 4 2006 200 good corporate 2012.10 gas welding equipment-2011 1000 good corporateV前 言随着经济及计算机多媒体技术的飞速发展,计算机游戏日益受到人们的亲睐,成为人们生活中重要的休闲娱乐方式。计算机的出现,带领了计算机游戏的华丽出台。计算机游戏的历史不过短短几十年,但经过的里程碑不计其数。作为一个游戏开发者,学习简单的单机版游戏制作,有益于加深对游戏软件制作理念的理解,也将有益于今后参加更加复杂的项目。目前不论是在我国,还是在世界范围内,游戏产业都在蓬勃发展,越来越多更具娱乐性的游戏被开发出来。在众多的游戏开发工具中,Microsoft的Visual C+ 系列被认为是当今世界最强大的游戏开发软件,其代表作: “Diablo 暗黑破坏神 系列”、“魔兽争霸系列”、“星际争霸系列”、“模拟人生系列”、“帝国时代系列”等等,几乎所有的大作都有VC的功劳。因此,掌握了VC的应用,不但是掌握了一种优秀的开发工具,对于今后参加大型团队的游戏项目开发也具有一定的帮助。本设计通过开发一个单机版的基于Visual C+的横版过关街机游戏三国志,使其拥有一定的实现功能,有一定的市场适应能力,及一定的娱乐性很值得一试。通过制作这样一个游戏,可以加深对游戏设计思想的了解,也可以进一步熟悉编程工具的应用,更可以给我们的生活带来更多的趣味。在设计过程中,作者将把人工智能和道具应用在代码中实现。通过该设计,作者将更好的了解利用Visual C+ 2008开发游戏的优越性。第一章 横版过关类游戏的相关简介1.1横版过关类游戏的概念和发展历史横版类过关游戏,就是横版闯关游戏,一般都有时间限制,特定关卡,特殊道具等游戏要素,有些还会有解谜和任务等。按照游戏玩法可以分单打双打,甚至还可以多打。按照游戏类型可以分为平面类,益智类,射击类,动作类等。其中经典的横版过关游戏游戏代表有超级玛丽、三国志、恐龙快打、魂斗罗等等等。1987年,FC版横版射击游戏魂斗罗开创了一个时代的横版游戏标杆;之后,街机版合金弹头一炮而红,横扫整个横版射击游戏市场;之后陆续出现了三国志,恐龙快打,铁钩船长等横版动作街机游戏,再后来横版动作类网游冒险岛问世,横版网游开始崛起;随后,地下城与勇士以“横版格斗” 的口号风靡网游界,成为横版网游当之无愧的王者;很多年下路了,即便如此,横版游戏的发展道路并没有因为很多经典的问世而失去影响,网页游戏开始觉醒,神仙道凭借“横版仙侠 ”和“Q版风格”,赢得一片喝彩,龙将横版关卡、三国穿越,也开始大红大紫,似乎横版游戏已成为不落的经典。短短20几年的时间,横版闯关游戏从最初的FC红白机(家机),到街机,网游,再到网页游戏,到现在的手游。都有不错的横版游戏问世,其经典数不胜数。1.2横版过关类游戏的基本要求1.2.1开发软件及硬件要求Intel Pentium 4 2.0GHZ,512内存,80G硬盘。Microsoft Windows 2000 Professional。Microsoft Visual C+ 2008。1.2.2运行环境Intel Pentium 2及以上处理器,32M以上内存,20M以上硬盘空间。Microsoft Windows 2000或XP以上操作系统。800600或以上的屏幕分辨率。1.2.3测试环境操作系统与硬件配置Microsoft Windows 2000 Professional。Microsoft Windows XP Professional。Microsoft Windows 7。有MFC环境的动态库文件,如MFC42.dll等。Intel Pentium 4 2.0GHZ,512内存,100G硬盘剩余空间。1.3横版过关游戏具有的基本功能a)能够显示主菜单和界面游戏需要提供主菜单让玩家进行游戏设置,同时能够把地图文件中的信息转换成为图像显示到主游戏界面上。b)能够实现键盘操作功能能够接收到键盘输入的方向键信息,并根据不同的方向键让人物行走移动。例如,当玩家单击方向键“上”时,如果向上的位置是可移动的,那么游戏人物就向上移动c)能够实现道具功能捡到道具的时候,道具可以有相应功能。 d)游戏胜负判断功能在游戏中,当玩家把所有的敌人都消灭掉时(或者直接杀死BOSS时),玩家胜利通过,进行下一关口的游戏。如果玩家无法在限定时间将所有敌人杀死或者血量为0时,玩家失败。玩家可以选择重新开始游戏,或者是退出游戏。e)支持人物选择功能玩家在游戏中可自行选择挑战人物。当玩家点击菜单中“游戏开始”时候,会弹出选择框供玩家选择,选择完毕后就直接开始游戏。f)游戏支持背景音乐功能通过主菜单,在游戏开始前,可以选择播放背景音乐的音量的大小。默认音量为中。玩家也可以通过修改背景音乐的音量来调整游戏的音量,充分满足玩家的个性化需求。g)游戏提供帮助说明在游戏菜单中,提供一个使用说明项,以方便对本游戏不了解的玩家对游戏进行操作和使用。鉴于本游戏家喻户晓,故在此处只是提供比较简单的说明。1.4横版过关游戏相关的技术要点1.4.1数组a)数组的定义数组3是n(n1)个相同类型数据元素a1,a2,a3,an 构成的有限序列,且该有限序列存储在一块地址连续的内存单元中。数组的定义类似于采用顺序存储结构的线性表。由于数组是存储在连续内存单元中的线性表,所以线性表的顺序存储结构理所当然地采用一维数组来描述。b)数组的性质(1)数组中的数据元素数目固定。一旦定义了一个数组,其数据元素数目不再有增减的变化。(2)数组中的数据元素具有相同的数据类型。(3)数组中的每个数据元素都和一组唯一的下标值对应。(4)数组是一种随机存储结构,可随机存取数组中的任意数据元素。c)对于一个m行n列的二维数组在项目中的表示,如下:公式1-1 数组的表示也可以将Amxn简计为A,那么A是这样的一个一维数组A=(a1,a2,aiam)其中,ai=(ai,1,ai,2,ai,n)(1=i preyX) predatorX -; else if (predatorX preyY) predatorY -; else if (predatorY CollideWith(tmp)来代表英雄是否触碰到了敌人。然后在判断是敌人攻击英雄,还是英雄攻击敌人。如RECT tmp = *(pEnemyi-GetSpriteRect();然后,if (pMan-CollideWith(tmp)if (敌人攻击英雄)if (英雄血量还没为0)英雄受伤;if (英雄攻击敌人)if (敌人血量还没为0)敌人受伤;b)英雄与道具的碰撞先用一个变量ItemType代表道具种类,ITEM_HP代表回血道具,ITEM_SCORE代表分数道具,ITEM_KNIEF代表小刀。然后用函数ItemType =pItemj-GetItemType()得到道具类型,和上述得到敌人精灵高宽一样的方法,同样有pMan-CollideWith(*pItemj)代表英雄是否碰到了道具。然后if (pMan-CollideWith(*pItemj)if (ItemType = SpriteItem:ITEM_HP)增加血量;else if (ItemType = SpriteItem:ITEM_SCORE)增加分数;else if (ItemType = SpriteItem:ITEM_KNIEF)获得一把飞刀;c)道具与敌人的碰撞飞刀在没有被英雄捡到的时候,与敌人不能碰撞,当英雄获得一把飞刀后(记录捡到飞刀的数量,用完则不能用),可以按键使用飞刀,飞刀会跟敌人碰撞,造成敌人受到伤害。用kniefCount代表飞刀的数量,pEnemyk代表敌人,代码实现如下if (ItemType = SpriteItem:ITEM_KNIEF)for (int k=0;kCollideWith(*pItemj)if (道具是射出去的而不是在地上的飞刀)敌人受到伤害;3.2.3有限状态机(FSM)在项目中的实现状态机有很多种模式,在程序员编程的情况下,如果分支语句非常多,可以State模式,目的就是目的可以消除庞大的条件分支语句,大的分支判断使得程序员们难以修改和扩展,但是由于作者的项目分支语句不是很多,加上作者人物和敌人状态不是很多,所以作者运用了函数来实现状态变化,目的是为了更好调理开发者的思路,能够在修改代码的情况下,迅速找到代码做出修改。运用项目中下面一个例子来体现。作者创建函数enemyRun()代表敌人逃跑,enemyFind()代表敌人追踪,enemyWalk()代表巡逻,enemyAttack()代表敌人攻击;那么if (敌人种类是小兵)if (血量小于最大血量的四分之一并且距离英雄小于200像素)enemyRun();else if (英雄不在敌人的攻击范围内)if (血量大于最大血量的二分之一并且距离英雄小于200像素)enemyFind();elseenemyWalk();elseenemyAttack();图3-2小兵状态图如果敌人不是小兵,是弓箭手那么,在以上的功能上,除了普通攻击之外,会多出一个射箭攻击状态,这次,作者不创建函数,而是int了一个变量curAttack,当if (curAttack = 0)近身攻击;else射箭攻击;那我就在小兵攻击的那个判断上,加上else if (敌人种类是弓箭手)if(弓箭手和英雄在同一直线上)curAttack = 1;elsecurAttack = 0;以上代码巧妙利用不同的方法(变量,函数等)实现了状态变换,从而实现敌人不同状态的变换,状态机是横版过关的必要选择。3.2.4模式移动和追踪算法在项目中的实现在项目中,作者运用了敌人在特定矩形内随机模式来巡逻,在函数enemyWalk()实现,作者用代码判断了在敌人巡逻状态下,在一定的矩形区域内,敌人根据一个方向的随机变量的改变,变量x,y的变换而改变坐标,从而实现敌人的模式移动。而跟踪算法则是在函数enemyFind()里实现,原理则是运用了基本追踪算法,用face=0来代表英雄面向左,face = 1代表英雄面向右,PlayerPos.x ,PlayerPos.y分别代表英雄的x,y坐标,x,y分别代表敌人的x,y坐标,实现追踪代码如下,if (PlayerPos.x x)face = 0;x-=speedX;elseface = 1;x+=speedX;if (PlayerPos.y SetPos(D3DXVECTOR3(x,y,0)把敌人的动态坐标给设置出来,就可以实现敌人的基本追踪了。第四章 总结与展望4.1总结该论文主要论述了街机三国志的设计与实现,虽然该游戏创意并非原创,但是作者旨在在前人的基础上用VC+语言来实现该游戏的功能。虽然该游戏没有市场效益,但在设计的过程中作者重新温习到了之前的所有学

温馨提示

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

评论

0/150

提交评论