我现在想做一个双人小游戏,我需要用awsd或者上下左右键控制两个人的行动,这样很大可能就会导致玩家长按上下左右键或者awsd键,然后现在出现了一个问题就是如果我两个人一起按键盘就会导致后按键盘那个动作无效,就是无法两个人同时长按键盘,我如果两边一起长按的话,只有一个会持续移动,但是如果此时我其中没有被移动的那个人重新按一下键盘,那么刚才持续移动那个会停止(实现过程就是下面的代码把printf换成我设计的人物移动代码,在这里只单独长按一个键可以正常移动)
但是我缩减代码的时候又遇到了个问题
下面是我缩减后的代码
我本来是打算弄一个,按W就显示w,按s就显示S,按上显示上,按下显示下……的可编译程序,但是运行之后按键没反应,然后我狂按键有时蹦出一个peek,然后无论我按什么键都没有任何输出,有的时候也会我刚一运行就蹦出来10个以上的peek,无论按什么键都无反应(补充:输出peek和message为出现问题后调试的过程)
#include <graphics.h>
#include <cstdio>
int main()
{
initgraph(1260, 680, EX_SHOWCONSOLE);
ExMessage mess;
while(1)
{
if (peekmessage(&mess, EX_KEY))
{
printf("peek");
if(mess.message==WM_KEYDOWN)
{
printf("message");
if((mess.vkcode == 'W'))
{
printf("w");
}
if((mess.vkcode == 'S'))
{
printf("s");
}
if((mess.vkcode == 'A'))
{
printf("a");
}
if((mess.vkcode == 'D'))
{
printf("d");
}
if((mess.vkcode == VK_UP))
{
printf("up");
}
if((mess.vkcode == VK_DOWN))
{
printf("down");
}
if((mess.vkcode == VK_LEFT))
{
printf("left");
}
if((mess.vkcode == VK_RIGHT))
{
printf("right");
}
}
}
}
return 0;
}