中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-10 23:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 弹球小动画 查看 1,067 回复 9
楼 主 弹球小动画 发表于 2008-05-25 21:57 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@echo off&mode con cols=20 lines=29&color 2c
setlocal enabledelayedexpansion
title 弹球-zw19750516
set a=●&set "b= "
:begin
cls&set n=0
set /a lm=%random%%%19,lr=%random%%%2
if %lm% equ 0 (
set z=+
) else (
if %lm% equ 17 (
set z=-
) else (
if %lr% equ 0 (
set z=-
) else (
set z=+
)
)
)
:contin
set "kong="
set /a n+=1,lm%z%=1
for /l %%i in (1,1,%lm%) do set kong=!kong!%b%
set str%n%=%kong%%a%
if %n% equ 30 goto begin
if %lm% equ 0 set z=+
if %lm% equ 17 set z=-
set /p=!str%n%!<nul&ping /n 127.1>nul
for /l %%i in (1,1,20) do set /p= <nul
echo.
goto contin
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
PPdos +5 2008-05-25 22:02
pusofalse +5 2008-05-25 22:29
批处理之家新域名:www.bathome.net
2 发表于 2008-05-25 22:03 ·  法国
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
19年会员
UID 74627
性别 男
状态 离线
呵呵 有意思,有空研究一下楼兄代码
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
3 发表于 2008-05-25 22:26 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
转一个 弹球的。

@echo off&setlocal enabledelayedexpansion
mode con: cols=81 lines=30&color 1f
:: code by 随风@bbs.bathome.cn 2008/01/03
:loop
for /l %%a in (1 1 40) do (
if defined sang (
cls&set /a di-=1
for /l %%i in (1 1 !di!) do echo.
) else (echo.&set /a di+=1)
if defined zuo (set ko=!ko:~1!) else set ko= !ko!
set /p=!ko!●<nul
for /l %%i in (1 1 80) do ver>nul
set /p= <nul
if not "!ko:~38,1!"=="" set zuo=ok
if "!ko!"=="" set zuo=&set "ko= "
if !di! lss 0 set sang=&goto loop
if !di! geq 29 set sang=ok&goto loop
)

致精致简!
4 发表于 2008-05-25 22:37 ·  法国
高级用户
★★
积分 783
发帖 268
注册 2006-12-26 17:18
19年会员
UID 74627
性别 男
状态 离线
强中自有强中手阿 呵呵
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
5 发表于 2008-05-25 22:48 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
&&汗水。。。本来还想继续写出这个无限弹球来,现在从思路上一对比,还是做罢,
先好好学习下别人了。。。
ps:不过发现其轨迹固定,似有提高空间。。

[ Last edited by zw19750516 on 2008-5-25 at 10:53 PM ]
批处理之家新域名:www.bathome.net
6 发表于 2008-05-25 23:20 ·  中国 重庆 渝中区 电信
初级用户
★★
积分 198
发帖 89
注册 2007-09-06 23:22
18年会员
UID 96746
性别 男
来自 重庆
状态 离线
3楼的好简洁,思路NB。轨迹确实会重复,我想是因为“弹”的时候弹出角度是固定的45度,轨迹重复是难免的。
7 发表于 2008-05-26 00:45 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by WANKOILZ at 2008-5-25 23:20:
3楼的好简洁,思路NB。轨迹确实会重复,我想是因为“弹”的时候弹出角度是固定的45度,轨迹重复是难免的。

请看看下面的轨迹是不是重复的:

@echo off&mode con cols=60 lines=20
setlocal enabledelayedexpansion
title 调皮的汉字-zw19750516
set code=23456789abcdef我是调皮的汉字&set "b= "
set code1=%code:~14%&set d=-1
:begin
set n=0&set m=0&set x=+
set /a lm=%random%%%59,lr=%random%%%2,c=%random%%%14,d+=1
if %d% equ 7 set d=0
set a=!code1:~%d%,1!&set c=!code:~%c%,1!
color 0%c%
if %lm% equ 0 (
set z=+
) else (
if %lm% equ 57 (
set z=-
) else (
if %lr% equ 0 (
set z=-
) else (
set z=+
)
)
)
:contin
cls&for /l %%i in (1,1,%n%) do echo.
set "kong="
set /a n%x%=1,lm%z%=1,m+=1
if %n% equ 0 if %m% geq 100 goto begin
if %lm% equ 0 set z=+
if %lm% equ 57 set z=-
for /l %%i in (1,1,%lm%) do set kong=!kong!%b%
set str=%kong%%a%
if %n% equ 20 set x=-&goto contin
if %n% equ 0 set x=+&goto contin
echo %str%&ping /n 127.1>nul
goto contin


[ Last edited by zw19750516 on 2008-5-26 at 11:10 AM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
WANKOILZ +2 2008-05-27 14:51
批处理之家新域名:www.bathome.net
8 发表于 2008-05-26 23:36 ·  中国 重庆 奉节县 电信
中级用户
★★
积分 363
发帖 162
注册 2007-04-22 21:31
19年会员
UID 86104
性别 男
状态 离线
华山论剑
9 发表于 2008-05-27 14:52 ·  中国 重庆 渝中区 联通
初级用户
★★
积分 198
发帖 89
注册 2007-09-06 23:22
18年会员
UID 96746
性别 男
来自 重庆
状态 离线
支持7楼一个,有耐性。轨迹也没重复了,不过运行起来感觉效率不太高,不如3楼的流畅。
10 发表于 2008-12-13 10:35 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
我觉得,都是在同一个框框中,走重复的路是必然的,应该是属于"运动周期"的问题.
bat-zw前辈的只是因为设置成这样,并非效率问题
把自己那个随机游动粒子
改了又改……如下

@echo off &setlocal enabledelayedexpansion
title 这一版本code by hi.baidu.com/523066680
color 17 &mode con cols=60 lines=30
for /l %%a in (1,1,60) do (set space= !space!)
set /a La=14,Lb=28,Ca=29,Cb=56,r=1,r2=1
:loop
if %La% lss 28 (set /a La+=r2,line=La) else (set /a Lb-=r2,line=Lb)
if %Lb% leq 1 (set /a La=-1,Lb=29,r=%random%%%3+2,r2=2-r%%2)

if %Ca% lss 55 (set /a Ca+=r,col=Ca) else (set /a Cb-=r,col=Cb)
if %Cb% leq 4 (set /a Ca=0,Cb=56,r=%random%%%3+1)
cls
for /l %%a in (1,1,%line%) do echo,
echo,!space:~0,%col%!●
ping -n 1 127.1>nul
goto :loop
论坛跳转: