You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Batch实现带指定数字黄色高亮的矩阵数字雨

解决Batch矩阵数字雨的两个核心问题

问题A:单独高亮指定数字

要实现单个数字的颜色区分,不能整行调用颜色函数,必须逐个生成并判断每个数字:

  • 先固定目标数字(比如set "destined_digit=5")
  • 对每个生成的随机数字单独判断:匹配目标数字就用黄色(06)输出,否则用默认绿色(02)输出
  • 依赖延迟扩展保证循环中变量能实时更新

问题B:实现多竖线矩阵雨效果

Batch没有原生数组,但可以用带后缀的变量模拟数组(比如col_1、col_2)跟踪每列状态:

  • 定义矩阵列数、每列最大下落长度,控制雨滴的规模
  • 逐行刷新屏幕,每列随机生成新数字,当列的长度达到上限后重置,模拟雨滴下落消失的效果
  • 用短延迟控制刷新节奏,避免屏幕过度闪烁

完整改进代码

@echo off
setlocal EnableDelayedExpansion
color 02

:: 可自定义参数
set "destined_digit=5"  :: 需要高亮的目标数字
set "cols=15"           :: 矩阵雨的总列数
set "max_length=10"     :: 每列雨滴的最大长度
set "delay=100"         :: 刷新间隔(毫秒,值越小速度越快)

:: 初始化每列的长度变量
for /l %%i in (1,1,%cols%) do set "col_len_%%i=0"

:: 颜色输出工具函数
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
    set "DEL=%%a"
)
:color_print
echo off
echo !DEL! > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof

:loop
cls
:: 逐列生成当前行的数字
for /l %%i in (1,1,%cols%) do (
    :: 生成单个随机数字
    set "rand_num=!random:~-1!"
    :: 判断是否为目标数字,选择对应颜色输出
    if "!rand_num!" equ "%destined_digit%" (
        call :color_print 06 "!rand_num! "
    ) else (
        call :color_print 02 "!rand_num! "
    )
    :: 更新当前列的长度,超过上限后重置
    set /a col_len_%%i+=1
    if !col_len_%%i! gtr !max_length! set "col_len_%%i=0"
)
:: 控制刷新速度
ping -n 1 -w %delay% 127.0.0.1 > nul
goto loop

代码关键说明

  • 用col_len_%%i模拟数组,跟踪每列的下落进度,达到最大长度后重置,还原雨滴消失的视觉效果
  • 每个数字单独调用颜色函数,实现目标数字的单独黄色高亮,不干扰整体绿色矩阵雨
  • 修改cols、max_length、delay这三个参数,可以自定义矩阵雨的宽度、雨滴长度和下落速度

内容的提问来源于stack exchange,提问作者keikats

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:22:42