笔者第一次发表文章,考虑不全多多包涵。也想借此机会和大家交流游戏开发。希望大神能指点一二。笔者是利用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#游戏开发之炸弹人游戏开发相关推荐

  1. pygame开发的炸弹人游戏(详细讲解)

    前言 本次开发的游戏为炸弹人游戏,是一个经典的小游戏,4399.7k7k等上面就可以找到,本游戏基于python语言,基于pygame开发,pygame是 跨平台 Python模块,专为电子游戏设计. ...

  2. 【Unity3D开发小游戏】《炸弹人游戏》Unity开发教程

    文章目录 一.前言 二.资源下载 三.让我们开始吧 版本 1.背景色 2.创建级别 3.炸弹人 4.炸弹人物理 5.炸弹人移动 6.炸弹 7.爆炸效果 8.制造怪物 9.怪物物理 10.怪物移动 11 ...

  3. 炸弹人游戏开发系列(6):实现碰撞检测,设置移动步长

    前言 上文中我们实现了"玩家控制炸弹人"的功能,本文将实现碰撞检测,让炸弹人不能穿过墙.在实现的过程中会发现炸弹人移动的问题,然后会通过设置移动步长来解决. 说明 名词解释 具体状 ...

  4. 炸弹人游戏开发系列(8):放炸弹

    前言 上文中我们加入了1个敌人,使用A*算法寻路.本文会给我们的炸弹人增加放炸弹的能力. 说明 名词解释 xx类族 是指以xx为基类的继承树上的所有类. 本文目的 实现"放炸弹"功 ...

  5. 炸弹人游戏开发系列(2):初步设计

    前言 有了上文的初步需求分析后,就可以进入初步设计阶段了. 本文目的 得到初步的领域模型,对层和模块进行初步的划分. 本文主要内容 技术选择 开发环境 外部依赖 代码结构 开发方法 初步领域模型 高层 ...

  6. 炸弹人游戏开发系列(3):显示地图

    前言 上文我们进行了初步的高层设计,现在我们将实现图片预加载和显示地图的功能需求.我采用TDD开发,大家可以看到在实现的过程中我们会修改设计,修改设计后又会修改对应的实现代码,这是一个不断迭代的过程. ...

  7. GameMaker Studio从头开始学习设计和开发3款游戏

    从头开始学习设计和开发3款游戏(无需经验) 你会学到什么 如何塑造令人敬畏的角色 如何使用GameMakerStudio 2 视频游戏编程 基本二维动画 如何查找和修复bug 如何给你的游戏编故事 从 ...

  8. Unity从头开始开发增强现实(AR)游戏学习教程

    使用Unity 2021构建增强现实飞镖游戏 学习从头开始开发增强现实(AR)游戏,使用AR基金会,货币化,发布游戏玩商店 Build a Augmented Reality Dartboard Ga ...

  9. 开发安卓app游戏_游戏陪玩系统APP开发平台

    点击上方蓝字关注我们 游戏陪玩系统开发,找[金生:157-6875-2419微电],游戏陪玩系统定制开发平台,游戏陪玩系统开发模式,游戏陪玩系统APP开发平台 游戏陪玩软件开发 游戏陪玩系统源码搭建平 ...

最新文章

  1. 【Java】内部类 语法总结
  2. 到底什么时候该使用MQ
  3. 格式化时间算前七天php,php 格式化时间 秒前 分钟前 小时前 天前
  4. SQL Server 死锁的告警监控
  5. 日志中的秘密 Windows登录类型知多少?
  6. 【机器视觉】 dev_get_system算子
  7. 数据库-索引-普通索引-唯一索引
  8. 如何使能linux vivid
  9. service zookeeper does not support chkconfig解决办法
  10. 「leetcode」669. 修剪二叉搜索树:【递归】【迭代】详解
  11. day14 匿名函数
  12. wpf linux 开发教程 pdf,深入浅出WPF
  13. vue省市区三级联动-封装集成
  14. 【Research】Accounting-会计
  15. Mac启动台显示白色问号图标
  16. ADS1292R测量心电+呼吸
  17. 计算机考研复试之英语口语面试
  18. 较全面的常见的OJ评判结果以及它们表示的意思
  19. 2023年阿里云服务器优惠价格表(ECS、轻量、六代、七代云服务器)
  20. 通用输入/输出多路复用器GPIO(General-purpose Input / Output)-TMS320F2812

热门文章

  1. windows“IIS”配置
  2. 最长上升子序列-python
  3. 微信支付服务商模式说明
  4. Location iOS12.3驱动分享
  5. Gzip Zlib PNG 压缩算法【转】
  6. 愿家乡的教育走出一片新天地!
  7. 软件工程工程伦理案例分析_案例工具及其范围| 软件工程
  8. java 不是封闭类_java – 不是一个封闭的类错误Android Studio
  9. php毕业设计 基于php+mysql在线视频点播系统毕业设计开题报告功能参考
  10. 美国商会呼吁对ICO进行澄清