📅  最后修改于: 2023-12-03 14:56:23.229000             🧑  作者: Mango
下面是一个用C语言编写的程序,可以在控制台中绘制一个移动的船的图形。程序通过使用ASCII字符来绘制船的形状,并使用循环来实现船的移动效果。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void clearScreen() {
printf("\033[H\033[J");
}
void drawShip(int x, int y) {
clearScreen();
// 绘制船体
printf(" A\n");
printf(" / \\ \n");
printf(" /___\\ \n");
printf(" | |\n");
// 设置光标位置为船的位置
printf("\033[%d;%dH", y, x);
// 绘制船的尾部
printf("<~~~~~~~>\n");
}
int main() {
int x = 0; // 船的横坐标
int y = 0; // 船的纵坐标
int direction = 1; // 船的移动方向
while(1) {
drawShip(x, y);
// 根据船的移动方向更新坐标
x += direction;
// 如果到达屏幕边缘,反转移动方向
if (x <= 0 || x >= 80) {
direction *= -1;
}
usleep(100000); // 等待100ms
clearScreen();
}
return 0;
}
上述程序使用了一个drawShip
函数来绘制船的形状,该函数使用printf
语句打印一系列的ASCII字符来绘制船的轮廓。然后,程序在main
函数中使用一个无限循环来不断绘制和移动船的位置。通过更新船的横坐标x
并根据边缘条件反转移动方向,程序可以实现船的左右移动效果。
请注意,该程序使用了Linux/Unix环境下的ANSI转义序列(如\033[<X>;<Y>H
)来设置光标位置(其中<X>
和<Y>
表示行和列的位置)。在其他操作系统或环境中,您可能需要使用相应的方法来实现光标位置的设置和屏幕清理。
希望这个例子可以帮助您了解如何在C语言中绘制移动的图形并控制光标位置。