| 网站首页 | VB.Net实例分析 | .Net技术文摘 | 下载中心 | VB.Net书籍笔记 | .Net源码 | VBS脚本与组件调用 | Windows2008技术文摘 | 给我们留言 | 
最新公告:

  没有公告

您现在的位置: 乐博网 >> VB.Net实例分析 >> 游戏编程 >> 实例分析正文
最新推荐 更多内容
VB.NET游戏开发的实例
VB.NET游戏开发的实例
作者:佚名    来源:乐博网收集     更新时间:2007-11-3

提示:乐博网收集不少VB.Net游戏编程的实例源码,可以通过

http://www.lob.cn/code/Index.shtml 查找,主要为各种休闲类的小游戏源码

正文:

        游戏开发是许多程序员的梦想,看着游戏中那华丽的画面。有多少人会感叹,如果自己能做就好了。 

  然而开发游戏需要对DirectX的调用,原来除了C++没有其他语言可以胜任这份工作,虽然DirectX7.0SDK加入了对VB的支持,但是VB毕竟能力有限,无法胜任这份严峻的工作,游戏可以说是最吃资源的程序,VB的速度无法完成。即使做出个游戏也被人说做不入流。这样一来VB程序员无法实现自己的梦想了。

  .net推出了,VB.net的性能已经可以和VC++媲美,用微软的说法内核是一样的,只不过是语法的差异。VB程序员大喜,这样再也不会被C++程序员说成是傻瓜程序员了,你们能做的我们一样可以。

  好了现在切入正题,现在我们来做一个简单的游戏。

  首先先要对游戏有个整体构架才行,vb.net中对类的设定比较可爱,功能也非常强大,不用一用起不太对不起微软了。

  调用DirectX,首先先要安装DirectX7.0以上版本的SDK开发包,然后新建一个项目,选择Windwos应用程序。

  然后选择引用DirectX方法是,选择引用->COM->DirectX7 for VisualBasic Type Library

  好了,至此你已经引用了DirectX7.0

  首先为了方便使用我们调用DirectX7.0,所以我们声明

Imports DxVBLib

  然后我们定义一个DirectX7.0的对象

Public DirectX As New DirectX7

  声明一个DirectDraw对象,用于2D游戏的绘图

Public DDraw As DirectDraw7

DDraw = DirectX.DirectDrawCreate("")

  然后要设置DirectDraw的协作层

Call DDraw.SetCooperativeLevel(Me.Handle.ToInt32, CONST_DDSCLFLAGS.DDSCL_FULLSCREEN Or CONST_DDSCLFLAGS.DDSCL_ALLOWMODEX Or CONST_DDSCLFLAGS.DDSCL_EXCLUSIVE)

  其中用到的常数有

CONST_DDSCLFLAGS.DDSCL_FULLSCREEN表示全屏模式

CONST_DDSCLFLAGS.DDSCL_ALLOWMODEX表示允许使用ModeX

CONST_DDSCLFLAGS.DDSCL_EXCLUSIVE表示独占模式

  在DirectX的编程中会用到大量的常数,这里教你一个技巧,在使用的地方打空格,VB.NET会列出可以使用的所有常数,非常好用。



  然后设置DirectDraw得显示模式

Call DDraw.SetDisplayMode(800, 600, 16, 0, CONST_DDSDMFLAGS.DDSDM_DEFAULT)

  800,600表示屏幕尺寸,16表示16位真彩

  然后定义缓存用于存储图片

Dim ddsPrimary As DirectDrawSurface7 '设置主面

Dim ddsBackBuffer As DirectDrawSurface7 '设置缓冲面

Public ddsMap As DirectDrawSurface7'设置地图

Public ddsHero As DirectDrawSurface7'设置人物

'定义设置表面

Dim ddsd As DDSURFACEDESC2 '表面

'为屏幕建立一个后备缓冲区

ddsd1.lFlags = CONST_DDSURFACEDESCFLAGS.DDSD_CAPS Or CONST_DDSURFACEDESCFLAGS.DDSD_BACKBUFFERCOUNT

ddsd1.ddsCaps.lCaps =
CONST_DDSURFACECAPSFLAGS.DDSCAPS_PRIMARYSURFACE Or CONST_DDSURFACECAPSFLAGS.DDSCAPS_FLIP Or
CONST_DDSURFACECAPSFLAGS.DDSCAPS_COMPLEX

ddsd1.lBackBufferCount = 1

ddsPrimary = DDraw.CreateSurface(ddsd1)

'设置后备缓冲区

Dim caps As DDSCAPS2

caps.lCaps = CONST_DDSURFACECAPSFLAGS.DDSCAPS_BACKBUFFER

ddsBackBuffer = ddsPrimary.GetAttachedSurface(caps)

ddsBackBuffer.GetSurfaceDesc(ddsd4)

'载入画面初始化

ddsd2.lFlags = CONST_DDSURFACEDESCFLAGS.DDSD_CAPS Or
CONST_DDSURFACEDESCFLAGS.DDSD_HEIGHT Or
CONST_DDSURFACEDESCFLAGS.DDSD_WIDTH

ddsd2.ddsCaps.lCaps = CONST_DDSURFACECAPSFLAGS.DDSCAPS_OFFSCREENPLAIN

ddsd2.lWidth = ddsd4.lWidth

ddsd2.lHeight = ddsd4.lHeight

'读取地图

ddsMap = DDraw.CreateSurfaceFromFile("Map\001.bmp", ddsd2)

'载入精灵

ddsd3.lFlags = CONST_DDSURFACEDESCFLAGS.DDSD_CAPS

ddsd3.lHeight = CONST_DDSURFACEDESCFLAGS.DDSD_ALL

ddsd3.ddsCaps.lCaps = CONST_DDSURFACECAPSFLAGS.DDSCAPS_OFFSCREENPLAIN

'读取人物

ddsHero = DDraw.CreateSurfaceFromFile("BMP\H00.bmp", ddsd3)

'把人物从背景中抠出来,用Key设置背景色

Dim key As DDCOLORKEY

'这里的背景色为黑色

key.low = 0

key.high = 0

ddsHero.SetColorKey(CONST_DDCKEYFLAGS.DDCKEY_SRCBLT, key)

[1] [2] 下一页

  • 上一篇: 没有了

  • 下一篇:
  • 【字体: 】【打印此文】【关闭窗口
      相关文章:(只显示最新16条)
    小游戏开发(VB2010实例)
    VB.Net扑克牌游戏的类
    VB.Net制作2D地图引擎
    VB.NET编写扑克牌游戏的实例

    | 设为首页 | 加入收藏 | 联系站长 | | 友情链接 | 版权申明 |
    乐博网欢迎各种媒体转载我们的原创作品[转载请注明出处];我们鼓励更多VB.Net开发者一起加入研究与探讨;如发现文章访问错误、内容错误或版权疑问、内容有违相关法律(如涉及政治、色情、反动或散布虚假有害信息)等情况,请及时向我们举报,我们将及时纠正!
    联系邮箱:Shiny#vip.qq.com (#替换为@) QQ交流群: 40797788 [闽ICP备05014267号]