【题目讲解】c++怎么判断键盘按下?

        众所周知,在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;
}

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值