使用 conio.h 在 c 中获取键盘输入

getting keyboard input in c using conio.h

我正在尝试学习如何使用 graphics.h 和 conio.h libraries.I 正在开发一个图形程序,我需要在键盘后移动一个矩形 input.ex:如果玩家按右,矩形应该向右移动 side.Problem 是我不知道如何获取用户 input.I 需要在循环中获取用户输入 continuous.Here 是我的 code.Any 帮助是赞赏(关键字,函数名称等)

#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <math.h>

void drawrect(int left,int top,int right,int bot);

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "C:\TC\BGI");
    drawrect(5,400,40,450); // default start position
    firsttime=1;//counter for if its first time in for loop
    int currentl=5;
    int currentt=400;
    int currentr=40;
    int currentb=450;
        if(firsttime==1)
        {
              //get user input and drawrectangle with new inputs
              //if player press right add 5 to currentl and current r and
              //redraw the rectangle
        }


    getch();
    closegraph();
}

void drawrect(int left,int top,int right,int bot)
{
 rectangle(left,top,right,bot);
}

您可以使用getch()_getch()来读取按键代码并对其做出反应。但有些事情你应该考虑一下。

1) 需要循环才能在您的程序中执行连续动作。

2) "arrow left"、"arrow up" 等键由 getch() 给出为两个代码 - 第一个 -32,第二个取决于键。

使用以下程序查看循环示例并查找键代码:

#include <stdio.h>
#include <ctype.h>
#include <conio.h>

int main(void)
{
    char ch;
    printf("Press 'q' to exit prom program\n");
    do{
        ch = _getch();
        printf("%c (%d)\n", ch, ch);
    } while( ch != 'q');
}

已解决此代码有效感谢您的帮助

#include #include

void drawrect(int left,int top,int right,int bot);

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "C:\TC\BGI");

    int firsttime=1;//counter for if its first time in for loop
    int currentl=5;
    int currentt=400;
    int currentr=40;
    int currentb=450;

    char ch;
    settextstyle(0, HORIZ_DIR, 1);
    outtextxy(20, 20, "To start press 'S'");
    ch = getch();
    cleardevice(); 
    drawrect(5,400,40,450); // default start position

        while(ch!='q')
       { 
        ch = getch();
        switch (ch)
        {
         case KEY_RIGHT:currentr=currentr+5;
                        currentl=currentl+5;
                        break;
         case KEY_LEFT:currentr=currentr-5;
                       currentl=currentl-5;
                       break;
        }
        cleardevice();
        drawrect(currentl,currentt,currentr,currentb);
       }




    getch();
    closegraph();
}

void drawrect(int left,int top,int right,int bot)
{
 rectangle(left,top,right,bot);
}