getch需要包括头文件 #include
比如说要获得键盘上的上下左右按键,那么就有不同于acsii码表的一组数值
所以用getch获取键盘信息可以这么用
while(1)
{
cleardevice();
setfillcolor(RED);
fillcircle(x,y,20);
int key = _getch();
switch (key)
{
//上键
case 72:
case'w':
case'W':
y-=10;
printf("上键\n");
break;
//左键
case 75:
case 'a':
case 'A':
x-=10;
printf("左键\n");
break;
//下键
case 80 :
case 's':
case 'S':
y+=10;
printf("下键\n");
break;
//右键
case 77 :
case 'd':
case 'D':
x+=10;
printf("右键\n");
break;
}
}
表达出来的效果就是:
与getch不同的是,getch只能控制直走不能斜着走,而此函数可以斜着走;
代码表示
int x=0,y=0;
while(1)
{
setfillcolor(RED);
fillcircle(x,y,20);
cleardevice();
if (GetAsyncKeyState(VK_UP))//上键
{
y -= 5;
}
if (GetAsyncKeyState(VK_DOWN))//下键
{
y += 5;
}
if (GetAsyncKeyState(VK_LEFT))//左键
{
x -= 5;
}
if (GetAsyncKeyState(VK_RIGHT))//右键
{
x += 5;
}
}
在每次循环用cleardevice后,发现会导致每一次移动小球都会使得屏幕闪动,那么此时就要创建一个缓冲区
这俩个函数分别放在绘图之前和绘图之后,这样就会有一个缓冲区;
原理:在每次进行小球的运动操作时,都会现在缓冲区内进行变化然后再输出到当前屏幕内;
#include
#include
#pragma comment(lib,"WINMM.LIB") //静态库
打开:mciSendString("open 音乐文件",NULL,0,NULL);
播放:mciSendString("paly 音乐文件",NULL,0,NULL);
关闭:mciSendString("close 音乐文件",NULL,0,NULL);
当音乐文件比较长时,可以在打开音频的音乐文件后面加上alias 新名字,下次再次提及到这个音乐文件的时候可以用新名字代替;
如:
mciSendString("open C:\\Users\\HUAWEI\\Music\\入睡.mp3 alias BGM", NULL, 0, NULL);
mciSendString("play BGM repeat", NULL, 0, NULL);