It seems to be fast enough.
But the program logic still is completely missing, so i don't know how fast it were in the result.
Nevertheless it is a nice option.
penpen
Off Topic Stuff
Moderator: DosItHelp
-
- Expert
- Posts: 960
- Joined: 15 Jun 2012 13:16
- Location: Italy, Rome
Re: Off Topic Stuff
I added the frog in one of the worst cases. On my pc it seems there is still a good margin. The logic is some set /a with a bit operations if we use a binary matrix for collisions and shifts.
EDIT: It is not the worst case.
einstein1969
Code: Select all
@echo off & setlocal enableDelayedExpansion
set /a cols=80,lines=43
rem color
pushd "%temp%"
for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "BS=%%a"
For /L %%c in (1,1,%cols%) do set "str_findstr=!str_findstr!L"
For /L %%l in (1,1,%cols%) do <nul set /p .=%BS%> "!str_findstr:~0,%%l!"
cls & mode %cols%,%lines% & color 07
:output
rem set "line_0_1=²²²²²² É» ²²²²²²²²²²²² ²²²²²²²²²²²² ²²²²²²²²²²²² ²²²²²²²²²²²² ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²"
rem set "line_0_2=²²²²²²ÊÊÊʲ²²²²²²²²²²² ²²²²²²²²²²²² ²²²²²²²²²²²² ²²²²²²²²²²²²
set "line_0_1=%BS%"
set "line_0_2=%BS%"
set "line_1_1= ÉÍËÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍÍÍ»"
set "line_1_2= ÈÍÊÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍÍÍͼ"
set "line_2_1=ÜÜ////ÜÜ//// ÜÜ////ÜÜ////ÜÜ////ÜÜ//// ÜÜ////ÜÜ////ÜÜ////ÜÜ//// ÜÜ////ÜÜ////"
set "line_2_2=ßß\\\\ßß\\\\ ßß\\\\ßß\\\\ßß\\\\ßß\\\\ ßß\\\\ßß\\\\ßß\\\\ßß\\\\ ßß\\\\ßß\\\\"
set "line_3_1=ÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
set "line_3_2=ÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ"
set "line_4_1=ÉÍËÍÍÍÍÍÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍ» ÉÍËÍÍÍÍÍÍÍÍÍÍ» "
set "line_4_2=ÈÍÊÍÍÍÍÍÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍͼ ÈÍÊÍÍÍÍÍÍÍÍÍͼ "
set "line_5_1=//ÜÜ////ÜÜ//// ÜÜ////ÜÜ////ÜÜ//// ÜÜ////ÜÜ////ÜÜ//// ÜÜ////ÜÜ////ÜÜ//// ÜÜ//"
set "line_5_2=\\ßß\\\\ßß\\\\ ßß\\\\ßß\\\\ßß\\\\ ßß\\\\ßß\\\\ßß\\\\ ßß\\\\ßß\\\\ßß\\\\ ßß\\"
rem set "line_6_1=°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"
rem set "line_6_2=°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"
set "line_6_1=%BS%"
set "line_6_2=%BS%"
set "line_7_1= ÜÜ_ÜÜÜÜÜ ÜÜ_ÜÜÜÜÜ ÜÜ_ÜÜÜÜÜ "
set "line_7_2= ßßîßßßßß ßßîßßßßß ßßîßßßßß "
set "line_8_1= ÌÄ=ÂÂÄ=¿ ÌÄ=ÂÂÄ=¿ ÌÄ=ÂÂÄ=¿ "
set "line_8_2= ÌÄ=ÁÁÄ=Ù ÌÄ=ÁÁÄ=Ù ÌÄ=ÁÁÄ=Ù "
set "line_9_1= ÚÄËÄË¿ ÚÄËÄË¿ ÚÄËÄË¿ "
set "line_9_2= ÀÄÊÄÊÙ ÀÄÊÄÊÙ ÀÄÊÄÊÙ "
set "line_10_1= ÜÄÄÜÜÜ_/ ÜÄÄÜÜÜ_/ ÜÄÄÜÜÜ_/ ÜÄÄÜÜÜ_/ ÜÄÄÜÜÜ_/ "
set "line_10_2= ßÄÄßßßî\ ßÄÄßßßî\ ßÄÄßßßî\ ßÄÄßßßî\ ßÄÄßßßî\ "
rem set "line_11_1=°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"
rem set "line_11_2=°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"
set "line_11_1=%BS%"
set "line_11_2=%BS%"
set "frog_1_0= Ú¿ "
set "frog_2_0=ÁÁÁÁ"
set "frog_1_1= ÌÄ¿"
set "frog_2_1= ÌÄÙ"
set "frog_1_2=ÂÂÂÂ"
set "frog_2_2= ÀÙ "
set "frog_1_3=ÚĹ "
set "frog_2_3=ÀĹ "
:: lines are all 112 characters long
set "LINE_LENGTH=112"
set /A "speed_0=0", "speed_1=-1", "speed_2=1", "speed_3=-1", "speed_4=-1", "speed_5=1"
set /A "speed_6=0", "speed_7=1", "speed_8=-2", "speed_9=2", "speed_10=-1", "speed_11=0"
for /L %%a in (0,1,11) do set /A "offset_%%a=0"
set /A "NORTH=0", "EAST=1", "SOUTH=2", "WEST=3"
set /A "frog.head=!NORTH!"
:next
rem 4 c e a 2 1 5
echo(
<nul set /p "=%BS% " & call :ColorText_bg_BS 4 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS c 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS e 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS a 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS 2 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS 1 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS 5 76
echo(
echo(
<nul set /p "=%BS% " & call :ColorText_bg_BS 2 6 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 13 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 13 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 13 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 13 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 3 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS 2 6 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 13 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 13 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 13 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 13 & call :ColorText_bg_BS 0 5 & call :ColorText_bg_BS 2 3 /N
For /L %%n in (1,1,10) do echo(
call :ColorText_bg_BS a 78 /N
call :ColorText_bg_BS a 78
For /L %%n in (1,1,9) do echo(
call :ColorText_bg_BS 5 78 /N
call :ColorText_bg_BS 5 78 /n
echo(
echo(
<nul set /p "=%BS% " & call :ColorText_bg_BS 5 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS 1 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS 2 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS a 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS e 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS c 76 /N
<nul set /p "=%BS% " & call :ColorText_bg_BS 4 76
set "T1=%TIME%"
set /A "N=112*2"
for /L %%k in (0,1,%N%) do (
rem cls
mode %cols%,%lines%
for /L %%L in (1,1,8) do echo(
rem echo 0 0
rem (
set "status= %%k/%N%"
echo(!status:~-78!
for /L %%l in (0,1,11) do (
set /A "frame=((%%k%%!LINE_LENGTH!)*!speed_%%l!)%%!LINE_LENGTH!"
:: echo set /A "frame=((%%k%%!LINE_LENGTH!)*!speed_%%l!)%%!LINE_LENGTH!", !frame!
for /F %%f in ("!frame!") do (
set "l_1=!line_%%l_1:~%%f!!line_%%l_1!"
set "l_2=!line_%%l_2:~%%f!!line_%%l_2!"
)
if %%l equ 6 (
set /a "posx=%%k %% 73+2, posx1=posx-1"
<nul set /p "=%BS% " & call :ColorText_bg_BS a !posx! & echo(É»
<nul set /p "=%BS% " & call :ColorText_bg_BS a !posx1! & echo(ÊÊÊÊ
) else (
echo( !l_1:~0,76!
echo( !l_2:~0,76!
)
)
rem ) > CON
pause
rem ping 192.0.2.0 -n 1 -w 500 >nul
)
(
echo %T1%
echo %TIME%
) > CON
popd
goto :eof
:ColorText_bg_BS bg_color len [/n]
(
set /a "len=%2-1"
if %1 equ 0 (set fg=1) else set fg=%1
if !len! geq 1 for %%. in (!len!) do findstr /v /a:%1!fg! /R "^$" "!str_findstr:~0,%%.!" nul
if /i "%~3"=="/n" echo(
goto :eof
)
EDIT: It is not the worst case.
einstein1969