C#游戏开发之炸弹人游戏开发

原创 2016年07月21日 22:02:55

者第一次发表文章,考虑不全多多包涵。也想借此机会和大家交流游戏开发。希望大神能指点一二。笔者是利用VS2010编译器,下面进入正题:

利用C#控件来实现2D游戏开发还是比较方便。先从总体上介绍炸弹人游戏的开发。

先看一下大概效果:



从图上可以看出这款小游戏要实现:玩家(即游戏中的主角)、玩家的行走、可摧毁墙、不可摧毁墙、隐藏物品、可通过路段、释放炸弹、炸弹爆炸、爆炸后玩家触及后的处理以及寻到隐藏物品后对应要产生的效果比如说:如果找到威力加强效果那么就要使爆炸效果翻倍如果找到隐藏的门就要提示玩家赢了然后游戏结束。等等。。。。。。。

综上所述:

我们利用面向对象的思想我们把这个游戏分为以下几个方面:

主窗体(form)

自定义控件(GameField)

Pepole类

Brick类

下面再分别解释以下各个模块的功能:

Form进行对人物行动和自定义控件中的炸弹处理进行处理

GameField实现游戏初始化已经对键盘操作的响应和其他复杂的逻辑判断。他是游戏的核心部分。

Pepole类是对玩家的抽象。

Brick类是游戏中的环境。就是上述图片中的所有墙,隐藏物品等等。。。。。。

在开始我们提到了要开发的几个内容:主窗体(对人物行动和自定义控件中的炸弹处理进行处理)、自定义控件(实现游戏初始化已经对键盘操作的响应和其他复杂的逻辑判断。他是游戏的核心部分。通过这个类的方法把按钮控件转换成我们游戏的可视化场景)、Bepole类(对玩家的抽象)、Brick类(游戏中的环境)。

 

一、设计思想:

首先,在我们的窗体添加背景。然后把我们的按钮控件添加进去,并布局。设置其中一个为人物,其他为游戏的环境。再通过对按钮的操作实现炸弹爆炸,人物行走等一系列动作。

二、总体设计:

1、主类包括主窗体form1,自定义窗体GameField,砖块Brick,人物Pepole,和一个枚举类型的Award。

2、辅类则是对资源的加载和提供主类对其引用。


三、设计过程:

1、form1:form1通过调用自定义类的InitGame方法对游戏进行初始化,并创建两个线程实现对人物的行走控制和对炸弹的定时爆炸设置。

2、Brick:是继承button类,包含属性:是否可摧毁,下面是否有奖励物品(增加雷的个数,增加移速,增强炸弹威力),上面是否有雷,是否可穿越,下面是否有门,砖块是否正在摧毁。

3、People:同样也是继承button类,包含属性:生命个数,移速,可携带的炸弹数目,炸弹威力,上、下、左、右,四个行走的能力。

通过上面的描述,我们可以知道所有的砖块和人物其实都是button也就是一个方方正正的按钮。所有的环境都是对该button的装饰和操作。

4、GameField是我们这个游戏最重要的类也是本游戏的核心类。通过这个类的方法把按钮控件转换成我们游戏的可视化场景。下面一一介绍:

首先,在这个类中创建一个InitGame方法,实现对游戏的初始化。过程:把指定数目的砖块添加到游戏区,通过逐行扫描方法对砖块布局。此过程我们有设置可穿越砖块(设置可穿越属性为true,可摧毁为true,有门设为false,有雷设为false,正在爆炸设为false,有奖励物品设为false),不可穿越可摧毁砖块(当然这些砖块是随机的,而且我们在这些砖块下面要选择一些砖块设置为有门,有奖励相应属性设为true。并且不能把玩家的出路堵住并留有放炸弹的地方),不可穿越不可摧毁砖块。(设置可穿越属性为false,可摧毁为false)。然后我们对这些按钮进行图像化处理。通过判断这些控件的属性,如果为可穿越设为绿色图片,如果不可穿越可摧毁设为土墙,如果不可穿越不可摧毁则设为灰色的铁墙。这样就实现了对除人物外的所有环境的初始化。然后对人物的初始化,我们设置她的生命值为3,携带炸弹为1,移速为1,炸弹威力为1,上、下、左、右为false,禁止行走。并修改按钮图片为人物图像。设定他的位置为(0,0)。这样就实现游戏的初始化。


其次,在完成初始化后我们要对按键的操作包括人物行走进行检测和放雷的操作,当我们按下w、s、a、d(上、下、左、右)时候分别检测其下一个位置是否为墙,如果为墙,则禁止移动,如果不为墙则允许移动到下一个位置。如果我们按下space,先检测自己携带的炸弹数目是否为空,为空则返回,否则设置该位置的砖块的有雷属性为true,修改其对应的图片,自己携带的雷数目减1.当然如果只是这样操作我们只能看到一副图片在游戏区移动。所以为了实现动态移动。我们在这个检测人物动作的函数中加上一个线程。这个线程是为了实现行走的动态效果。我们使用一个死循环。在这个死循环中我们不断检测,人物的上、下、左、右四个属性是否为true,如果为true,我们则对人物控件的图片在该方向上每隔500ms更换一个,每个方向共四个图片。这样就能实现人物动态的行走过程。

