综合测试-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(18)

综合测试冷风(CoolWind2D)引擎

效果图如下:
综合测试
新建Form1,输入以下代码:

Option Explicit     '变量使用前必须声明
'新手注意:使用前请确保 DX9VB.TLB组件已被引用,VBDX9BAS.bas模块已被添加

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
AltBUGRepair KeyCode    '修复按下ALT导致画面停止刷新的临时解决函数
End Sub

Private Sub Form_Load()

'新手注意:游戏编程中,
'通常将窗体的 BorderStyle 设置为“Fixed single”即不允许改变窗体大小
'通常将窗体的 MinButton 设置为“True”即允许最小化
'通常将窗体的 MaxButton 设置为“False”即禁止最大化

  '初始化引擎并设置引擎初始化窗体和引擎分辨率,但最好是电脑常用的分辨率比如 640,480 、 800,600 、 1024,768 、 1366,768
CWVBDX9Initialization Me, 800, 600, CW_Windowed
  '初始化引擎(目标窗体,横向分辨率,纵向分辨率,窗口模式/全屏模式)

    Dim bg As CWPic, yun As CWPic, spider As CWPic, light As CWPic, fnt As CWFont, bgm As CWMusic
    Const SpiderX& = 400 - 104  ' 图像的X位置
    Const SpiderY& = 410        ' 图像的Y位置
    
    ' 加载资源
    CWLoadFont fnt, "Microsoft YaHei", 32, CWF_Bold, False
    CWLoadPic bg, App.Path & "\Pic\bgimg.png", CWColorNone
    CWLoadPic yun, App.Path & "\Pic\yun.png", CWColorNone
    CWLoadPic spider, App.Path & "\Pic\spider.png", CWColorNone
    CWLoadPic light, App.Path & "\Pic\light.png", CWColorNone
    CWLoadMusic bgm, App.Path & "\Snd\test.mp3"
    CWPlayMusic bgm, CWM_Repeat

    Do While CWGameRun         '进入游戏循环
    
    If CWD3DDevice9.TestCooperativeLevel = 0 And Me.WindowState <> 1 Then  '检测是否可以渲染(设备正常并且窗体未最小化时渲染)
    CWBeginScene    '准备好绘制场景
    CWPaintPicBegin
    
        ' 设置采样模式为循环(可以方便实现平铺和循环滚屏)
        CWD3DDevice9.SetSamplerState 0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP
        CWD3DDevice9.SetSamplerState 0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP
        ' 画背景前先禁用Alpha混合(提高效率)
        CWD3DDevice9.SetRenderState D3DRS_ALPHABLENDENABLE, False
        CWD3DDevice9.SetRenderState D3DRS_ALPHATESTENABLE, False

        Dim L!, R!, I&, j&
        L = L + 1!: If L > 0! Then L = L - 893!
        R = R + 1!: If R > 180! Then R = R - 360!
         
        CWPrintFontTop fnt, "Hello World!", 0, 0, 480, 500, CWBlue, DT_CENTER Or DT_VCENTER Or DT_SINGLELINE Or DT_NOCLIP

#Const Title = False    ' 平铺有两种方式实现
' True 为纹理采样方式实现(效率高,但只能实现单张图片)
' False 为循环贴图方式实现(效率低一点,但可以实现多张图随意切换)
#If Title Then
        CWPaintPicEx bg, 0, 0, 0, 0, 800, 600
#Else
        For I = 0 To 24
            For j = 0 To 18
                CWPaintPic bg, I * 32, j * 32
        Next j, I
