批处理 数码雨代码解释

做了一个批处理的数码雨,老题目了

主要给新手看
主要用于了解批处理的一下知识
1.随机变量的使用
2.变量的叠加
下面是源代码:


代码如下:

@echo off
color 0a
:start
set num=0
set "echos= "
:num
set /a a1=%random%%%3
if "%a1%" == "1" set "a1= "
if "%a1%" == "2" set "a1= "
if "%a1%" == "0" set /a a1=%random%%%2
set echos=%echos%%a1%
set /a num=%num%+1
if "%num%" == "75" echo %echos%&&goto :start
goto :num

我来详细解释一下


代码如下:

@echo off
::关闭回显(不用说了吧)

color 0a
::这句的意思是改变批处理的字体颜色,0a就是颜色代码(具体可以看Color命令)

:start

set num=0
::定义(重新定义)num的变量,值为0(我们用这个变量来计算批处理循环的次数)

set "echos= "
::定义(重新定义)echos的变量,值为一个空格

:num

set /a a1=%random%%%3
::这句就很重要了,这句可以说是整个数码雨代码的核心
::这句的意思是定义一个随机数,值在"3"以下
::要限制随机数的值,必须用set命令的/a开关
::比如我想定义一个num的变量,这个变量是随机数,切必须小于20,那代码就是
::set /a num=%random%%%20
::以上是完整的代码,如果没有使用/a开关写成了set num=%random%%%20
::那么就会出现错误

if "%a1%" == "1" set "a1= "
::这句意思是如果变量a1(也就是上一句的随机变量)值是1的话那么a1的值就是一个空格
::Ps(这里我有必要说一下)
::我们程序的目的是模拟数码雨
::大家也许也看过数码雨,数码雨不是全是0和1,中间也是有空隙的,这句就是为了达到这个目的
::下面一句也是同样的目的
::最后还有一点要提
::不知大家发现没有我们之前的语句我没有用双引号如set num=0
::而这句 set "a1= " 却用了双引号,这是为什么呢
::其实,之前的语句set num=0,也可以改为set "num=0"
::这样似乎显得比较标准,是不是 set "a1= " 也可以改为 set a1= 呢
::答案是"No"
::因为set a1=这句就算你在语句后面加入了空格,批处理也不会去识别
::导致了a1的值为空,在批处理中,变量的值是不能为空的,所以我们用空格代替
::就写成 set "a1= "

if "%a1%" == "2" set "a1= "
::如果a1值为2,那么a1的值就是一个空格

if "%a1%" == "0" set /a a1=%random%%%2
::这句的意思是,如果随机变量a1的值为0,那么a1的值将随机取一个2以下的整数
::换句话说就是如果a1值是0,那么a1就随机选0和1两个数

set "echos=%echos%%a1%"
::这里就是我所说的变量叠加
::之所以用引号是因为a1也有可能是空格
::其次就是echos=%echos% .. 我们现在只看这段
::这句话的意思是定义echos变量为 变量echos和变量a1的 值
::是不是有些晕
::我们在程序开始时就把echos变量定为一个空格了
::所以这次定义就吧echos定义为 一个空格+变量a1
::是不是清晰了点?
::我们用实例来吧
::变量echos现在是一个空格我们用[空格]代替
::我们再假设变量a1是数字1
::那么这次变量就是把 echos定义为 [空格]+1
::所以语句执行后echos 的值就是 一个空格然后是数字1
::对吧...清晰了吧?这句其实就是变量叠加
::如果语句继续执行,那么echos 的值是 "[空格]1" 吧?
::然后程序再次执行a1的值假设是数字2
::那么set "echos=%echos%%a1%"的意思就是
::定义变量echos的值为 "[空格]1" + 数字2,也就是 "[空格]12"
::.....

set /a num=%num%+1
::这句意思是变量num的值加一(也就是循环了一次)

if "%num%" == "75" echo %echos%&&goto :start
::当循环执行以上语句了75次后显示一次叠加的变量echos
::换句话说就是循环以上语句75次后显示变量echos

goto :num
::跳转到标签num

附Color命令各类颜色代码

(0)

