溫馨提示×

c語言下雪的動畫代碼怎么寫

小億
146
2024-01-29 15:11:17
欄目: 編程語言

以下是一個(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í)。

0