标题: [特效代码] [求助]渐显效果的批处理优化 [打印本页]
作者: 523066680 时间: 2009-11-21 20:33 标题: [求助]渐显效果的批处理优化
唉,都说批处理不适合写特效,于是这些天我打算学opengl去,
折腾了一段时间,现在才懂一些基础操作,
想先做个简单的用批处理做过的效果,结果马上就碰钉了。
我想写一个渐显的效果先看下高彩和高分辨率的效果~
思路和下面类似,但是高分辨率的假如是选择500*500的大小,
用这个思路做,那就是250000个变量啊 TxT
寻求比较节省资源的思路……
用批处理做,效率低的问题也更明显~ 你看,连ping 都不用……- @echo off
- setlocal enabledelayedexpansion
- set /a cols=20,lines=10,act=0
- for /l %%a in (1,1,%cols%) do (set spc=+!spc!)
- for /l %%a in (1,1,%lines%) do (set l%%a=%spc%)
- for /l %%a in (1,1,%cols%) do (
- for /l %%b in (1,1,%lines%) do (
- set /a act+=1
- set num[!act!]="x=%%a,y=%%b"
- )
- )
- :act
- set /a rand=%random% %% act + 1
- set /a !num[%rand%]:"=!,xa=x-1
- set num[%rand%]=!num[%act%]!
- set l%y%=!l%y%:~0,%xa%! !l%y%:~%x%!
- cls
- for /l %%a in (1,1,%lines%) do (echo,!l%%a!)
- if %act% gtr 0 (set /a act-=1 &goto :act)
- pause
复制代码
在用c语言做的时候,临时解决这个是把点放大,于是坐标就放宽了……
见图
[ 本帖最后由 523066680 于 2009-11-21 21:05 编辑 ]
作者: netbenton 时间: 2009-11-21 22:30
- @echo off&setlocal enabledelayedexpansion
- set /a cols=40,lines=20,act=0
-
- set cr=^
-
-
- rem 定义换行符号到变量,(注意要空两行)
-
- for /l %%a in (1,1,%cols%) do (set spc=+!spc!)
- for /l %%a in (1,1,%lines%) do (
- set l%%a=%spc%
-
- set ech=!ech!^^!L%%a^^!^^!cr^^!
- rem 保存显示行变量名
-
- set rrr=!rrr! ^^!RR%%a^^!
- rem 保存随机数据变量名
-
- for /l %%b in (1,1,%cols%) do (
- set /a ra=!random!%%%lines%+1,rb=!random!%%2
- for %%c in (!ra!) do (
- if !rb! equ 0 (
- set RR%%c=!RR%%c! %%a_%%b
- ) else (
- set RR%%c=%%a_%%b !RR%%c!
- )
- )
- )
- )
- rem 第一次打乱
-
-
- for %%a in (%rrr%) do (
- set /a ra=!random!%%%lines%+1,rb=!random!%%2
- for %%c in (!ra!) do (
- if !rb! equ 0 (
- set RC%%c=!RC%%c! %%a
- ) else (
- set RC%%c=%%a !RC%%c!
- )
- )
- )
- rem 第二次打乱
-
-
- rem 将打乱的空间数据按顺序取用
- for %%a in (%rrr:RR=RC%) do (
- for /f "tokens=1,2 delims=_" %%b in ("%%a") do (
- set/a x=%%c-1
- for %%d in (!x!) do (
- set l%%b=!l%%b:~0,%%d! !l%%b:~%%c!
- )
- )
- cls&echo;%ech%
- rem %ech% =>!L1!!cr!!L2!!cr!... =>显示数据
- )
-
- pause
- ::代码特点,在初始化时要较多时间,但是为刷屏争取到了时间
复制代码
作者: cjiabing 时间: 2009-11-22 12:02
哇,好漂亮,先学习,有空研究
作者: 523066680 时间: 2009-11-22 12:08
转行那里学习了(当然,以前也见到netbenton用拉~)
在打乱上,我觉得用排除法还是不错的,
一维数组也可以用来记录二维信息,只要知道列和行即可实现,
我会把一维数组指定范围内随机抽取,然后缩小范围,把缩小后范围外没抽取的值拉进来
(反正固定是 抽取过的变量=此次被排在外的变量,假如抽的刚好就是被排的那个,那也刚好被排除了。
不用判断^_^)
(然后想了很久都没想到可以节省储存空间的思路。于是在c中就把点放大了做。)- @echo off
- setlocal enabledelayedexpansion
- set /a cols=20,lines=10,max=cols*lines
- for /l %%a in (1,1,%cols%) do (set spc=+!spc!)
- for /l %%a in (1,1,%lines%) do (set l%%a=%spc%)
- for /l %%a in (1,1,%max%) do (set num[%%a]=%%a)
- :act
- set /a rand=%random% %% max + 1
- set /a x=num[%rand%]%%cols,y=(num[%rand%]-1)/cols+1,xb=x+1
- set /a num[%rand%]=num[%max%]
- set l%y%=!l%y%:~0,%x%! !l%y%:~%xb%!
- cls
- for /l %%a in (1,1,%lines%) do (echo,!l%%a!)
- if %max% gtr 1 (set /a max-=1 &goto :act)
- pause
复制代码
[ 本帖最后由 523066680 于 2009-11-22 12:19 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |