DX9键盘和摇杆检测-------VB6编程学习DX9游戏编程DirectX9编程2D小游戏源码冷风引擎CoolWind2D游戏引擎(17)

DX9键盘和摇杆检测

键盘检测:新建Form1,输入以下代码:

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 FontDemo As CWFont      '定义CoolWind引擎字体变量

    CWLoadFont FontDemo, "SimSun", 32, CWF_Normal, False  '载入要显示的字体

    Do While CWGameRun = True         '进入游戏循环
    
    If CWD3DDevice9.TestCooperativeLevel = 0 And Me.WindowState <> 1 Then  '检测是否可以渲染(设备正常并且窗体未最小化时渲染)
    CWBeginScene    '准备好绘制场景
         
         If CWKeyboard.A.PUP Then          '检测A键抬起状态
         CWPrintFont FontDemo, "A键处于抬起状态", 0, 0, 800, 60, CWWhite, CWF_LeftAl
         End If
         
         If CWKeyboard.Enter.PUPMoment Then          '检测回车键抬起瞬间
         CWPrintFont FontDemo, "回车键抬起的瞬间", 0, 100, 800, 60, CWRed, CWF_LeftAl
         End If
         
         If CWKeyboard.Space.PDownMoment Then    '检测空格键按下瞬间
         CWPrintFont FontDemo, "空格键按下的瞬间", 0, 200, 800, 60, CWGreen, CWF_LeftAl
         End If
         
         If CWKeyboard.UP.PDown Then          '检测方向键“上”按下状态
         CWPrintFont FontDemo, "上 方向键处于按下状态", 0, 300, 800, 60, CWBlue, CWF_LeftAl
         End If
         
         If CWKeyboard.ESC.PDownMoment Then   '按下ESC键的瞬间退出程序
         CWGameRun = False           '关闭引擎开关
         End If
    
     CWPresentScene   '呈现绘制的场景

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

    Loop

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


End Sub

BAS还用之前的。
运行效果自行监测。

摇杆检测:新建Form1,输入以下代码:

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 FontDemo As CWFont      '定义CoolWind引擎字体变量

    CWLoadFont FontDemo, "SimSun", 32, CWF_Normal, False  '载入要显示的字体

    Do While CWGameRun = True         '进入游戏循环
    
    If CWD3DDevice9.TestCooperativeLevel = 0 And Me.WindowState <> 1 Then  '检测是否可以渲染(设备正常并且窗体未最小化时渲染)
    CWBeginScene    '准备好绘制场景
      CWPaintPicBegin
        With CWJoystick(0)
         CWPrintFont FontDemo, .X & " " & .Y & vbNewLine & .Z & " " & .R, 0, 0, 800, 60, CWCyan, CWF_LeftAl Or DT_NOCLIP    '显示手柄坐标
         CWPrintFont FontDemo, IIf(.IsConnected, "手柄已连接", "手柄未连接"), 400, 0, 800, 60, CWCyan, CWF_LeftAl Or DT_NOCLIP Or DT_VCENTER
         CWPrintFont FontDemo, "方向键:" & .Pov & "°", 400, 80, 800, 60, CWCyan, CWF_LeftAl Or DT_NOCLIP Or DT_VCENTER
         
         If .Btn(1).PDown Then          '检测功能键1处于按下状态
         CWPrintFont FontDemo, "手柄功能键1处于按下状态", 0, 100, 800, 50, CWRed, CWF_LeftAl Or DT_NOCLIP Or DT_VCENTER
         End If
         
         If .Btn(2).PDownMoment Then    '检测功能键2按下的瞬间
         CWPrintFont FontDemo, "手柄功能键2按下的瞬间", 0, 150, 800, 50, CWGreen, CWF_LeftAl Or DT_NOCLIP Or DT_VCENTER
         End If
         
         If .Btn(3).PUPMoment Then      '检测功能键3抬起的瞬间
         CWPrintFont FontDemo, "手柄功能键3抬起的瞬间", 0, 200, 800, 50, CWBlue, CWF_LeftAl Or DT_NOCLIP Or DT_VCENTER
         End If
         
         If .Btn(4).PUP Then            '检测功能键4处于抬起状态
         CWPrintFont FontDemo, "手柄功能键4处于抬起状态", 0, 250, 800, 50, CWRed, CWF_LeftAl Or DT_NOCLIP Or DT_VCENTER
         End If
         
         If .Btn(9).PDown Then          '检测Select键按下状态
         CWPrintFont FontDemo, "手柄Select键按下的状态", 0, 400, 800, 60, CWGreen, CWF_LeftAl Or DT_NOCLIP Or DT_VCENTER
         End If
         
         If .Btn(10).PUP Then           '检测Start键抬起状态
         CWPrintFont FontDemo, "手柄Start键抬起的状态", 0, 500, 800, 60, CWBlue, CWF_LeftAl Or DT_NOCLIP Or DT_VCENTER
         End If
         
        End With
      CWPaintPicEnd
    CWPresentScene   '呈现绘制的场景

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

    Loop

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


End Sub

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

gosub60

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

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

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

打赏作者

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

抵扣说明:

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

余额充值