Menu Explicit/Hidden

c语言流星雨代码

以下是一个简单的C语言流星雨代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#define WIDTH 80
#define HEIGHT 20

typedef struct {
    int x;
    int y;
    int speed;
    char shape;
} Meteor;

void gotoxy(int x, int y) {
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

void drawMeteor(Meteor meteor) {
    gotoxy(meteor.x, meteor.y);
    printf("%c", meteor.shape);
}

void eraseMeteor(Meteor meteor) {
    gotoxy(meteor.x, meteor.y);
    printf(" ");
}

void updateMeteor(Meteor *meteor) {
    eraseMeteor(*meteor);
    meteor->y += meteor->speed;
    if (meteor->y >= HEIGHT) {
        meteor->y = 0;
        meteor->x = rand() % WIDTH;
        meteor->speed = rand() % 3 + 1;
    }
    drawMeteor(*meteor);
}

int main() {
    srand(time(NULL));

    Meteor meteors[10];
    for (int i = 0; i < 10; i++) {
        meteors[i].x = rand() % WIDTH;
        meteors[i].y = rand() % HEIGHT;
        meteors[i].speed = rand() % 3 + 1;
        meteors[i].shape = '*';
    }

    while (1) {
        for (int i = 0; i < 10; i++) {
            updateMeteor(&meteors[i]);
        }
        Sleep(50);
    }

    return 0;
}

这个代码使用了Windows API中的SetConsoleCursorPosition函数来控制光标位置,实现了流星雨的效果。在主函数中,首先使用srand函数设置随机数种子,然后创建了一个包含10个流星的数组。每个流星都有随机的初始位置、速度和形状。然后在一个无限循环中,不断更新每个流星的位置,并使用Sleep函数暂停一段时间,以控制流星的速度。

这个代码使用了Windows API中的SetConsoleCursorPosition函数来控制光标位置,实现了流星雨的效果。在主函数中,首先使用srand函数设置随机数种子,然后创建了一个包含10个流星的数组。每个流星都有随机的初始位置、速度和形状。然后在一个无限循环中,不断更新每个流星的位置,并使用Sleep函数暂停一段时间,以控制流星的速度。

在代码中,gotoxy函数用于将光标移动到指定的坐标位置,drawMeteor函数用于绘制流星,eraseMeteor函数用于擦除流星,updateMeteor函数用于更新流星的位置。

流星的更新规则是,首先擦除当前位置的流星,然后将流星的y坐标增加其速度,如果流星超出了屏幕的高度,则将其重新放置到屏幕顶部的随机位置,并随机生成新的速度。最后,绘制更新后的流星。

代码中的Sleep(50)函数用于暂停50毫秒,以控制流星的速度。你可以根据需要调整这个值来改变流星的速度。

请注意,这个代码只能在Windows系统上运行,并且需要在命令行窗口中运行。如果你想在其他平台上运行,需要使用相应的图形库来实现类似的效果。