Python 下雪函数 snow()

以下脚本可在命令行终端窗口中创建动画降雪效果。它不断更新并显示从终端顶部向底部飘落的雪花。雪花由 Unicode 字符表示(可随意更改!),它们的移动是通过更新它们在表示终端窗口的网格中的位置来模拟的。

import time
import random
import sys

def snow():
    # Manually set the terminal size
    h, w = 20, 80  # Adjust these values as needed
    flakes = [" ", " ", "❄︎", "❅", "❆"]

    # Initialize air space
    air = [[1 for _ in range(h)] for _ in range(w)]

    try:
        while True:
            # Update snowflakes
            for x in range(w):
                for y in range(h - 1, -1, -1):
                    if y == 0:
                        # Generate new snowflake
                        air[x][y] = random.choice(range(1, len(flakes))) if random.random() < 0.1 else 1
                    else:
                        # Move snowflake down
                        air[x][y] = air[x][y - 1]

            # Print snowflakes
            for y in range(h):
                for x in range(w):
                    print(flakes[air[x][y]], end="")
                print()

            # Reset cursor to top
            sys.stdout.write("\033[F" * h)
            time.sleep(0.2)

    except KeyboardInterrupt:
        pass

snow()

它是此处为 Julia 版代码的 Python 变体。

让我们以连贯而有条理的方式分解基于终端的降雪动画 Python 脚本。

我使用了以下三个模块:

  1. time:用于在动画循环中引入延迟。
  2. random:随机生成随机数,用于随机放置雪花。
  3. sys:处理终端操作,如光标定位。

snow() 函数是实现降雪动画的核心函数。

  • 设置终端尺寸:
    h、w = 20、80:定义动画终端窗口的尺寸(h 表示高度,w 表示宽度)。
  • 雪花字符图:
    flakes = [" ", " ", "❄︎", "❅", "❆"]:用于显示雪花和空格的字符列表。您可以在此处插入任何雪花字符。
  • 初始化空间:
    air = [[1 for _ in range(h)] for _ in range(w)]:初始化代表终端窗口的二维网格。每个单元格可以是雪花,也可以是空的。

下面的循环会一直重复,直到你终止计算:

  • 持续更新: while True 循环使动画持续运行,直到手动停止。
  • 更新雪花:顶行的雪花有机会新生成。其他行的雪花会向下移动一个位置。
  • 显示雪花:迭代网格,根据雪花的更新位置打印雪花。
  • 重置光标:将光标移回终端顶部,覆盖上一帧。
  • 帧延迟time.sleep(0.2) 短暂暂停循环,以控制降雪速度。

您可以使用键盘中断(如 Ctrl+C)来停止动画。

调用 snow() 会激活函数并启动降雪动画。不过,您需要在终端(Linux)或 Powershell/cmd(Windows)上运行 python your_script.py,前提是您已将代码存储在文件 your_script.py。简单。

余下全文(1/3)
分享这篇文章:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注