getasynckeystate vk up(C语言 图像 GetAsyncKeyState)

本文目录
- C语言 图像 GetAsyncKeyState
- c++ 编写游戏,希望在游戏中角色可以斜着走,比如按住up和left可以往左上方前进
- vb api,GetAsynKeyState()的作用与声明
- c语言游戏编程,下落的小鸟 求代码
C语言 图像 GetAsyncKeyState
把IF嵌套,设置变量,确定已按下哪些键
#include 《stdio.h》
#include《windows.h》
int main()
{
int ll;
while(1)
{
if(GetAsyncKeyState(VK_UP)&0x8000){
ll=1;}
if(ll==1) {
if(GetAsyncKeyState(VK_DOWN)&0x8000){
ll=2;}}
if(ll==2) {
if(GetAsyncKeyState(VK_LEFT)&0x8000) {
ll=3;}}
if(ll==3) {
if(GetAsyncKeyState(VK_RIGHT)&0x8000){
puts("上");puts("下");puts("左");puts("右");
ll=0;
}}
}
return 0;
}
c++ 编写游戏,希望在游戏中角色可以斜着走,比如按住up和left可以往左上方前进
void HandleKeys()
{
if (!g_bGameOver && !g_bDemo) //判断游戏是否处于over 或者是 演示模式
{
int flag =0;
if (GetAsyncKeyState(VK_LEFT) 《 0)
{
flag |= 0x01;
}
if (GetAsyncKeyState(VK_RIGHT) 《 0)
{
flag |= 0x02;
}
if (GetAsyncKeyState(VK_UP)《0)
{
flag |= 0x04;
}
if (GetAsyncKeyState(VK_DOWN)《0)
{
flag |= 0x08;MoveCarDown();
}
switch(flag)
{
case 0x01:MoveCarLeft();break;
case 0x02:MoveCarRight();break;
case 0x04:MoveCarUp();break;
case 0x08:MoveCarDown();break;
// to do
case 0x05:MoveCarLeftUp();break;
case 0x09:MoveCarLeftDown();break;
case 0x06:MoveCarRightUp();break;
case 0x0a:MoveCarRightDown();break;
}
}
}
vb api,GetAsynKeyState()的作用与声明
楼上真残忍,人家就问一个作用与声明,你给写这么多东西。
GetAsynckeystate这个函数主要是用来监测键盘上某个键是否被按下的,另外,你把拼写错了,少写个C。
声明:private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
用法(添加一个时钟控件,然后把下面的代码全复制到VB中试试):
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub Form_Load()
Timer1.Interval = 100
Set yz = Me.Controls.Add("vb.label", "label1")
With yz
.AutoSize = True
.FontSize = 20
.Caption = "注意:按下S键测试监测效果"
.Visible = True
End With
End Sub
Private Sub timer1_timer()
If GetAsyncKeyState(vbKeyS) Then Shell "mspaint", vbMaximizedFocus
End Sub
c语言游戏编程,下落的小鸟 求代码
下落的小鸟
#include《stdio.h》
#include《stdlib.h》
#include《conio.h》
#include《time.h》
#include《Windows.h》
int Grade = 1, Score = 0, Max_blank = 9, Distance = 18;
struct Birds{int x; int y;}; //定义一种Birds数据类型(含3个成员)
Birds *Bird = (Birds*)malloc(sizeof(Birds)); //定义Birds类型 指针变量Bird并赋初值
struct Bg{int x, y; int l_blank; Bg *pri; Bg *next;}; //定义一种Bg数据类型(含5个成员)
Bg *Bg1 = (Bg*)malloc(sizeof(Bg)); //定义Bg类型 指针变量Bg1并赋初值
void Position(int x, int y) //光标定位函数(用于指定位置输出)
{COORD pos = { x - 1, y - 1 };
HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out, pos);
}
void Csh( ) //初始化界面
{
printf("══════════════════════════════════════\n");
printf(" ■■ ■■ C语言版 Flappy Bird \n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■ 瞎搞人:yyposs原创\n");
printf(" ■■ ■■ 瞎搞日期:2014.2\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■ 改编:鸣蝉百2021.7\n");
printf(" ■■ ■■ 操作:按向上方向键让小鸟起飞\n");
printf(" ■■\n");
printf(" ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■ DEVc++运行通过\n");
printf("══════════════════════════════════════\n");
printf(" 按键继续…");
getch( );
system("cls");
}
void PrFK( ) //输出方框(游戏范围区)
{int i;
Position(1, 1); printf("╔"); Position(79, 1); printf("╗");
Position(1, 24); printf("╚"); Position(79, 24); printf("╝");
for (i = 3; i 《= 78; i += 2){Position(i, 1); printf("═"); Position(i, 24); printf("═");}
for(i=2;i《=23;i++)
{ Position(1,i); printf("║");if(i《11)printf("0%d",i-1);else printf("%d",i-1);
Position(79,i); printf("║");
}
Position(4, 25); printf("小鸟即将出现,请准备按键起飞… ");
getch( );
Position(4, 25); printf(" ");
}
void CreatBg( ) //创建障碍物坐标(便于打印输出)
{Bg *Bg2 = (Bg*)malloc(sizeof(Bg));
Bg1-》x = 90; Bg1-》y = 8; //确定障碍物的一对基本坐标(此时值是在游戏框之外)
Bg2-》x = Bg1-》x + Distance; Bg2-》y = 9; //下一障碍物的基本坐标x、y
Bg1-》l_blank = Max_blank - Grade; //障碍物上下两部分之间的空白距离l_blank
Bg2-》l_blank = Max_blank - Grade;
Bg1-》next = Bg2; Bg1-》pri = Bg2;
Bg2-》next = Bg1; Bg2-》pri = Bg1;
}
void InsertBg(Bg *p) //随机改变障碍物的y坐标,让空白通道有上下变化
{int temp;
Bg *Bgs = (Bg*)malloc(sizeof(Bg));
Bgs-》x = p-》pri-》x + Distance;
Bgs-》l_blank = Max_blank - Grade;
srand((int)time(0)); //启动随机数发生器
temp = rand( ); //产生一个随机数并赋值给temp
if (temp % 2 == 0)
{if ((temp % 4 + p-》pri-》y + Max_blank - Grade)《21)
Bgs-》y = p-》pri-》y + temp % 4;
else Bgs-》y = p-》pri-》y;
}
else
{if ((p-》pri-》y - temp % 4)》2)Bgs-》y = p-》pri-》y - temp % 4;
else Bgs-》y = p-》pri-》y;
}
Bgs-》pri = p-》pri; Bgs-》next = p;
p-》pri-》next = Bgs; p-》pri = Bgs;
}
void CreatBird( ) //建立小鸟的坐标(初始打印输出小鸟的位置)
{Bird-》x = 41; Bird-》y = 10;}
int CheckYN(Bg *q) //判断游戏结束与否(值为0是要结束,为1没有要结束)
{Bg *p = q; int i = 0;
while (++i 《= 5)
{if (Bird-》y》23)return 0;
if (Bird-》x == p-》x&&Bird-》y 《= p-》y)return 0;
if ((Bird-》x == p-》x || Bird-》x == p-》x + 1 || Bird-》x == p-》x + 2) && Bird-》y == p-》y)return 0;
if (Bird-》x == p-》x&&Bird-》y》p-》y + p-》l_blank)return 0;
if ((Bird-》x == p-》x || Bird-》x == p-》x + 1 || Bird-》x == p-》x + 2) && Bird-》y == p-》y + p-》l_blank)
return 0;
p = p-》next;
}
return 1;
}
void Check_Bg(Bg *q) //核查开头的障碍物坐标是否在游戏区内
{Bg *p = q; int i = 0, temp;
while (++i 《= 5)
{if (p-》x》-4)p = p-》next;
else
{srand((int)time(0)); temp = rand();
if (temp % 2 == 0)
{if ((temp % 4 + p-》y + Max_blank - Grade)《21)p-》y = p-》y + temp % 4;
else p-》y = p-》y; p-》x = p-》pri-》x + Distance;
p-》l_blank = Max_blank - Grade;
}
else
{if ((p-》y - temp % 4)》2)p-》y = p-》y - temp % 4;
else p-》y = p-》y; p-》x = p-》pri-》x + Distance;
p-》l_blank = Max_blank - Grade;
}
}
}
}
void Prt_Bg(Bg *q) //打印输出障碍物(依据其x、y坐标进行相应输出)
{Bg *p = q; int i = 0, k, j;
while (++i 《= 5)
{if (p-》x》0 && p-》x 《= 78)
{for (k = 2; k《p-》y; k++){Position(p-》x + 1, k); printf("■"); printf("■"); printf(" ");}
Position(p-》x, p-》y);
printf("■"); printf("■"); printf("■"); printf(" ");
Position(p-》x, p-》y + p-》l_blank);
printf("■"); printf("■"); printf("■"); printf(" ");
k = k + p-》l_blank + 1;
for (k; k 《= 23; k++){Position(p-》x + 1, k); printf("■"); printf("■"); printf(" ");}
}
p = p-》next;
if (p-》x == 0)
{for (j = 2; j《p-》y; j++){Position(p-》x + 1, j); printf(" "); printf(" ");}
Position(p-》x + 1, p-》y);
printf(" "); printf(" "); printf(" ");
Position(p-》x + 1, p-》y + Max_blank - Grade);
printf(" "); printf(" "); printf(" ");
j = j + Max_blank - Grade + 1;
for (j; j 《= 22; j++){Position(p-》x + 1, j); printf(" "); printf(" ");}
}
}
}
void PrtBird( ) //打印输出小鸟
{Position(Bird-》x, Bird-》y - 1); printf(" ");
Position(Bird-》x, Bird-》y); printf("Ю");
Position(38, 2); printf("Score:%d", Score);
}
void Loop_Bg(Bg *q) //障碍物x坐标左移,并记录成绩
{Bg *p = q; int i = 0;
while (++i 《= 5)
{p-》x = p-》x - 1; p = p-》next;
if (Bird-》x == p-》x)
{Score += 1;
if (Score % 4 == 0 && Grade《4)Grade++;
}
}
}
int main( )
{int i = 0; int t;
while (1)
{
Csh( );PrFK( );CreatBg( );
InsertBg(Bg1);InsertBg(Bg1);InsertBg(Bg1);
CreatBird( );
while (1)
{if (!CheckYN(Bg1))break;
Check_Bg(Bg1);Prt_Bg(Bg1);
PrtBird( );Loop_Bg(Bg1);
Bird-》y = Bird-》y + 1;
if (GetAsyncKeyState(VK_UP)) //按下了向上方向键
{Position(Bird-》x, Bird-》y - 1);printf(" ");
Bird-》y = Bird-》y - 4;
}
Sleep(200); //程序延时200毫秒(数值大小决定游戏速度快慢)
i = 0;
}
Position(6, 25);
printf("游戏结束! 请输入:0.退出 1.重玩");
scanf("%d",&t);
if (t==0)break;
system("cls"); Score = 0;
}
return 0;
}

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30