最后,这个类中包含form中要执行的这个线程函数,对该游戏区检测是否存在玩家放置的地雷。如果有雷,我们获取这个地雷(button控件)所在正方形范围内的所有控件添加到一个集合中,然后根据该砖块是否可摧毁设置其对应的正在摧毁属性为true,改变控件图片为爆炸图片。过一秒钟后,设置正在摧毁属性为false,人物携带炸弹数目加1,如果下面有奖励属性,则把该砖块的图片设为奖励图片,如果下面有门属性,则把该砖块的图片设为门图片。并修改该砖块属性为可通过。另一个是对人物状态的检测,如果人处在爆炸范围内,则生命值减1。如果为0,则game over并退出。如果找到暗门,并处在暗门上,显示你赢了退出。如果找到奖励物品,并处在物品上,则把对应属性加1,并设置该砖块相应奖励属性为false,改变砖块图片为可通过图片。


这样我们就基本实现炸弹人的功能。当然本人能力有限,所以本文多有不足之处。

源码下载地址:http://download.csdn.net/detail/xty13145588950/9582787



版权声明:本文为博主原创文章,未经博主允许不得转载。

《C#游戏开发快速入门教程》

欢迎大家到我们团队的官网上查看此书的详细介绍,下面是链接 《C#游戏开发快速入门教程》 我们的宗旨是:我们只做最专业的技术传播者!为了让广大程序员花最少的时间,掌握最新的技术! ...
  • Mr_AHao
  • Mr_AHao
  • 2015年05月21日 17:23
  • 1523

C#游戏编程之创建一个简单的卷轴射击游戏

前几天很多朋友要求贴一篇有关C#游戏开发的实例。本篇文章是创建一个简单的卷轴射击游戏开发实例,内容比较完整,分享给大家,不过篇幅有些长,可以慢慢看哈!本文除CSDN博客外,任何媒体和出版物禁止转载和使...
  • qinghuawenkang
  • qinghuawenkang
  • 2013年01月14日 09:05
  • 40613

Unity3d游戏开发之C#开发(一)

概要 撰写原因:当今市面上关于Unity的教程的脚本几乎都是用js来当做教程语言的,因为js比较容易学习,所以如果是新学的朋友建议学js的版本,如有特殊要求需要学习C#写脚本的话那么这系列文章可能会...
  • baidu_25537855
  • baidu_25537855
  • 2015年09月16日 16:38
  • 2204

[源代码] Visual C#经典游戏编程开发 配套源代码

  • 2012年06月10日 11:04
  • 18.95MB
  • 下载

C#2D游戏开发之感

这段时间学习了用C#进行2D游戏,《飞机大战》,《碰撞的小鸟》的开发。                        之间没用C#进行过实际项目的开发,虽然C#与C++有相似之处,想必但也要通过实...
  • qq_34078945
  • qq_34078945
  • 2017年03月06日 16:36
  • 547

使用 Unity 和 C# 开发您的首个游戏

下载代码示例 作为一名软件架构师,我已经编写了很多系统,反向工程本机代码恶意软件,并且通常会搞清楚代码方面的事情。 但是当说起制作游戏,我还有点搞不清楚从哪里开始讲起。 我曾早期在 Wind...
  • pizi0475
  • pizi0475
  • 2015年07月15日 11:01
  • 5918

C#课程设计:《猜猜看》游戏开发总结

信管1121,201211671117,聂双燕 第一部分:开发要求(完整要求见课程考核说明编程组和游戏说明) 1. 随机显示 一个名字 与 3张相片,选择正确的相片; 2. 随机显示 一张相片 ...
  • sunshinegyan
  • sunshinegyan
  • 2015年07月04日 23:08
  • 1369

Visual C#经典游戏编程开发

  • 2015年09月25日 17:11
  • 6.1MB
  • 下载

使用C# + Managed DIrectX 制作 2D 游戏使用C# + Managed DIrectX 制作 2D 游戏

主旨:虽然目前Microsoft已经发布了XNA Game Studio,让游戏编程员能够更轻松的在Windows(XB360不在本文考虑范围内)制作游戏,不过这个XNAGS有个缺点,它要求系统必须有...
  • shaily
  • shaily
  • 2008年06月05日 23:52
  • 5555

C#使用 MonoGame* 开发游戏

全球各地的开发人员都希望开发游戏。 为什么不呢? 游戏是计算机历史上销量最高的产品之一,游戏业务带来的财富不断吸引着开发人员的加入。 作为开发人员,我当然希望成为下一个开发愤怒的小鸟* 或光晕*的开发...
  • y13156556538
  • y13156556538
  • 2017年03月20日 21:20
  • 1444
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#游戏开发之炸弹人游戏开发
举报原因:
原因补充:

(最多只允许输入30个字)