坦克大战开发毕业设计论文文档格式.docx
《坦克大战开发毕业设计论文文档格式.docx》由会员分享,可在线阅读,更多相关《坦克大战开发毕业设计论文文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
![坦克大战开发毕业设计论文文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/10/55403e30-6927-4175-9e8f-2431d4fca4f5/55403e30-6927-4175-9e8f-2431d4fca4f51.gif)
坦克大战;
游戏;
技术;
代码
第一章游戏的背景
相信喜欢玩游戏的朋友都是从玩最初的“小霸王”,超级玛丽,坦克大战,等等一系列经典的小游戏开始,然后就是三国志之类的大型一点的,到现在的电脑游戏,单机游戏,到网络游戏,这么一个过程,游戏其实已经不知不觉的进入了我们的生活。
电脑游戏在当今,已经十分普遍了,游戏玩家也比较多。
特别是网络游戏,因为其剧情的有趣性,游戏画面的美观,招式的华丽,等一系列原因,吸引了不少游戏玩家,特别是3D网游的推出,使得网络游戏发展进入了一个新时期。
游戏是怎么发展起来的?
国内外游戏的发展情况是什么样的呢?
下面将会给你答案。
真正的电子游戏机产生于20世纪70年代。
1971年麻省理工学院的学生NolanBushnell设计了世界上第一个业务用游戏机(俗名街机),叫做《电脑空间》(ComputerSpace)。
《电脑空间》的主题是两个玩家各自控制一艘太空战舰围绕这具有强大引力的星球向对方发射导弹进行攻击。
两艘战舰在战斗的同时还必须注意克服引力,无论是被对方的导弹击中还是没有成功摆脱引力,飞船都会坠毁。
这台游戏机用一台黑白电视作为显示屏,用一个控制柄作为操作器,不过由于市场因素这款游戏以失败告终。
虽然初次尝试失败,但NolanBushnell仍然坚信电子游戏发展前景。
他在《电脑空间》推出的次年,和朋友Ted用500美金注册成立了自己的公司Atari(雅达利)。
他们获得了成功,世界上第一台被接受在业务用机就是Atari推出的乒乓球为题材的游戏。
1976年10月,Atari发行了名为《夜晚驾驶者》的模拟业务机游戏,这个游戏为黑白屏幕,自带了相关操作器(方向盘、油门、刹车等)。
在这个游戏里,玩家需要扮演一个黑夜里驾驶在告诉公路上狂奔的疯狂车手。
这是游戏历史上第一个3D游戏,它用简单的透视效果,专业术语是LOD(LevelofDetail,层次细节)来表现汽车的前进和道路景物的后退。
这款游戏成为3D游戏的始祖。
除此之外,它还是历史上第一个主视角(Firstpersonalview)的游戏。
雅达利公司在开发街机市场之后又把目光转向了家用机市场。
1977年,雅达利公司推出了Atari2600型游戏主机,这是世界上第一台家用专业游戏机。
同年Bushnell把自己的公司以2800万美元的价格卖给了时代华纳。
不久,任天堂和世嘉迅速崛起,彻底击败了雅达利。
上面介绍的是专用机游戏的历史,而最早的电脑游戏可以追溯到1972年,一个叫Crowther的工程师用当时最流行的主机——DEC公司的PDP-10编写了一段简单的FORTRAN程序(FORTRAN是一种专用工程数学编程语言,当今流行的工程模拟软件MATLAB的早期版本就是由FORTRAN语言开发出来的)。
在这个程序里,Crowther设计了一张地图,地图上不规则的分布着陷阱,游戏者必须寻找路径避开陷阱。
这个程序被公认为是最早的电脑游戏程序。
1976年,DonWoods编写了一个类似的程序,更为重要的就是他加入了幻想成分(Imagination)和谜题(Puzzle)。
Woods的这个程序直接导致了电脑游戏的诞生。
他的程序被传播到各处,让所有的计算机高手们都为之惊喜。
这个作品同时也启发了其他人的思维,紧接着,各式各样的游戏程序就诞生了。
比较著名的麻省理工学院的几个学生编写的Zork(直到现在还有续集在发售)和亚当斯1978年编写的AdventureLand
后来用电脑编制电子游戏就开始在程序员之间流行起来。
当时的电子游戏大多数还都是编程高手们做出来自娱自乐的“玩具”,这是因为当时接触计算机的还只是科技精英,普通人是接触不到的。
说到这就不得不提苹果电脑,这个中国人眼里普遍认同的奢侈品。
AppleII推出于1976年,设计者是斯蒂夫-乔布斯(SteveJobs),AppleII是许多人的入门计算机,同时也是一台功能强大的真正的个人电脑。
AppleII和它内置的Basic程序为电脑界培养了无数的人才。
AppleII当时的内存只有64KB,资源的缺乏是的当年的电脑程序精密严谨的可怕。
可以说,当年的程序员才是真正懂得狂想乐趣的人,他们能够在一个匣子里完成一个世界。
更重要的是AppleII代表了一种自由开发的精神,当年的电脑用户和程序员之间的差别是如此之小,可以说每一个AppleII的用户都是一个不错的Basic程序员。
可以毫不夸张的说,苹果电脑早就了一大批游戏程序设计高手。
而现在的家用电脑变得更像一台家用电器。
1989年,BroderBund公司的设计师乔丹-麦克纳(JordanMcchner)根据阿拉伯民族的古老传说《一千零一夜》在Apple平台上制作了一部动作冒险相结合的电脑游戏——波斯王子。
这个游戏获得了空前的成功,他在全球共卖出200万份。
“波斯王子”绝对可以说是电脑游戏动作冒险类(ACT)的第一作,它代表了当时电脑技术的最高水平。
当年的玩家看到栩栩如生上串下跳的王子都不禁惊叹不已,故事讲述的是王子为了拯救公主获得爱情而和罪恶的苏丹王斗争,在游戏中王子需要跑过各种奇怪诡秘的机关,小心地避过上下活动的柱子和深坑里的尖刺,用一把阿拉伯弯刀杀死各种敌人。
1983年,如本的任天堂(Nintendo)和世嘉(Sega)分别推出了自己的家用游戏主机,世嘉推出的两台游戏主机名字叫做SG1000和SG3000。
而Nintendo推出的主机名字是FamilyComputer(FC)。
当时的FC采用6502芯片作为主CPU,还有一块专门处理图像的PPU。
FC可以显示52种颜色,同屏可以显示最多13种颜色,内存合计为64KB,矩形波2音,三角波1音,杂波1音。
同时任天堂采用了“以软件为主导”的指导思想,不断推出有趣的软件吸引玩家。
1983年底,FC售出44万台,第二年八岁了一些先锋游戏公司分别加入FC制作者阵线,FC销量大增。
1984年底FC总销售量达到150万台。
1985年9月任天堂公司法手了一款真正的游戏巨作——超级玛丽(SuperMario),这个游戏讲述了一个意大利管子工打败魔王拯救世界迎娶公主的故事。
任天堂凭借这款游戏确立了自己在游戏界霸主的地位。
到了1985年,任天堂在家用机市场上占有率高达98%。
同年,任天堂向海外发售了FC的出口型NES(NintendoEntertainmentSystem),当年的销量就突破了500万台。
20世纪80年代IBMPC(PersonalComputer)兼容机的出现打破了Apple公司的垄断地位。
虽然在最初几年里,PC上的软件数目还无法和AppleII抗衡,不过PC有一个最大的优势,那就是它是完全自由和开放的,所以更多的“穷”程序员可以选择PC机作为自己的开发平台而不是价格按规的Apple机。
这时代比较著名的电脑游戏有OriginSystems公司的RPG《创世纪》系列。
光荣(Koei)公司推出了第一版《三国志》。
当年的《三国志I》画面很简陋,不过到后来的《三国志4》系列开始大受欢迎,知道现在的《三国志9》。
到了20世纪90年代,游戏业才真正成熟起来,成为了一种产业。
由于PC机价格非常低而且硬件速度越来越快,游戏逐渐成为人们生活中不可缺少的一部分。
游戏产业也逐渐发展成熟。
这个时代诞生了许多史诗般的巨作:
雷神之锤、毁灭战士、星际争霸、最终幻想、魔兽争霸等。
第二章游戏的设计
2.1游戏的设计方案
首先先介绍一下我的坦克大战的游戏:
游戏的规则:
游戏每一关以击破所有敌军坦克为目标。
如果自己的坦克的生命用完或者基地被灭则游戏结束。
游戏的流程图:
图2.1
2.2游戏的开发所需的硬件和软件
我的坦克大战所用到的开发环境是微软的VisualStudio2005集成开发环境。
运行环境是.NetFrameWork2.0。
硬件条件是CPU主频2.0GHz,内存512M。
因为没有用到DirectX
所以对显卡没有特别的要求,一般的显卡都可以胜任。
2.3游戏中的中枢Level类
在这个游戏中创建的Level类的作用是负责游戏逻辑的控制。
例如创建坦克,碰撞的检测,游戏的状态和所有物体的移动。
Level的部分代码如下:
publicclassLevel//关卡类
{
privatevoidGameRun()//游戏运行处理
if(gamestep<
100)
gamestep++;
if(gamestep%20==0)
TankAIFire();
}
else
gamestep=0;
if(eptank_count>
0)
CreateTank();
eptank_count--;
CleanBombs();
DrawGame();
Move();
HitCheck();
CleanDeathTank();
CheckGame();
2.4游戏中的组件的基类Element类
我在这个游戏中创建了一个名为Element的类,它是所有游戏中的元素的父类。
Element的代码如下:
publicclassElement//游戏中的元素类
privateGraphicsg;
publicGraphicsG
get{returng;
set{g=value;
privateSizesize;
publicSizeSize
get{returnsize;
set{size=value;
privateintx;
publicintX
get{returnx;
set{x=value;
privateinty;
publicintY
get{returny;
set{y=value;
privateList<
Image>
images;
publicList<
Images
get{returnimages;
set{images=value;
privateintimagestate;
publicintImagestate
get{returnimagestate;
set{imagestate=value;
privateboolislife;
publicboolIslife
get{returnislife;
set{islife=value;
第三章游戏所涉及的技术问题
3.1GUI+与图像双缓冲