c语言输出一系列的坐标点,第4章 C语言输入输出 2、C语言在屏幕的任意位置输出字符...

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

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

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

SetConsoleCursorPosition(HANDLE hConsoleOutput, COORD dwCursorPosition);

SetConsoleCursorPosition(HANDLE hConsoleOutput, COORD dwCursorPosition);

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

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

//定义光标位置

COORD coord;

coord.X = 3; //第3行

coord.Y = 3; //第3列

//获取控制台缓冲区句柄

HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);

//设置光标位置

SetConsoleCursorPosition(ConsoleHandle, coord);

//定义光标位置

COORD coord;

coord.X = 3; //第3行

coord.Y = 3; //第3列

//获取控制台缓冲区句柄

HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);

//设置光标位置

SetConsoleCursorPosition(ConsoleHandle, coord);

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

将代码补充完整:

#include

#include

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;

}

#include

#include

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;

}

运行结果:

353d6c84dfe89b80082044cbf2d018e8.png

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

#include

#include

//设置光标位置

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) ;

}

#include

#include

//设置光标位置

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) ;

}

运行结果:

068d6b6697199c40d61a96c67145913c.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值