Board logo

标题: 弹球小动画 [打印本页]

作者: bat-zw     时间: 2008-5-25 21:57    标题: 弹球小动画

@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

作者: PPdos     时间: 2008-5-25 22:03
呵呵 有意思,有空研究一下楼兄代码

作者: 26933062     时间: 2008-5-25 22:26
转一个 弹球的。
@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
)

作者: PPdos     时间: 2008-5-25 22:37
强中自有强中手阿 呵呵

作者: bat-zw     时间: 2008-5-25 22:48
&&汗水。。。本来还想继续写出这个无限弹球来,现在从思路上一对比,还是做罢, 先好好学习下别人了。。。 ps:不过发现其轨迹固定,似有提高空间。。 [ Last edited by zw19750516 on 2008-5-25 at 10:53 PM ]

作者: WANKOILZ     时间: 2008-5-25 23:20
3楼的好简洁,思路NB。轨迹确实会重复,我想是因为“弹”的时候弹出角度是固定的45度,轨迹重复是难免的。

作者: bat-zw     时间: 2008-5-26 00:45
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 ]

作者: clian76     时间: 2008-5-26 23:36
华山论剑

作者: WANKOILZ     时间: 2008-5-27 14:52
支持7楼一个,有耐性。轨迹也没重复了,不过运行起来感觉效率不太高,不如3楼的流畅。

作者: 523066680     时间: 2008-12-13 10:35
我觉得,都是在同一个框框中,走重复的路是必然的,应该是属于"运动周期"的问题. 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