以下是一个简单的C语言下雪动画的代码示例:
#include <stdio.h>#include <stdlib.h>#include <windows.h> // 用于Sleep函数#define WIDTH 80 // 屏幕宽度#define HEIGHT 25 // 屏幕高度#define SNOW_NUM 100 // 雪花数量typedef struct { int x; int y;} Snowflake;Snowflake snowflakes[SNOW_NUM]; // 雪花数组// 初始化雪花位置void initSnowflakes() { int i; for (i = 0; i < SNOW_NUM; i++) { snowflakes[i].x = rand() % WIDTH; snowflakes[i].y = rand() % HEIGHT; }}// 更新雪花位置void updateSnowflakes() { int i; for (i = 0; i < SNOW_NUM; i++) { snowflakes[i].y++; if (snowflakes[i].y >= HEIGHT) { snowflakes[i].y = 0; snowflakes[i].x = rand() % WIDTH; } }}// 绘制雪花void drawSnowflakes() { int i; for (i = 0; i < SNOW_NUM; i++) { COORD coord = {snowflakes[i].x, snowflakes[i].y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); printf("*"); }}int main() { initSnowflakes(); // 初始化雪花位置 while (1) { updateSnowflakes(); // 更新雪花位置 system("cls"); // 清屏 drawSnowflakes(); // 绘制雪花 Sleep(100); // 延时 } return 0;}
该代码使用windows.h
库中的COORD
结构和SetConsoleCursorPosition
函数来实现在控制台中绘制雪花的效果。在initSnowflakes
函数中,初始化了SNOW_NUM
个雪花的随机位置。在updateSnowflakes
函数中,每次循环将雪花的y坐标加1,并当y坐标超过屏幕高度时重新随机分配位置。在drawSnowflakes
函数中,使用SetConsoleCursorPosition
函数将光标移动到指定位置,并打印"*"来表示雪花。在main
函数中,使用无限循环不断更新、清屏和绘制雪花的效果,并通过Sleep
函数控制动画的延时。