微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 打蜜蜂

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

时间:11-13 来源:3721RD 点击:

//游戏结束面板
void popmessage (void)
{
pophandle = LoadPanel (0, "bee.uir", PANEL_POP);
//以模态对话框形式显示游戏结束面板
InstallPopup (pophandle);
}
//异步定时器回调函数
int CVICALLBACK keystroke(int reserved, int timerId, int event, void *callbackData, int eventData1, int
eventData2)
{
int left;
int right;
int up;
int down;
int a;
switch (event)
{
case EVENT_TIMER_TICK:
// 获得虚拟键↑↓←→的按键状态,以及是否按下a 键
right = GetAsyncKeyState(VK_RIGHT);
left = GetAsyncKeyState(VK_LEFT);
up = GetAsyncKeyState(VK_UP);
down = GetAsyncKeyState(VK_DOWN);
a = GetAsyncKeyState('A');
// 向左移动
if (left != 0)
{
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_LEFT, gun.left–2);
}
// 向右移动
if (right != 0)
{
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_LEFT, gun.left+2);
}
// 向上移动
if (up != 0)
{
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_TOP, gun.top–2);
}
// 向下移动
if (down != 0)
{
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_TOP, gun.top+2);

}
// 按下a 键,发射子弹
if (a && (!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;
}
break;
}
return 0;
}

(3) 程序注释

① sndPlaySound 函数播放指定音频文件。此函数为PlaySound 函数的子集,主要是为保持向后兼容而设置。文件声明在mmsystem.h 中,导入库为winmm.lib 。函数原型为:

BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);

lpszSound :指定播放音频文件名,该参数可以是WAVE 文件名或是在系统注册表WIN.INI

中定义的系统事件音频文件。如果该参数设置为NULL 则停止正在播放的音频文件。fuSound:播放标志。

播放标志说明如表4-10 所示。

表4-10 播放标志说明

常量名

常量值

说明

SND_ASYNC

0x0001

用异步方式播放音频文件

SND_LOOP

0x0008

重复播放音频文件,与SND_ASYNC 标志同时使用

SND_MEMORY

0x0004

播放载入到内存中的音频文件

SND_NODEFAULT

0x0002

不播放缺省音频文件

SND_NOSTOP

0x0010

立即播放音频文件

SND_SYNC

0x0000

同步播放音频文件

返回值:成功返回True ,否则返回False 。

② GetAsyncKeyState 函数判断按键是处于按下状态,还是处于弹起状态。函数原型为:

SHORT GetAsyncKeyState(int vKey);

vKey:虚拟键值。

返回值:返回指定键是否处于按下状态,若为1,则键被按下,否则为弹起状态。

③ GetKeyPressEventVirtualKey 函数当回调函数响应EVENT_KEYPRESS 事件时,调用GetKeyPressEventVirtualKey 函数获得虚拟键值。如果回调函数eventData1 参数包含字符而非虚拟键时,函数返回0 值。函数原型为:

int GetKeyPressEventVirtualKey (int eventData2); eventData2 :面板或控件回调函数的eventData2 参数。

返回值:返回虚拟键值,如有非虚拟键按下,返回0。

④ GetKeyPressEventCharacter 函数当回调函数响应EVENT_KEYPRESS 事件时,调用GetKeyPressEventCharacter 函数获得按键字符。如果回调函数eventData1 参数包含虚拟键而非字符时,函数返回0 值。函数原型为:

int GetKeyPressEventCharacter (int eventData2);

eventData2 :面板或控件回调函数eventData2 参数。

返回值:返回字符值,如有非字符按下,返回0。

⑤ InstallPopup 函数显示模态对话框。函数原型

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top