光标定位,隐藏光标
时间:2022-04-22
本文章向大家介绍光标定位,隐藏光标,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近写贪吃蛇游戏时,需要用到光标定位,故总结如下。
方法一:
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 worldn“);
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 }
- .NET 4 上的REST 框架
- 结合游戏开发与人工智能研究,游戏大厂 Ubisoft 成立AI研发部门
- Quartz.NET的管理工具
- Python-执行系统命令
- css3 UI 修饰——回顾
- Windows Phone 7实战 第一天 设计启动页面和应用程序图标
- css3响应式布局设计——回顾
- Windows Phone 7 实战第二天 二维码QRcode
- Python-面向对象编程
- SQL Server 2012将与Hadoop无缝集成
- 系统性能优化一例
- Android中include标签的使用
- css3弹性盒子模型——回顾。
- confluence与jira账号对接、查看到期时间及问题总结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- iOS音视频接入 - TRTC iOS端真机日志导出
- jQuery根据填写的input的数值导出excel表格
- 小程序根据返回值英文渲染出对应的中文
- 小程序返回的时间戳转化成时间
- 小程序使用 组件库 vant-weapp详细教程
- 小程序数据渲染根据返回值计算百分比并且显示
- JS获取当前系统时间戳的方法
- TensorFlow 2建立神经网络分类模型——以iris数据为例
- 突击并发编程JUC系列-阻塞队列 BlockingQueue
- Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
- Python安装TensorFlow 2、tf.keras和深度学习模型的定义
- TensorFlow2 keras深度学习:MLP,CNN,RNN
- Flutter ListView 局部刷新数据、ListView点赞收藏
- R语言公交地铁路线网络图实现数据挖掘实战
- R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计