您的位置:软件 > 开发者网络 > 微软开发专栏 > Visual Studio.net专栏 > VB.net > 正文
用VB.NET实现你的游戏梦想
[文章信息]
作者:付佳亮
时间:2003-08-19
出处:微软社区
责任编辑:方舟
[文章导读]
开发游戏需要对DirectX的调用,原来除了C++没有其他语言可以胜任这份工作
advertisement
热点推荐
· 天极网软件频道改版调查
· 在ASP.NET程序中创建唯一序号
· 用JVM工具接口创建调试和分析代理
· Win 2000如何安装配置防火墙
· 防范Windows消息钩子的侵入
[正文]

上一页  1 2 3  下一页

  然后设置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)

'在后备缓存中绘制地图

Dim rMap As RECT

ddsBackBuffer.BltFast(0, 0, Map.ddsMap, rMap, CONST_DDBLTFASTFLAGS.DDBLTFAST_WAIT)

'在后备缓存中绘制人物

Dim rPlayer As RECT

Dim ddrval As Boolean

'rPlayer表示从图片中截取那块,从哪到哪。如果你打开很多游戏的位图看看的话你会发现一个人物的多种动态往往放在一张位图中,截取其中的不同块显示出来就形成了动画。

'表示从(0,0)这个位置开始取

rPlayer.Top = 0

rPlayer.Left = 0

'表示取到(32,32)这个位置

rPlayer.Right = 32

rPlayer.Bottom = 32

'其中0,0表示绘制的位置。

ddrval = ddsBackBuffer.BltFast(0, 0, ddsHero, rPlayer, CONST_DDBLTFASTFLAGS.DDBLTFAST_SRCCOLORKEY Or CONST_DDBLTFASTFLAGS.DDBLTFAST_WAIT)

'好了,后备缓存已经绘制完成了,可以翻转过来了,其实写屏的方法就是不停的翻转主面和缓存面

ddsPrimary.Flip(Nothing, CONST_DDFLIPFLAGS.DDFLIP_WAIT)


上一页  1 2 3  下一页

·"WAP天极之IT新闻资讯,50万元等你拿"    ·天极WAP之游戏狂图,50万元等你下载

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容阅读排行榜
  • VB.NET打造个性化安全防护软件
  • Visual Basic.NET编程的设计思考
  • VB.NET启动并监测外部程序
  • 主板超频特色技术GIGA技嘉篇
  • Win 2000如何安装配置防火墙
  • 防范Windows消息钩子的侵入
  • 性价比之选 AGP显卡的告别秀
  • 大学校园生活之聊天也疯狂
  • Fireworks制作GIF动画Banner
  • 金山打击外挂 遭网络游戏玩家起诉
  • 完全公测《开天》掀起滔滔巨浪
  • Advertisement