众所周知,在py里判断键盘按下很容易,但很多人不知道c++怎么办,今天就让小编带着大家看看吧:
一、定义
首先要在前面加上这条代码(如下):
#include<bits/stdc++.h>
#include<iostream>
#include<bitset>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
int main()
{
}
define后面的名字是可以改的,根据自己喜好。
二、使用
需要配合if使用(如下):
if(KEY_DOWN('S'))
{
cout<<1;
}
使用时键名要加单引号,并且必须是它的大写
这里个大家分享一段关于这个的代码,运用了前面讲的判断:
#include<iostream>
#include<bitset>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
void color(int a){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
bitset<30>down;//记录当前键盘按下状态
bitset<30>pre;//记录前一时刻键盘按下状态
void check(char c){//检测某个按键是否按下,按下就改变一下变量
if(!KEY_DOWN(c))down[c-'A']=0;
else down[c-'A']=1;
}
void print_letter(char c){
if(!down[c-'A'])color(7);
else color(112);
printf(" %c ",c);
color(7);
}
void print(){
system("cls");//清屏
print_letter('Q');print_letter('W');print_letter('E');print_letter('R');print_letter('T');print_letter('Y');print_letter('U');print_letter('I');print_letter('O');print_letter('P');
printf("\n\n ");
print_letter('A');print_letter('S');print_letter('D');print_letter('F');print_letter('G');print_letter('H');print_letter('J');print_letter('K');print_letter('L');
printf("\n\n ");
print_letter('Z');print_letter('X');print_letter('C');print_letter('V');print_letter('B');print_letter('N');print_letter('M');
}
int main(){
print();
while(1){
pre=down;
for(int i=0; i<26; i++){
check(char('A'+i));
}
if(down!=pre)print();//检测到按键状态变化再打印
Sleep(20);//循环时间间隔,防止太占内存
}
return 0;
}