首页 电脑 电脑学堂 查看内容

教你用批处理实现黑客帝国数字雨

2009-7-14 13:15 830 0

摘要:   @echo off  ::关闭回显(不用说了吧)  color 0a  ::这句的意思是改变批处理的字体颜色,0a就是颜色代码(具体可以看Color命令)  :start  set num=0  ...
关键词: 变量 空格 echos 就是 set 一个 语句 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
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部