我为Windows制作了一款使用GetAsyncKeyState()的小游戏。现在我想为MS DOS编译游戏,但我找不到任何替代此功能。 getch()和kbhit()对于处理击键来说太慢了。 主要目标是以光速或至少与GetAsyncKeyState()的速度一样处理击键。 提前谢谢。
答案 0 :(得分:1)
Borland c ++ MSDOS上键盘处理的示例代码
使用conio.h
,kbhit()
和getch()
。这应该编译
在MSDOS Borland c ++中就好了。
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <dos.h>
#define TRUE 1
#define FALSE (!TRUE)
#define TEXTSCREEN 0xB800
#define esc 27
#define tab 9
#define up 72
#define down 80
#define left 75
#define right 77
#define home 71
#define cend 79
#define pgup 73
#define pgdn 81
#define ins 82
#define del 83
#define plus 43
#define subt 45
#define mult 42
#define devi 47
#define spc 32
#define f1 59
#define f2 60
#define f3 61
#define f4 62
#define f5 63
#define f6 64
#define f7 65
#define f8 66
#define f9 67
#define f10 68
#define ap 53
#define bksp 8
#define enter 13
#define crum 245
void key2(void);
int main(void)
{
ch=0;
while(ch!=esc)
{
key2();
}
return 0;
}
void key2(void)
{
if (kbhit())
{
ch=getch();
if (ch==f1)
{
}
if (ch==f2)
{
}
if (ch==f3)
{
}
if (ch==f4)
{
}
if (ch==f5)
{
}
if (ch==f6)
{
}
if (ch==f7)
{
}
if (ch==f8)
{
}
if (ch==f9)
{
}
if (ch==f10)
{
}
if (ch==tab)
{
}
if (ch==ins)
{
}
if (ch==del)
{
}
if (ch==bksp)
{
}
if (ch==enter)
{
}
if (ch==spc)
{
}
if (ch==49)
{
}
if (ch==50)
{
}
if (ch==up)
{
}
if (ch==down)
{
}
if (ch==home)
{
}
if (ch==cend)
{
}
if (ch==pgup)
{
}
if (ch==pgdn)
{
}
}
}