目录
01、实现效果
通过控制W/S/A/D方向移动。
02、代码
#include<stdio.h>
#include<windows.h>//使用gotoxy(光标 移动函数)
#include<conio.h>//监听键盘输入
struct Coord
{
int x;
int y;
}coord;
int direct = '0';
void Move();
void gotoxy(int x, int y);
void HideCursor();
int main(int argc,char *argv[])
{
//初始化位置
coord.x = 20;
coord.y = 20;
gotoxy(coord.x, coord.y);
printf("o");
HideCursor();
while (1)
{
Move();
}
return 0;
}
//移动函数
void Move()
{
int i = 0;
if (_kbhit)//监听键盘输入
{
fflush(stdin);
direct = _getch();
}
//移动时,清空上一位置
gotoxy(coord.x,coord.y);
printf(" ");
switch (direct)
{
case 'W':
case 'w':
coord.y--; break;
case 'S':
case 's':
coord.y++; break;
case 'A':
case 'a':
coord.x--; break;
case 'D':
case 'd':
coord.x++; break;
}
gotoxy(coord.x, coord.y);
printf("o");
}
//移动光标函数
void gotoxy(int x, int y)
{
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
//隐藏光标函数
void HideCursor()
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(hOut, &cci);
cci.bVisible = FALSE;
SetConsoleCursorInfo(hOut, &cci);
}