基于C#.NET的坦克大战游戏的设计与实现
2011-05-12霍家亮
霍家亮 刘 博
(青岛理工大学琴岛学院计算机工程系,山东 青岛 266106)
1 项目背景
任天堂FC上的坦克大战是游戏史上的经典游戏,随着时代的发展,硬件水平的不断提高,人们对于娱乐的要求逐渐提高,FC等上个世纪80年代出现的游戏机早已不能满足人们对于娱乐的需求。
在学习.NET的过程中,随着对于.NET开发工具Visual Studio 2008的深入了解以及.NET开发技术、开发规范的不断认识,萌生了将FC上的经典游戏--坦克大战在电脑上重现并加以改进的想法,这就是本项目开发背景。
2 任务概要
疯狂坦克是一个基于.NET平台的Windows Forms小型应用程序,使用C#语言编写,要求能够实现画布的生成,坦克的生成,敌我识别,我方坦克移动,敌方AI坦克移动,坦克的越界处理,坦克射击功能,子弹与坦克的碰撞检测,坦克护甲系统,墙体系统等;另外还要求能够在游戏过程中显示游戏的实时信息、画布上子弹总数、残存物体总数、击毁坦克数,来作为游戏水平的检测;在游戏中还能够随即产生AI坦克以及墙体。
3 项目分析
(1)模块划分:
疯狂坦克游戏按照功能划分为两个模块:游戏元素和游戏处理。其中,游戏元素是游戏中的装备,主要包括了:绘制坦克、绘制墙体、绘制子弹;游戏处理完成游戏的各种操作,主要包括:子弹命中、坦克护甲、坦克移除,如图3-1所示:
图3-1 游戏模块图
(2)业务流程:
游戏的工作流程:初始化生成游戏,绘制坦克、墙体,完成坦克移动、射击,根据子弹碰撞的情况,判断目标是否命中,如果坦克被命中,那么坦克将被销毁;然后,游戏结束,简单描述如下:
<1>当程序开始运行的时候,首先生成一个窗体,然后创建一个容器,用来容纳游戏中的元素。
<2>容器创建完成后,开始绘制敌方坦克和己方坦克以及墙体。
<3>绘制完成后,敌方坦克按照AI开始移动,并开始射击,射击时根据坦克的方向绘制子弹。己方坦克根据键盘按键进行移动,若按下ctrl键则己方坦克开始射击。如果子弹命中目标,如果目标拥有护甲,则目标减去一层护甲,如果目标已经没有护甲,则目标被消灭,从容器中移除它。墙体和坦克一样,也拥有护甲值,但和坦克不同的是,墙体不能移动。当消灭一定数量的坦克或者墙体后,游戏会自动添加一定数量的坦克或者墙体,从而增加游戏难度。
<4>当己方坦克被消灭时,游戏结束。
(3)运行环境:
操作系统:选择win7或者indows xp
运行框架:.Net framework3.0
4 项目实现
根据模块功能,创建游戏运行界面,包含坦克、子弹、墙等游戏元素的绘制和重画;构建类库,包含游戏实现的主要方法,完成游戏的操作;创建配置文件,主要包括游戏元素的初始化信息,如:坐标信息。下面是游戏部分功能的实现方法:
(1)坦克的生成方法,部分代码如下:
(2)坦克绘制以及坦克装甲绘制,部分代码如下:
(3)坦克的移动及射击,用random.Next()控制坦克的随机运动,用next值表示对应的方向,用random.Next()控制坦克的随机发射炮弹,部分代码如下:
(4)子弹与坦克的碰撞检测方法,用Intersects With来检测两个矩形相碰撞。碰撞后,依次检视是否为墙、是否无效子弹、是否有护甲,主要代码如下:
结束语
本文采用C#语言实现了游戏的全部功能,在单机和局域网上测试通过,并改进了部分功能,游戏占内存比较小,运行比较流畅、没有出现死机或者其它问题。
[1]于国防.李剑.C#语言Windows程序设计[M],清华大学出版社,2010.5
[2]童恒庆,梅清.基于.NET平台的B/S系统开发框架的研究[J].微机发展,2004.6
[3]许洪明,赵金城.基于Web的重大工程项目管理信息系统应用研究[J].建筑技术开发,2004.3