以下是一個(gè)簡單的C語言下雪動畫的代碼示例:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h> // 用于Sleep函數(shù)
#define WIDTH 80 // 屏幕寬度
#define HEIGHT 25 // 屏幕高度
#define SNOW_NUM 100 // 雪花數(shù)量
typedef struct {
int x;
int y;
} Snowflake;
Snowflake snowflakes[SNOW_NUM]; // 雪花數(shù)組
// 初始化雪花位置
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); // 延時(shí)
}
return 0;
}
該代碼使用windows.h
庫中的COORD
結(jié)構(gòu)和SetConsoleCursorPosition
函數(shù)來實(shí)現(xiàn)在控制臺中繪制雪花的效果。在initSnowflakes
函數(shù)中,初始化了SNOW_NUM
個(gè)雪花的隨機(jī)位置。在updateSnowflakes
函數(shù)中,每次循環(huán)將雪花的y坐標(biāo)加1,并當(dāng)y坐標(biāo)超過屏幕高度時(shí)重新隨機(jī)分配位置。在drawSnowflakes
函數(shù)中,使用SetConsoleCursorPosition
函數(shù)將光標(biāo)移動到指定位置,并打印"*"來表示雪花。在main
函數(shù)中,使用無限循環(huán)不斷更新、清屏和繪制雪花的效果,并通過Sleep
函數(shù)控制動畫的延時(shí)。