📜  用图形绘制移动的船的C程序(1)

📅  最后修改于: 2023-12-03 14:56:23.229000             🧑  作者: Mango

用图形绘制移动的船的C程序

下面是一个用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语言中绘制移动的图形并控制光标位置。