我正在尝试学习如何使用graphics.h和conio.h库。我正在开发一个图形程序,我需要在键盘输入后移动一个矩形.ex:如果玩家按下右边,矩形应该向右移动。问题是我不知道如何获得用户输入。我需要在循环内连续获取用户输入。这是我的代码。感谢任何帮助(关键字,函数名称等)
#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);
}
答案 0 :(得分:0)
您可以使用getch()
或_getch()
来读取密钥代码并对其做出反应。但是你应该考虑一些事情。
1)需要循环才能在程序中执行continuois动作。
2)&#34;向左箭头&#34;,&#34;向上箭头&#34;等键由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');
}
答案 1 :(得分:0)
它解决了这段代码的工作,感谢您的帮助
的#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);
}