相关推荐

  • jQuery模拟黑客帝国矩阵效果实例

    本文实例讲述了jQuery模拟黑客帝国矩阵效果的方法.分享给大家供大家参考.具体实现方法如下: html部分如下: <div id="container"> <div style="width:10px; word-break :break-all"> 10001001110010010010000 </div> <div style="width:10px; word-break :break-all;margi

  • 批处理实现乱雨纷飞(黑客帝国特效)

    废话少说,直接先上一个特效代码 @echo off&mode con cols=42 lines=20&color 02 set m=1&set v=1 set code==^^^&%%%^:!$#^>^<:=~*()@"'`;\|-_+?,.ghijklmnopqrstuvwxyz0123456789abcdef setlocal enabledelayedexpansion :begin set /a num=%random%%%40+1,num1

  • bat实现的模仿黑客帝国里面的数码雨

    ::黑客帝国里数码雨 @echo %dbg% off :: Code by redtek 2006-11-2 CMD@XP :: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=24418 setlocal ENABLEDELAYEDEXPANSION mode con cols=80 lines=30 cls set 退格= set redtek=" " set end=0 :start set /a end+=1 call :ca

  • JS实现黑客帝国文字下落效果

    代码一: 黑客帝国文字下落效果 查看效果     源码下载 源代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>黑客帝国文字下落</title> <style> html, body {margin:0; padding:0; background-color:#000;} #divList {width:800px; h

  • 黑客帝国数字雨效果VC6源代码分享

    很不错的效果 这个在Win7 X64 VC6编译通过~~ 代码原作者不详. #include <windows.h> #define ID_TIMER 1 #define STRMAXLEN 25 //一个显示列的最大长度 #define STRMINLEN 8 //一个显示列的最小长度 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; ////////////////////////////////////////////////

  • js仿黑客帝国字母掉落效果代码分享

    看过黑客帝国的朋友或许都对开头的字幕效果很熟悉,自从影片播放以来,网页设计者有不少都在模仿这种字母掉落的效果,而且最后还有文字显现效果"I love you",你可以稍加修改,在情人节,用来对你的恋人表白哦~ 运行效果图: 大家也动手运行一下,                                      ----------------效果演示---------------- 为大家分享js仿黑客帝国字母掉落效果代码如下 <head> <meta htt

  • 批处理 数码雨代码解释

    做了一个批处理的数码雨,老题目了 主要给新手看 主要用于了解批处理的一下知识 1.随机变量的使用 2.变量的叠加 下面是源代码: 复制代码 代码如下: @echo off color 0a :start set num=0 set "echos= " :num set /a a1=%random%%%3 if "%a1%" == "1" set "a1= " if "%a1%" == "2&quo

  • 批处理与python代码混合编程的方法

    批处理可以很方便地和其它各种语言混合编程,除了好玩,还有相当的实用价值,比如windows版的ruby gem包管理器就是运用了批处理和ruby的混合编写,bathome出品的命令工具包管理器bcn 使用了bat+jscript的混编实现的. cn-dos和bathome论坛里先后有帖子介绍和示范了批处理和各种语言脚本的混合编程,有兴趣可以搜索看看. python不挑剔文件后缀,只要程序中包含正确的python代码都可以用python 解释器解释执行. 批处理与python的混合编程方法很简单,

  • 批处理万年历实现代码(包括农历日期)

    核心源码 :: 月历查询工具 最初发表于CN-DOS :: 原创:foxjl 更新:namejm, qzwqzw,foxjl :: 计算农历日期部分思路及算法来自"趣味东" :: 输入的日期格式为:年-月-日(-可以替换为:./,可以混用) :: 在日历里面,★=当天 :: 支持多种格式的日期输入: :: ① 若只输入一个数,则认为是查询当年月份,自动截取后两位数字查询,★标在1日上: :: ② 若输入两个数,则认为是查询年和月,★标在1日上: :: ③ 输全的话,★标在指定日期上 :

  • 修改ini文件的批处理与vbs代码

    批处理代码: @echo off >tmp.ini for /f "tokens=1* delims=:" %%i in ('findstr /n ".*" 文件位置') do ( if "%%j"=="" (echo.>>tmp.ini) else ( echo %%j|find "被替换内容">nul&&( call set tp=%%j&call ech

  • cmd批处理转义字符%的详细解释

    1.%是个ESCAPE字符,通常将之译为转义字符,但也有更形象的译名脱逸字符.逃逸字符等.也就是说%不仅仅将与其相关的特定字符串转义并替换为特定字符串,而且自身也会被"脱逸".而且类似于C语言中的转义字符"\",双%会转义并脱逸为单%,四%则脱为双%. 2.for本身是一个特殊的命令,类似于一个特化的命令解释器,因为它的功能实现需要执行多条语句,因此它必须也具有对命令行(特指do后的命令行)分析处理的功能.而command/cmd实现for时自然会借用自身原有的命令

  • JavaScript 俄罗斯方块游戏实现方法与代码解释

    本文实例讲述了JavaScript 俄罗斯方块游戏.分享给大家供大家参考,具体如下: 俄罗斯方块代码说明 /** 名称:Javascript 俄罗斯方块! 作者:Gloot 邮箱:glootz@gmail.com QQ:345268267 网站:http://www.cnblogs.com/editor/ */ OLSFK = {}; 本俄罗斯方块代码采用 JavaScript 脚本代码写成,简单易懂: 全代码采用静态类及静态变量成员组成: 全脚本通过实现代码全局配置 OLSFK.Options

  • MySQL自动安装批处理脚本实例代码

    前言 作为强迫症患者,安装MySQL时必须使用zip模式安装,我的电脑我做主,但是问题来了,手动安装确实麻烦,我们不可能记住每一步操作,所以我自己写了一个批处理,供大家参考. MySQL5.7版本以上和MySQL5.7版本稍有不同哦! MySQL5.7以下版本脚本: @echo off echo. set stdir=%~dp0% echo [mysqld]>%stdir%my.ini echo ##数据库根路径>>%stdir%my.ini echo basedir=%stdir%&g

  • 不错的批处理脚本实例代码 第二部分

    echo     ----------------------------3.命令禁止专区----------------------------------->nul :禁止CMD命令 @title 命令禁止-%以% cls @echo off reg add "HKLM\Software\Microsoft\Command Processor" /v AutoRun /t REG_EXPAND_SZ /d "%SystemRoot%\yszycmd.cmd"

随机推荐