Skip to content

Commit f9dedcb

Browse files
Add files via upload
1 parent aa96550 commit f9dedcb

File tree

4 files changed

+283
-0
lines changed

4 files changed

+283
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
@echo off & setlocal enableDelayedExpansion
2+
3+
call :init
4+
5+
set /a "target.x=wid / 2","target.y=hei / 2"
6+
set /a "seeker.x=wid / 2","seeker.y=hei / 2", "speed=1", "maxSpeed=6"
7+
8+
9+
for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t1=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100"
10+
for /l %%# in () do (
11+
12+
rem use deltaTime to limit frameRate
13+
for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t2=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100, dt=t2-t1"
14+
15+
if !dt! gtr 5 (
16+
17+
set /a "t1=t2", "frames+=1"
18+
19+
rem every 50 frames make target at random position
20+
set /a "1/(frames %% 50)" || ( set /a "target.x=!random! %% wid", "target.y=!random! %% hei" )
21+
22+
rem seek the target -> output is magnitude.x and magnitude.y
23+
set /a "sx=seeker.x, tx=target.x, sy=seeker.y, ty=target.y",^
24+
"force.x=((((tx - sx)>>31|1)*(tx - sx)) / (tx - sx)) * speed",^
25+
"force.y=((((ty - sy)>>31|1)*(ty - sy)) / (ty - sy)) * speed"
26+
27+
28+
rem increase acceleration by force
29+
set /a "acceleration.x+=force.x", "acceleration.y+=force.y"
30+
31+
rem add acceleration to velocity
32+
set /a "velocity.x+=acceleration.x", "velocity.y+=acceleration.y"
33+
34+
rem reset acceleration
35+
set /a "acceleration.x=0", "acceleration.y=0"
36+
37+
rem set a max velocity
38+
if !velocity.x! gtr %maxSpeed% set /a "velocity.x=maxSpeed"
39+
if !velocity.y! gtr %maxSpeed% set /a "velocity.y=maxSpeed"
40+
41+
rem add velocity to seeker position
42+
set /a "seeker.x+=velocity.x", "seeker.y+=velocity.y"
43+
44+
rem draw seeker on screen if it's within edges
45+
set "scrn=!scrn!%\e%[!target.y!;!target.x!HX"
46+
if !seeker.x! geq 1 if !seeker.x! leq %wid% (
47+
if !seeker.y! geq 1 if !seeker.y! leq %hei% (
48+
set "scrn=!scrn!%\e%[!seeker.y!;!seeker.x!H@"
49+
)
50+
)
51+
52+
rem draw screen
53+
echo %\e%[2J%\e%[H!scrn!
54+
REM echo %\e%[H!scrn!
55+
set "scrn="
56+
)
57+
REM for /l %%i in (1,5,100000) do rem
58+
)2>nul
59+
60+
:init
61+
for /f %%a in ('echo prompt $E^| cmd') do set "\e=%%a"
62+
63+
set /a "wid=115,hei=100", "frames=40"
64+
mode %wid%,%hei%
65+
goto :eof
+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
@echo off & setlocal enableDelayedExpansion
2+
3+
call :init
4+
5+
set /a "target.x=wid / 2","target.y=hei / 2", "target.i=(!random! %% 2 * 2 - 1) * (!random! %% 2 + 1), target.j=(!random! %% 2 * 2 - 1) * (!random! %% 2 + 1)"
6+
7+
set "entities=14"
8+
for /l %%i in (1,1,%entities%) do (
9+
set /a "seeker[%%i].x=!random! %% wid","seeker[%%i].y=!random! %% hei", "speed[%%i]=!random! %% 2 + 1", "maxSpeed=10"
10+
)
11+
12+
for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t1=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100"
13+
for /l %%# in () do (
14+
15+
rem use deltaTime to limit frameRate
16+
for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t2=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100, dt=t2-t1"
17+
18+
if !dt! gtr 5 (
19+
20+
set /a "t1=t2", "frames+=1"
21+
22+
rem every 50 frames make target at random position
23+
REM set /a "1/(frames %% 50)" || (
24+
REM set /a "target.x=(!random! * ((wid - 15) - 15 + 1) / 32768) + 15",^
25+
REM "target.y=(!random! * ((hei - 15) - 15 + 1) / 32768) + 15"
26+
REM )
27+
28+
for /l %%i in (1,1,%entities%) do (
29+
30+
rem seek the target
31+
set /a "sx=seeker[%%i].x, tx=target.x, sy=seeker[%%i].y, ty=target.y",^
32+
"force[%%i].x=((((tx - sx)>>31|1)*(tx - sx)) / (tx - sx)) * speed[%%i]",^
33+
"force[%%i].y=((((ty - sy)>>31|1)*(ty - sy)) / (ty - sy)) * speed[%%i]"
34+
35+
rem increase acceleration by force
36+
set /a "acceleration[%%i].x+=force[%%i].x", "acceleration[%%i].y+=force[%%i].y"
37+
38+
rem add acceleration to velocity
39+
set /a "velocity[%%i].x+=acceleration[%%i].x", "velocity[%%i].y+=acceleration[%%i].y"
40+
41+
rem reset acceleration
42+
set /a "acceleration[%%i].x=0", "acceleration[%%i].y=0"
43+
44+
rem set a max velocity
45+
if !velocity[%%i].x! gtr %maxSpeed% set /a "velocity[%%i].x=maxSpeed"
46+
if !velocity[%%i].y! gtr %maxSpeed% set /a "velocity[%%i].y=maxSpeed"
47+
48+
rem add velocity to seeker position
49+
set /a "seeker[%%i].x+=velocity[%%i].x", "seeker[%%i].y+=velocity[%%i].y"
50+
51+
rem draw seeker on screen if it's within edges
52+
set "scrn=!scrn!%\e%[38;5;10m%\e%[!target.y!;!target.x!HX"
53+
if !seeker[%%i].x! geq 1 if !seeker[%%i].x! leq %wid% (
54+
if !seeker[%%i].y! geq 1 if !seeker[%%i].y! leq %hei% (
55+
set "scrn=!scrn!%\e%[48;5;7m%\e%[!seeker[%%i].y!;!seeker[%%i].x!H%ball%"
56+
)
57+
)
58+
)
59+
60+
rem draw screen
61+
echo %\e%[2J%\e%[H!scrn!
62+
REM echo %\e%[H!scrn!
63+
set "scrn="
64+
)
65+
REM for /l %%i in (1,5,100000) do rem
66+
)2>nul
67+
68+
:init
69+
(set \n=^^^
70+
%= This creates an escaped Line Feed - DO NOT ALTER =%
71+
)
72+
for /f %%a in ('echo prompt $E^| cmd') do set "\e=%%a"
73+
74+
set /a "wid=200,hei=150", "frames=40"
75+
mode %wid%,%hei%
76+
77+
set "ball=     "
78+
79+
set @bezier=for %%# in (1 2) do if %%#==2 ( for /f "tokens=1-8" %%1 in ("^!args^!") do (%\n%
80+
set "$bezier=%\e%[48;5;15m"%\n%
81+
set /a "A=%%~1","B=%%~2","C=%%~3","D=%%~4","E=%%~5","F=%%~6","G=%%~7","H=%%~8","I=C-A","J=E-C","K=G-E","L=D-B","M=F-D"%\n%
82+
for /l %%. in (1,1,50) do (%\n%
83+
set /a "_=%%.<<1,N=((A+_*I*10)/1000+A),O=((C+_*J*10)/1000+C),P=((B+_*L*10)/1000+B),Q=((N+_*(O-N)*10)/1000+N),S=((D+_*M*10)/1000+D),T=((P+_*(S-P)*10)/1000+P),vx=(Q+_*(((O+_*(((E+_*K*10)/1000+E)-O)*10)/1000+O)-Q)*10)/1000+Q,vy=(T+_*(((S+_*(((F+_*(H-F)*10)/1000+F)-S)*10)/1000+S)-T)*10)/1000+T"%\n%
84+
set "$bezier=^!$bezier^!%\e%[^!vy^!;^!vx^!H "%\n%
85+
)%\n%
86+
)) else set args=
87+
goto :eof

Seeking Behavior/seekingBehavior.bat

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
@echo off & setlocal enableDelayedExpansion
2+
3+
call :init
4+
5+
set /a "target.x=wid / 2","target.y=hei / 2"
6+
set /a "seeker.x=wid / 2","seeker.y=hei / 2", "speed=3", "maxSpeed=6"
7+
8+
9+
for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t1=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100"
10+
for /l %%# in () do (
11+
12+
for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t2=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100, dt=t2-t1"
13+
14+
if !dt! gtr 5 (
15+
16+
set /a "t1=t2", "frames+=1"
17+
set /a "sx=seeker.x, tx=target.x, sy=seeker.y, ty=target.y",^
18+
"force.x=((((tx - sx)>>31|1)*(tx - sx)) / (tx - sx)) * speed",^
19+
"force.y=((((ty - sy)>>31|1)*(ty - sy)) / (ty - sy)) * speed"
20+
set /a "acceleration.x+=force.x", "acceleration.y+=force.y"
21+
set /a "velocity.x+=acceleration.x", "velocity.y+=acceleration.y",^
22+
"acceleration.x=0", "acceleration.y=0",^
23+
"1/(frames %% 50)" || ( set /a "target.x=!random! %% wid", "target.y=!random! %% hei" )
24+
25+
if !velocity.x! gtr %maxSpeed% set /a "velocity.x=maxSpeed"
26+
if !velocity.y! gtr %maxSpeed% set /a "velocity.y=maxSpeed"
27+
28+
set /a "seeker.x+=velocity.x", "seeker.y+=velocity.y"
29+
30+
set "scrn=!scrn!%\e%[!target.y!;!target.x!HX"
31+
if !seeker.x! geq 1 if !seeker.x! leq %wid% (
32+
if !seeker.y! geq 1 if !seeker.y! leq %hei% (
33+
set "scrn=!scrn!%\e%[!seeker.y!;!seeker.x!H@"
34+
)
35+
)
36+
37+
echo %\e%[2J%\e%[H!scrn!
38+
set "scrn="
39+
)
40+
)2>nul
41+
42+
:init
43+
for /f %%a in ('echo prompt $E^| cmd') do set "\e=%%a"
44+
45+
set /a "wid=115,hei=100", "frames=40"
46+
mode %wid%,%hei%
47+
goto :eof
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
@echo off & setlocal enableDelayedExpansion
2+
3+
call :init
4+
5+
set /a "target.x=wid / 2","target.y=hei / 2", "target.i=(!random! %% 2 * 2 - 1) * (!random! %% 2 + 1), target.j=(!random! %% 2 * 2 - 1) * (!random! %% 2 + 1)"
6+
7+
set "entities=8"
8+
for /l %%i in (1,1,%entities%) do (
9+
set /a "seeker[%%i].x=!random! %% wid","seeker[%%i].y=!random! %% hei", "speed[%%i]=!random! %% 2 + 1", "maxSpeed=10"
10+
)
11+
12+
REM for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t1=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100"
13+
for /l %%# in () do (
14+
15+
rem use deltaTime to limit frameRate
16+
REM for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t2=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100, dt=t2-t1"
17+
18+
REM if !dt! gtr 0 (
19+
20+
set /a "t1=t2", "frames+=1"
21+
22+
for /l %%i in (1,1,%entities%) do (
23+
24+
rem seek the target
25+
set /a "sx=seeker[%%i].x, tx=target.x, sy=seeker[%%i].y, ty=target.y",^
26+
"force[%%i].x=((((tx - sx)>>31|1)*(tx - sx)) / (tx - sx)) * speed[%%i]",^
27+
"force[%%i].y=((((ty - sy)>>31|1)*(ty - sy)) / (ty - sy)) * speed[%%i]"
28+
29+
rem increase acceleration by force
30+
set /a "acceleration[%%i].x+=force[%%i].x", "acceleration[%%i].y+=force[%%i].y"
31+
32+
rem add acceleration to velocity
33+
set /a "velocity[%%i].x+=acceleration[%%i].x", "velocity[%%i].y+=acceleration[%%i].y"
34+
35+
rem reset acceleration
36+
set /a "acceleration[%%i].x=0", "acceleration[%%i].y=0"
37+
38+
rem set a max velocity
39+
if !velocity[%%i].x! gtr %maxSpeed% set /a "velocity[%%i].x=maxSpeed"
40+
if !velocity[%%i].y! gtr %maxSpeed% set /a "velocity[%%i].y=maxSpeed"
41+
42+
rem add velocity to seeker position
43+
set /a "seeker[%%i].x+=velocity[%%i].x", "seeker[%%i].y+=velocity[%%i].y"
44+
45+
rem draw seeker on screen if it's within edges
46+
set "scrn=!scrn!%\e%[48;5;10m%\e%[!target.y!;!target.x!H%ball%"
47+
if !seeker[%%i].x! geq 1 if !seeker[%%i].x! leq %wid% (
48+
if !seeker[%%i].y! geq 1 if !seeker[%%i].y! leq %hei% (
49+
set "scrn=!scrn!%\e%[48;5;9m%\e%[!seeker[%%i].y!;!seeker[%%i].x!H%ball%"
50+
)
51+
)
52+
)
53+
54+
%@bezier% !seeker[1].x! !seeker[1].y! !seeker[2].x! !seeker[2].y! !seeker[3].x! !seeker[3].y! !seeker[4].x! !seeker[4].y!
55+
set "scrn=!scrn!%\e%[48;5;7m!$bezier!%\e%[0m"
56+
%@bezier% !seeker[5].x! !seeker[5].y! !seeker[6].x! !seeker[6].y! !seeker[7].x! !seeker[7].y! !seeker[8].x! !seeker[8].y!
57+
set "scrn=!scrn!%\e%[48;5;7m!$bezier!%\e%[0m"
58+
59+
rem draw screen
60+
echo %\e%[2J%\e%[H!scrn!
61+
set "scrn="
62+
REM )
63+
)2>nul
64+
65+
:init
66+
(set \n=^^^
67+
%= This creates an escaped Line Feed - DO NOT ALTER =%
68+
)
69+
for /f %%a in ('echo prompt $E^| cmd') do set "\e=%%a"
70+
71+
set /a "wid=200,hei=150", "frames=40"
72+
mode %wid%,%hei%
73+
74+
set "ball=     "
75+
76+
set @bezier=for %%# in (1 2) do if %%#==2 ( for /f "tokens=1-8" %%1 in ("^!args^!") do (%\n%
77+
set "$bezier=%\e%[48;5;15m"%\n%
78+
set /a "A=%%~1","B=%%~2","C=%%~3","D=%%~4","E=%%~5","F=%%~6","G=%%~7","H=%%~8","I=C-A","J=E-C","K=G-E","L=D-B","M=F-D"%\n%
79+
for /l %%. in (1,1,50) do (%\n%
80+
set /a "_=%%.<<1,N=((A+_*I*10)/1000+A),O=((C+_*J*10)/1000+C),P=((B+_*L*10)/1000+B),Q=((N+_*(O-N)*10)/1000+N),S=((D+_*M*10)/1000+D),T=((P+_*(S-P)*10)/1000+P),vx=(Q+_*(((O+_*(((E+_*K*10)/1000+E)-O)*10)/1000+O)-Q)*10)/1000+Q,vy=(T+_*(((S+_*(((F+_*(H-F)*10)/1000+F)-S)*10)/1000+S)-T)*10)/1000+T"%\n%
81+
set "$bezier=^!$bezier^!%\e%[^!vy^!;^!vx^!H "%\n%
82+
)%\n%
83+
)) else set args=
84+
goto :eof

0 commit comments

Comments
 (0)