#End If
        CWPaintPicFlush ' 背景画完后要先提交,再开启Alpha混合
        CWD3DDevice9.SetRenderState D3DRS_ALPHABLENDENABLE, True
        CWD3DDevice9.SetRenderState D3DRS_ALPHATESTENABLE, True

        CWPaintPicEx yun, 0, 0, L, 0, 800, 325
        CWPaintPicFlush ' 改变D3D渲染模式之前都要先提交精灵渲染(不然会导致之前的画的内容也受模式修改影响)
        
        ' 设置采样模式为边框(边框颜色默认为透明色,适合非背景类贴图)
        CWD3DDevice9.SetSamplerState 0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER
        CWD3DDevice9.SetSamplerState 0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER

        CWPaintPicExEx spider, 400 - 104, 300 - 72.5, 0, 0, 208, 145, , , 400, 300, R * Pi / 180!
        CWPaintPic spider, SpiderX, SpiderY     ' 蜘蛛原图(这个区域用来做命中测试的)
    
        Dim cwc As CWColor      ' 获取鼠标光标位置的颜色值
        cwc = CWSplitColor(CWPicGetPixel(spider, CWMouse.X - SpiderX, CWMouse.Y - SpiderY))
        CWPrintFontTop fnt, "XY(" & CWMouse.X & ", " & CWMouse.Y & ")" & vbNewLine & "ARGB(" & cwc.Alpha & ", " & cwc.Red & ", " & cwc.Green & ", " & cwc.Blue & ")", 0, 560, 800, 0, CWGreen, DT_CENTER Or DT_VCENTER Or DT_NOCLIP

        LightEFOpen True
            ' 如果鼠标命中,就以一半亮度的蜘蛛图像作为光源照在上面(实现变亮的效果)
            If IsHitWnd And cwc.Alpha >= &H80 Then CWPaintPic spider, SpiderX, SpiderY, CWGrey
            ' 先旋转后缩放的圆形光斑(有伪3D的效果)
            CWPaintPicExEx1 light, 200, 460, 0, 0, 256, 256, 2!, 0.5!, 128, 128, -R * Pi / 180!
            ' 先缩放后旋转的圆形光斑(传统2D的效果)
            CWPaintPicExEx2 light, 600, 440, 0, 0, 256, 256, 2!, 0.5!, 128, 128, R * Pi / 180!
        LightEFClose
    
        CWDrawSRect 300, 200, 200, 200, &H40FFFF00
        
        CWPrintFontTop fnt, CWFPS, 0, 0, 0, 0, CWRed, DT_SINGLELINE Or DT_NOCLIP
    CWPaintPicEnd
    CWPresentScene   '呈现绘制的场景

'*******************************以下为固定写法,不要轻易改动***********************************
    Else                 '当不满足渲染条件时
        CWResetDevice       '修复设备
    End If

    Loop

        CWVBDX9Destory     '销毁CoolWind引擎
    End '退出
'*******************************以上为固定写法,不要轻易改动***********************************


End Sub

Private Sub Form_Unload(Cancel As Integer)
CWGameRun = False       '窗体被关闭时关闭引擎
MediaBUGRepair          '修复非正常退出时,正在播放的音乐不停止的临时解决函数(IDE下无效)
End Sub

BAS还是之前的。
'******************************************************************************************************************
’ CoolWind2D 引擎完全开源免费,但仅供技术交流,请勿用于任何商业用途

’ 作者名单:
’ VBDX9BAS.BAS:hhyjq007(百度贴吧 VB吧 http://tieba.baidu.com/f?kw=vb)
’ VBDX9TLB.TLB:acme_pjz(VBGOOD论坛 http://www.vbgood.com)

’ 技术支持:
’ 嘿嘿菌 hhyjq007:CoolWind2D原作者,建立引擎框架和实现基础功能
’ YY菌{3EA3E263-6945-4E1F-A573-492FB5A7799E}:修复了大量BUG和增加大量新功能

’ 有任何的意见建议或者疑问可以到百度贴吧VB吧或者VBGOOD论坛发帖讨论,也可以加入CoolWind游戏编程研究会一起讨论
’ CoolWind游戏编程研究会 群号:112915633 欢迎各位游戏编程爱好者的加入
'******************************************************************************************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gosub60

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值