光标定位,隐藏光标

简介:
+关注继续查看

最近写贪吃蛇游戏时,需要用到光标定位,故总结如下。

方法一:

复制代码
 1 #include<windows.h>
 2 #include<stdio.h>
 3 
 4 HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
 5 COORD coord;
 6 void locate(int x,int y)
 7 {
 8     coord.X=x;
 9     coord.Y=y;
10     SetConsoleCursorPosition(hout,coord);
11     
12 };
13 
14 int main()
15 
16 { 
17    locate(2,2);
18    printf("hello world\n“);
19    return 0;
20 }
复制代码

 

 

方法二:利用goto()函数

复制代码
 1 #include <stdio.h>
 2 #include <windows.h>
 3 
 4 void gotoxy(int x, int y)
 5 {
 6     COORD coord = {x, y};
 7     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
 8 }
 9 
10 void main()
11 {  
12     gotoxy(3, 3);
13     printf("Hello World!\n");
14 }
复制代码

在贪吃蛇类的小游戏中经常会用到光标定位和隐藏光标。

复制代码
 1 /*** 光标定位 ***/
 2 HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
 3 COORD coord;
 4 void locate(int x,int y)
 5 {
 6     coord.X=x;
 7     coord.Y=y;
 8     SetConsoleCursorPosition(hout,coord);
 9 };
10 /*** 隐藏光标 ***/
11 void hide()
12 {
13     CONSOLE_CURSOR_INFO cursor_info={1,0};
14     SetConsoleCursorInfo(hout, &cursor_info);
15 }
复制代码

这样一来,做个字符版的俄罗斯方块或者贪吃蛇一类的小游戏就比较容易了。

复制代码
 1 #include <windows.h> 
 2 
 3 void HideCursor()
 4 {
 5  CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
 6  SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
 7 }
 8 
 9 函数和结构体都在windows.h中定义,函数用法简单就不说了。
10 CONSOLE_CURSOR_INFO结构体定义如下:
11 typedef struct
12 {  DWORD dwSize;
13    BOOL bVisible; //为0时光标不可见
14 }CONSOLE_CURSOR_INFO,  *PCONSOLE_CURSOR_INFO;
15 
16 VC,MinGW中均没问题。 
复制代码

 CROOD就是这样的一个玩意:

typedef struct _COORD {
SHORT X;
SHORT Y;
} COORD, *PCOORD;

很明显这个结构可以用来记录坐标

GetStdHandle()函数获得标准输入输出的句柄,参数STD_OUTPUT_HANDLE是个宏,代表标准输出,可以看作显示器

SetConsoleCursorPosition(hout,coord); 看函数名称:设置控制台光标坐标,参数就是设备句柄,坐标,那么把标准输出的句柄传给函数,就可以把光标定位在对应的位置了(左上角位置是0,0然后向左 向下延伸)

下面这段代码可以在屏幕第10行第30列输出"Hello world"

复制代码
 1 #include <windows.h>
 2 #include <iostream>
 3 using namespace std;
 4 int main()
 5 {
 6 HANDLE hout;
 7 COORD coord;
 8 coord.X=30;
 9 coord.Y=10;
10 hout=GetStdHandle(STD_OUTPUT_HANDLE);
11 SetConsoleCursorPosition(hout,coord);
12 
13 cout<<"Hello world!\n";
14 return 0;
15 }
复制代码

 





本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/archive/2012/12/13/2816675.html,如需转载请自行联系原作者

目录
相关文章
模拟京东按键输入案例(无论光标在什么位置,按s键即可将光标定位到搜索框)
模拟京东按键输入案例(无论光标在什么位置,按s键即可将光标定位到搜索框)
模拟京东按键输入案例(无论光标在什么位置,按s键即可将光标定位到搜索框)
NotePad++中如何把横向闪烁光标(&#160;_&#160;)修改成竖向闪烁光标样式(&#160;|&#160;)?
当我们在写代码时出现的光标闪烁(横线闪烁),在键盘上找 Insert ,按这个Insert就可以把横向闪烁光标( _ )修改成竖向闪烁光标样式( | ),横向光标会在你写代码的时候修改前面的代码,把光标移到前面进行修改时,后面的代码也会随之被消除,所以需要把光标修改成竖向显示的样式。
1345 0
|
Shell
ctrl+e:光标移到行尾。
ctrl+e:光标移到行尾。
1699 0
|
Shell Android开发
模拟按键,点击,滑动,在光标处输出字符
电脑adb命令 输出文本 adb shell input text 132abc  '不支持中文 模拟按键  adb shell input keyevent 3模拟触摸  adb shell input tap 100 100模拟滑动  adb shell input swipe 100 300 ...
1061 0
Cass环境下光标无显示
先安装CAD2004,十字光标正常显示;再安装CASS7.0,光标就不显示了。现在不清楚是CAD的问题,还是CASS的问题,多半是后者。重新配置了CASS环境也不行。 于是,打开CAD选项,显示,窗口元素,颜色,全部默认,即可。
935 0
|
Windows
光标定位,隐藏光标
最近写贪吃蛇游戏时,需要用到光标定位,故总结如下。 方法一: 1 #include 2 #include 3 4 HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE); 5 COORD coord; 6 void locate(int x,int y) 7 { 8 coord.
813 0
相关产品
云迁移中心
推荐文章
更多