MS DOS的GetAsyncKeyState()

时间:2014-04-28 16:15:06

标签: c++ dos borland-c++

我为Windows制作了一款使用GetAsyncKeyState()的小游戏。现在我想为MS DOS编译游戏,但我找不到任何替代此功能。 getch()和kbhit()对于处理击键来说太慢了。 主要目标是以光速或至少与GetAsyncKeyState()的速度一样处理击键。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

Borland c ++ MSDOS上键盘处理的示例代码 使用conio.hkbhit()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)
    {



    }
  }
}