GetAsyncKeyState和getchar的区别
时间: 2024-03-07 08:51:34 浏览: 66
GetAsyncKeyState和getchar是两个不同的函数,主要用途也不同。
GetAsyncKeyState是Windows API函数之一,用于检测指定虚拟键是否按下。它可以检测实时键盘输入,而不需要等待用户按下回车键或其他输入终止符。该函数返回值为short类型,若指定虚拟键当前处于按下状态,则返回值的最高位(即第15位)为1,否则为0。
getchar则是C语言标准库函数之一,用于从标准输入流中读取一个字符。它需要等待用户输入,直到用户按下回车键才会返回输入的字符。该函数返回值为int类型,返回值为输入的字符的ASCII码值。
因此,GetAsyncKeyState和getchar的主要区别在于它们的用途和返回值类型。GetAsyncKeyState用于检测实时键盘输入,返回值为按键状态;而getchar用于等待用户输入字符,返回值为输入的字符的ASCII码值。
相关问题
将一下代码修改成可在VC2010运行的完整代码#include <graphics.h> //#include <stdio.h>int main() { //1.创建图形窗口 initgraph(800, 600); //circle(100, 100, 50); //2.熟悉图形窗口 // 熟悉坐标系 //3.显示一张图像 //三行代码 //定义图片变量 int a; IMAGE img; //把名字和变量建立联系 scanf_s("%d",&a) loadimage(&img, "./mm.jpg",800,600); //显示图像 //4.透明显示一张图像 IMAGE shrimp; loadimage(&shrimp, "./Res/1_left.jpg"); IMAGE shrimp_y; loadimage(&shrimp_y, "./Res/1_left_y.jpg"); int x = 100; int y = 100; //5.按键交互 --->鼠标交互 BeginBatchDraw(); //开始双缓冲 while (1) { putimage(0, 0, &img); putimage(x, y, &shrimp_y, SRCAND); putimage(x, y, &shrimp, SRCPAINT); FlushBatchDraw(); //显示没一帧 //_getch() scanf gets getchar if (GetAsyncKeyState(VK_LEFT)) { x--; } if (GetAsyncKeyState(VK_RIGHT)) { x++; } if (GetAsyncKeyState(VK_UP)) { y--; } if (GetAsyncKeyState(VK_DOWN)) { y++; } } EndBatchDraw(); //结束双缓冲 while (1); closegraph(); return 0;
以下是在VC2010中可以运行的完整代码:
```c++
#include <graphics.h>
#include <stdio.h>
int main()
{
//1.创建图形窗口
initgraph(800, 600);
//2.熟悉图形窗口
// 熟悉坐标系
//3.显示一张图像
//三行代码
//定义图片变量
int a;
IMAGE img;
//把名字和变量建立联系
scanf_s("%d", &a);
loadimage(&img, "./mm.jpg", 800, 600);
//显示图像
//4.透明显示一张图像
IMAGE shrimp;
loadimage(&shrimp, "./Res/1_left.jpg");
IMAGE shrimp_y;
loadimage(&shrimp_y, "./Res/1_left_y.jpg");
int x = 100;
int y = 100;
//5.按键交互 --->鼠标交互
BeginBatchDraw(); //开始双缓冲
while (1)
{
putimage(0, 0, &img);
putimage(x, y, &shrimp_y, SRCAND);
putimage(x, y, &shrimp, SRCPAINT);
FlushBatchDraw(); //显示每一帧
if (GetAsyncKeyState(VK_LEFT))
{
x--;
}
if (GetAsyncKeyState(VK_RIGHT))
{
x++;
}
if (GetAsyncKeyState(VK_UP))
{
y--;
}
if (GetAsyncKeyState(VK_DOWN))
{
y++;
}
}
EndBatchDraw(); //结束双缓冲
closegraph();
return 0;
}
```
请注意,代码中需要设置`graphics.h`库的路径,以及图片的路径。代码中默认图片路径为当前工程文件夹下的`mm.jpg`、`1_left.jpg`和`1_left_y.jpg`。如果您的图片路径不同,请修改代码中的相应路径。
阅读全文