C语言在屏幕的任意位置输出字符 此为收费教程,尊重作者的原创,请到http://c.biancheng.net/cpp/u/jiaocheng/,缴费学习,我这边隐藏文章内容,供自己学习之用。

初学编程的读者,肯定很想编写出一个游戏来秀一下,贪吃蛇就是C语言小游戏中经典的一个,请猛击《C语言贪吃蛇游戏演示和说明》了解更多。

编写游戏的第一步就是搞定光标定位问题,这样你的程序就可以随心所欲、按任意顺序、在任意位置输出了。

光标定位需要使用windows.h头文件中的SetConsoleCursorPosition函数:

SetConsoleCursorPosition(HANDLE hConsoleOutput, COORD  dwCursorPosition);

hConsoleOutput表示控制台缓冲区句柄,可通过GetStdHandle(STD_OUTPUT_HANDLE)来获得;dwCursorPosition是光标位置,也就是第几行第几列,它是COORD类型的结构体。

例如,将光标定位到第3行第3列:

1
2
3
4
5
6
7
8
//定义光标位置
COORD coord;
coord.X = 3;  //第3行
coord.Y = 3;  //第3列
//获取控制台缓冲区句柄
HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
//设置光标位置
SetConsoleCursorPosition(ConsoleHandle, coord);

这样,程序就可以从第3行第3列开始输出了。

将代码补充完整:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <windows.h>
int main(){
    //定义光标位置
    COORD coord;
    coord.X = 3;  //第3行
    coord.Y = 3;  //第3列
    //获取控制台缓冲区句柄
    HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    //设置光标位置
    SetConsoleCursorPosition(ConsoleHandle, coord);
 
    printf("123");
    return 0;
}

运行结果:
第4章 C语言输入输出 2、C语言在屏幕的任意位置输出字符

注意:窗口的左上角是第0行第0列。搞定了光标重定位,你就可以将输出顺序打乱了,想在哪里输出就在哪里输出。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <windows.h>
//设置光标位置
void setCursorPosition(int x, int y);
//设置文字颜色
void setColor(int color);
int main(){
setColor(3);
setCursorPosition(3, 3);
puts("★");
setColor(0XC);
setCursorPosition(1, 1);
puts("◆");
setColor(6);
setCursorPosition(6, 6);
puts("■");
return 0;
}
void setCursorPosition(int x, int y){
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void setColor(int color){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color) ;
}

运行结果:
第4章 C语言输入输出 2、C语言在屏幕的任意位置输出字符

可以发现,先输出的字符位置不一定靠前,可以在任意位置。

看到这里,很多初学者会不懂,甚至一头雾水,不过没关系,这里仅仅是演示,引起你对C语言的兴趣,待学完C语言的基本语法后会恍然大悟。

» 订阅本站: http://www.0523jz.com/feed