用VB.NET实现你的游戏梦想
来源:互联网
作者:西部数码
时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
制作2D游戏的基本知识就这些了,我们现在来说一下游戏的构架。我们以一个简单的回合制RPG游戏为例。
我建议把所有DirectX的接口全部封装起来。这样操作起来方便很多。
游戏中需要英雄类、物品类、怪物类、地图类
首先先说英雄类包含的内容有HP、MP、技能、身上装备、所会武功、人物坐标。
其中比如所会技能此技能等级,做成一个自定义类型,方法是
Public Structure myGest
Public GestID As Int16 '武功编号
Public GestLV As Int16 '武功等级
End Structure
比如最多会十种就可以定义为Public Guest(9) As myGest
同样的道理人物坐标也一样
Public Structure myXY
Public iX As Int16 'X轴坐标
Public iY As Int16 'Y轴坐标
Public iAsp as Int16 '头朝的方向
End Structure
当然还有其他的一些属性,这里就不一一列举了。
物品类
比如物品分种类的,每种物品功能不同,比如头盔就不能装备在身上当然也不能吃,这里我们用到一个枚举类型,定义方法是
Public Enum myResClass '物品分类
Head '头装备
Body '身上装备
Hand '手上装备
Eat '食品
Other '其他
End Enum
Public ResClass As myResClass '物品类型
End Class
其它当然还有很多属性,如名称,重量,性能等等。
怪物类
类似于英雄类有也相似的属性。
地图类
这里我们把显示得地图单独拿出来作为一个类,是因为,一张地图并不是每个地方都可以走的,从位图中可是很难识别出那些是阻挡物的。并且地图上还有一些NPC,可以与其对话等等。这一切都要从地图文件中读取。
地图文件象一张二维表,与你地图位图相对应,比如人物向上移动TOP-=5然后判断,现在所在点在二维表中是否可以行走,是否有阻挡,如果阻挡取消操作,人物不做移动。
然后设定整体流程,为了操作不会因按键点击速度而影响移动速度,所以我们用时间来控制,设置一个Timer控件,然后根据当前状态不同而设定操作的不同,比如操作开始界面、移动模块、对话模块、战斗模块、交易模块、主菜单模块。当前状态用iNowState变量存储
Select Case iNowState
Case 0
'开始界面
Case 1
'移动模块
Case 2
'对话模块
Case 3
'战斗模块
Case 4
'交易模块
Case 5
'主菜单
End Select
用eInput来存储键盘事件。定义如下:
Public eInput As System.Windows.Forms.Keys = Keys.None
'读取存储键盘信息
Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
eInput = e.KeyCode
end sub
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



