0.前言
需要做控制台小游戏,需要获取光标在控制台的位置,从网上查到了gotoxy()函数可以实现,但是在DEVC++环境中直接调用这个gotoxy()会报错,于是查了一些资料,把过程记录下来。
1.过程实现
在DEVC++环境使用gotoxy()函数需要先定义,函数定义如下:
void gotoxy(int x, int y) {
COORD pos = {x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置
}
调用的时候只要使用gotoxy(),函数内部加上坐标即可。需要<windows.h>和<conio.h>头文件。
2.屏幕坐标系
在编程和一些游戏中,使用的都是屏幕坐标系,类似下面这种,
可以想象成二维数组。
3.指定位置输出符号
先在0,0点输出看下:
#include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<conio.h> #include<windows.h> void gotoxy();//移动函数 void gotoxy(int x, int y) { COORD pos = {x,y}; HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄 SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置 } using namespace std; int main() { system("cls"); gotoxy(0,0); cout<<"■"; gotoxy(0,1); cout<<"■"; return 0; }
运行结果:
可以看出在指定位置画出了图形。
4.结论与问题
gotoxy()函数可以在将光标移动到指定位置上,但是在测试中遇到一些奇怪现象,就是不同的坐标会出现在同一个位置上,不知道是不是编译的问题。
返回目录:C++/趣味小程序