帮我修改一下这个代码,使他能够在VS2022的开发环境中运行出来#pragma once #include <stdio.h> #include <stdlib.h> #include <conio.h> int sx = 60, sy = 28;//横坐标max和纵坐标max int px = 30, py =18 ;//飞机的初始位置 void show()//显示飞机 { system("cls"); for (int i = 0; i < sy;i++)//有多少行循环多少次,外循环 { for (int j = 0; j < sx;j++)//有多少列循环多少次,内循环 { if (i == py && j == px) { printf(" A");//输出飞机 } else if (i==py+1&&j==px)//什么样的条件画飞机翅膀 { printf("====="); } else if (i == py + 2 && j == px)//什么样的条件输出尾巴 { printf(" H H "); } else//输出空格 { printf(" "); } printf("\n");//走到最后,换行 } } } void move() { //不用scanf接收键盘输入,因为要按回车,玩游戏时不理解 char input; input = getch(); if (input == 'w') { py--; } if (input == 's') { py++; } if (input == 'a') { px--; } if (input == 'd') { px++; } } int main() { while (1) { show(); move(); show(); } return 0; }
时间: 2024-01-02 11:03:01 浏览: 101
以下是修改后的代码,主要是因为VS2022中不再支持conio.h头文件,需要使用Windows API函数来获取键盘输入。
```
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int sx = 60, sy = 28; //横坐标max和纵坐标max
int px = 30, py = 18; //飞机的初始位置
void show() //显示飞机
{
system("cls");
for (int i = 0; i < sy; i++) //有多少行循环多少次,外循环
{
for (int j = 0; j < sx; j++) //有多少列循环多少次,内循环
{
if (i == py && j == px)
{
printf(" A"); //输出飞机
}
else if (i == py + 1 && j >= px - 2 && j <= px + 2) //什么样的条件画飞机翅膀
{
printf("=");
}
else if (i == py + 2 && j >= px - 1 && j <= px + 1) //什么样的条件输出尾巴
{
printf(" H ");
}
else //输出空格
{
printf(" ");
}
}
printf("\n"); //走到最后,换行
}
}
void move()
{
//不用scanf接收键盘输入,因为要按回车,玩游戏时不理解
if (GetAsyncKeyState(0x57) & 0x8000) //W键
{
py--;
}
if (GetAsyncKeyState(0x53) & 0x8000) //S键
{
py++;
}
if (GetAsyncKeyState(0x41) & 0x8000) //A键
{
px--;
}
if (GetAsyncKeyState(0x44) & 0x8000) //D键
{
px++;
}
}
int main()
{
while (1)
{
show();
move();
}
return 0;
}
```
修改后的代码使用了Windows API函数GetAsyncKeyState()来获取键盘输入,如果某个键被按下,则该键的返回值为0x8000。因此,我们可以通过检查该键的返回值来判断用户是否按下了该键。这种方法可以避免使用conio.h头文件,也可以避免等待用户按回车键才能获取键盘输入。同时,还对飞机的绘制做了一些小改动,让它更符合实际情况。
阅读全文