• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 打蜜蜂

LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 打蜜蜂

录入:edatop.com    点击:

 

然可以操作其他窗口。

 

⑥ 按键处理

在本例程中,按键处理采用异步定时器查询方式,需要将定时器的触发时间设置极短,这样会占用大量系统资源。另外,也可以停止异步定时器,采用LabWindows/CVI 事件响应机制,在面板回调函数panelCB 中添加EVENT_KEYPRESS 事件代码,程序如下:

int CVICALLBACK panelCB (int panel, int event, void *callbackData,
int eventData1, int eventData2)

int character;
int vk;
switch (event)

case EVENT_KEYPRESS:
// 获得虚拟键↑↓←→的按键状态,以及是否按下a 键
vk = GetKeyPressEventVirtualKey (eventData2);
character = GetKeyPressEventCharacter (eventData2);
switch (vk)
{
case VAL_LEFT_ARROW_VKEY:
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_LEFT, gun.left–10);
break;
case VAL_RIGHT_ARROW_VKEY:
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_LEFT, gun.left+10);
break;
case VAL_UP_ARROW_VKEY:
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_TOP, gun.top–10);
break;
case VAL_DOWN_ARROW_VKEY:
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_TOP, gun.top+10);
break;

if (('a' == tolower (character)) && (!shootflag))

{
  SetCtrlAttribute (panelHandle, PANEL_PICTURE_BULLET, ATTR_LEFT, gun.left+
gun.width/2–8);  
  SetCtrlAttribute (panelHandle, PANEL_PICTURE_BULLET, ATTR_TOP, gun.top);
  SetCtrlAttribute (panelHandle, PANEL_PICTURE_BULLET, ATTR_VISIBLE, 1);
  sndPlaySound("bullet.wav", SND_SYNC);
  shootflag = 1;
}
 

以上程序中,获得虚拟键值和字符可以用GetKeyPressEventVirtualKey 和GetKeyPress 

EventCharacter 函数,也可以采用EVENT_KEYPRESS 事件的eventData1 参数获得相关数据,即将以上两个函数用以下代码代替。

 

vk = eventData1 & 0xFF00;

character = eventData1 & 0x00FF;

 

(4)运行效果图

点击工具栏中的Debug Project 按钮,程序开始运行,其效果如图4-19 所示。

图4-19 运行效果图

 

相关阅读

《虚拟仪器技术,将"软件就是仪器"进行到底!》

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:怎样采用多种单端信号驱动低功率、1Msps、±2.5V 差分输入、16 位 ADC
下一篇:LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 下雪场景

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图