Skip to content

Commit c4677d8

Browse files
Add files via upload
1 parent 4516cf0 commit c4677d8

File tree

1 file changed

+243
-0
lines changed

1 file changed

+243
-0
lines changed

chromeGame.bat

+243
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,243 @@
1+
@echo off & setlocal enableDelayedExpansion
2+
3+
if "%~1" neq "" goto :%~1
4+
5+
call :init 60 30
6+
call :sprites
7+
8+
rem adjust to your preference. 1 = slowest, 100000 = fastest
9+
rem set "delay=25"
10+
rem set /p "delay=%\e%[38;5;46m%\e%[15;19HDelay %\e%[38;5;39m(%\e%[38;5;228mdefault%\e%[0m=%\e%[38;5;14m25%\e%[38;5;39m)%\e%[0m: "
11+
REM set "delay=100000"
12+
13+
set /a "difficulty=1"
14+
set /p "difficulty=%\e%[38;5;196m%\e%[16;14HDifficulty [1-5] %\e%[38;5;39m(%\e%[38;5;228mdefault%\e%[0m= %\e%[38;5;14m1%\e%[38;5;39m)%\e%[0m: "
15+
rem --------------------------------------
16+
17+
set /a "speed=1"
18+
set /a "jump=6"
19+
set /a "floor=hei - 6"
20+
set /a "player.x=6"
21+
set /a "player.y=floor"
22+
set /a "sunOsc=1"
23+
24+
rem if !delay! gtr 100000 set "delay=100000"
25+
if !difficulty! gtr 5 set "difficulty=5"
26+
title Chrome Game - difficulty: !difficulty! ^| W to jump
27+
28+
for /l %%i in (1,1,10) do (
29+
set /a "particle[%%i].x=(!random! %% wid) + !random! %% wid"
30+
set /a "particle[%%i].y=!random! %% (hei - floor + 1) + floor - 1"
31+
)
32+
for /l %%i in (1,1,2) do (
33+
set /a "cloud[%%i].x=!random! %% wid"
34+
set /a "cloud[%%i].y=!random! %% 10 + 3"
35+
set /a "cloud[%%i].i=!random! %% 3 + 1"
36+
)
37+
38+
"%~F0" Controller >"%temp%\%~n0_signal.txt" | "%~F0" Main <"%temp%\%~n0_signal.txt"
39+
exit
40+
41+
:Main
42+
43+
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"
44+
45+
for /l %%# in () do (
46+
47+
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"
48+
49+
if !dt! gtr 5 (
50+
51+
set /a "t1=t2"
52+
53+
REM set /a "frameCount+=1"
54+
set /a "$TT+=dt","fps=60 * (1000 / (dt + 1)) / 1000","$sec=$TT / 100 %% 60","$min=$TT / 100 / 60 %% 60","frameCount=(frameCount + 1) %% 0x7FFFFFFF"
55+
if "!$sec:~1!" equ "" set "$sec=0!$sec!"
56+
title FPS:!fps! Time: !$min!:!$sec! Frames: !frameCount!/!$TT!
57+
58+
rem sun
59+
set /a "sunRate=frameCount %% 7"
60+
if !sunRate! equ 0 (
61+
set /a "sunID+=sunOsc
62+
)
63+
if !sunID! leq 0 set /a "sunID=0", "sunOsc*=-1"
64+
if !sunID! geq 2 set /a "sunID=2", "sunOsc*=-1"
65+
for %%i in (!sunID!) do (
66+
set "scrn=!scrn!%\e%[2;7H!sun[%%i]!"
67+
)
68+
69+
rem ground particles
70+
for /l %%i in (1,1,10) do (
71+
set /a "particle[%%i].x-=2"
72+
if !particle[%%i].x! leq 1 set /a "particle[%%i].x=wid"
73+
if !particle[%%i].x! lss %wid% (
74+
set "scrn=!scrn!%\e%[48;5;34;38;5;232m%\e%[!particle[%%i].y!;!particle[%%i].x!H."
75+
)
76+
)
77+
rem clouds
78+
for /l %%i in (1,1,2) do (
79+
set /a "rate=frameCount %% 4"
80+
if !rate! equ 0 set /a "cloud[%%i].x-=cloud[%%i].i"
81+
if !cloud[%%i].x! leq 1 set /a "cloud[%%i].x=wid", "cloud[%%i].y=!random! %% 10 + 3"
82+
if !cloud[%%i].x! lss %wid% (
83+
set "scrn=!scrn!%\e%[!cloud[%%i].y!;!cloud[%%i].x!H!cloud[%%i]!"
84+
)
85+
)
86+
87+
rem score
88+
set "icon="
89+
set "return="
90+
set /a "string=frameCount", "length=0"
91+
set "str=x!frameCount!"
92+
for /l %%b in (4,-1,0) do (
93+
set /a "length|=1<<%%b"
94+
for %%c in (!length!) do (
95+
if "!str:~%%c,1!" equ "" (
96+
set /a "length&=~1<<%%b"
97+
)
98+
)
99+
)
100+
set /a "length-=1"
101+
for /l %%i in (0,1,!length!) do (
102+
set "return=!return!"!string:~%%~i,1!" "
103+
)
104+
for %%i in (!return!) do (
105+
set "icon=!icon!![%%~i]!%\e%[C"
106+
)
107+
set "scrn=!scrn!%\e%[8;27H%\e%[48;5;228;38;5;16m!icon!"
108+
109+
if defined spawned (
110+
set /a "block.x-=speed * (difficulty + 1)"
111+
112+
set /a "end=block.w - block.x - 1"
113+
if !block.x! leq !end! (
114+
for %%i in (x y w h) do set "block.%%i="
115+
set "spawned="
116+
)
117+
118+
set /a "a=player.x,b=player.y,c=4,d=4,e=block.x,f=block.y,g=block.w-1,h=block.h-1", "$collisionRectRect=%@collisionRectRect%"
119+
120+
for /f "tokens=1,2" %%x in ("!block.w! !block.h!") do (
121+
set "scrn=!scrn!%\e%[!block.y!;!block.x!H!box[%%~x][%%~y]!"
122+
)
123+
) else (
124+
125+
set /a "spawnBlock=frameCount %% 50"
126+
127+
if !spawnBlock! equ 0 (
128+
set "spawned=true"
129+
set /a "block.x=wid", "block.y=floor", "block.w=!random! %% 3 + 2", "block.h=!random! %% 3 + 2"
130+
)
131+
)
132+
133+
set "com=" & set /p "com="
134+
if /i "!com:~0,4!" equ "quit" (
135+
exit
136+
)
137+
if /i "!com:~0,1!" equ "w" if !player.y! equ %floor% (
138+
set /a "velocity+=jump * -1"
139+
)
140+
141+
set /a "acceleration+=1", "velocity+=acceleration", "acceleration=0", "player.y+=velocity"
142+
143+
if !player.y! geq %floor% (
144+
set /a "player.y=floor", "velocity=0"
145+
)
146+
147+
echo %\e%[2J%\e%[H%background%!scrn!%\e%[!player.y!;!player.x!H!player!
148+
set "scrn="
149+
150+
if !$collisionRectRect! gtr 0 ( exit )
151+
152+
rem for /l %%Z in (0,%delay%,1000000) do rem
153+
154+
)
155+
156+
)2>nul
157+
exit
158+
159+
160+
:Controller
161+
Setlocal DISABLEdelayedExpansion
162+
REM Environment handling allows use of ! key
163+
For /l %%C in () do (
164+
Set "Key="
165+
for /f "delims=" %%A in ('C:\Windows\System32\xcopy.exe /w "%~f0" "%~f0" 2^>nul') do If not Defined Key (
166+
set "key=%%A"
167+
Setlocal ENABLEdelayedExpansion
168+
set key=^!KEY:~-1!
169+
If "!key!" == "!TAB!" (
170+
>"%SignalFile:Signal=Abort%" Echo(
171+
<nul Set /P "=quit"
172+
EXIT
173+
)
174+
1> %~n0txt.tmp (echo(!key!!sub!)
175+
copy %~n0txt.tmp /a %~n0txt2.tmp /b > nul
176+
type %~n0txt2.tmp
177+
del %~n0txt.tmp %~n0txt2.tmp
178+
Endlocal
179+
)
180+
)
181+
182+
183+
184+
185+
186+
:init
187+
for /f "tokens=1 delims==" %%a in ('set') do (
188+
set "unload=true"
189+
for %%b in ( cd Path ComSpec SystemRoot temp windir ) do if /i "%%a"=="%%b" set "unload=false"
190+
if "!unload!"=="true" set "%%a="
191+
)
192+
193+
set "signalFile=%temp%\%~n0_signal.txt"
194+
del /f /q "%SignalFile%" 2>nul 1>nul
195+
del /f /q "%SignalFile:Signal=Stop%" 2>nul 1>nul
196+
del /f /q "%SignalFile:Signal=Abort%" 2>nul 1>nul
197+
198+
for /f "delims=" %%T in ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(0x09"') do set "TAB=%%T"
199+
200+
set /a "wid=%~1,hei=%~2" & mode %~1,%~2
201+
202+
for /f %%a in ('echo prompt $E^| cmd') do set "\e=%%a" & <nul set /p "=[?25l"
203+
204+
(set \n=^^^
205+
%= This creates an escaped Line Feed - DO NOT ALTER =%
206+
)
207+
208+
REM %collisionRectRect% x1 y1 w1 h1 x2 y2 w2 h2 => 1 if true, else 0
209+
set "@collisionRectRect=((~((a+c)-e)>>31)&1) & ((~((e+g)-a)>>31)&1) & ((~((b+d)-f)>>31)&1) & ((~((f+h)-b)>>31)&1)"
210+
goto :eof
211+
212+
:sprites
213+
set "[1]=%\e%[C %\e%[2D%\e%[B %\e%[2D%\e%[B² %\e%[2D%\e%[B² %\e%[3A"
214+
set "[2]= %\e%[2D%\e%[B%\e%[C %\e%[2D%\e%[B %\e%[C%\e%[2D%\e%[B %\e%[3A"
215+
set "[3]= %\e%[3D%\e%[B%\e%[2C %\e%[3D%\e%[B%\e%[C %\e%[3D%\e%[B %\e%[3A"
216+
set "[4]= ² %\e%[3D%\e%[B ² %\e%[3D%\e%[B %\e%[3D%\e%[B%\e%[2C %\e%[3A"
217+
set "[5]= %\e%[2D%\e%[B %\e%[C%\e%[2D%\e%[B%\e%[C %\e%[2D%\e%[B %\e%[3A"
218+
set "[6]= %\e%[2C%\e%[3D%\e%[B %\e%[3D%\e%[B %\e%[C %\e%[3D%\e%[B %\e%[3A"
219+
set "[7]= %\e%[3D%\e%[B%\e%[2C %\e%[3D%\e%[B²² %\e%[3D%\e%[B²² %\e%[3A"
220+
set "[8]= %\e%[3D%\e%[B %\e%[3D%\e%[B %\e%[C %\e%[3D%\e%[B %\e%[3A"
221+
set "[9]= %\e%[3D%\e%[B %\e%[C %\e%[3D%\e%[B %\e%[3D%\e%[B%\e%[2C %\e%[3A"
222+
set "[0]= %\e%[3D%\e%[B %\e%[C %\e%[3D%\e%[B %\e%[C %\e%[3D%\e%[B %\e%[3A"
223+
224+
set "cloud[1]=%\e%[48;5;15m%\e%[2A%\e%7 %\e%8%\e%[B %\e%[0m"
225+
set "cloud[2]=%\e%[48;5;15m%\e%[2A%\e%7 %\e%8%\e%[B%\e%[D %\e%[0m"
226+
227+
set "box[2][2]=%\e%[48;5;1m%\e%[2A%\e%7 %\e%8%\e%[B %\e%[0m"
228+
set "box[4][2]=%\e%[48;5;1m%\e%[2A%\e%7 %\e%8%\e%[B %\e%[0m"
229+
set "box[2][4]=%\e%[48;5;1m%\e%[2A%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B %\e%[0m"
230+
set "box[3][3]=%\e%[48;5;201m%\e%[3A%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B %\e%[0m"
231+
set "box[3][4]=%\e%[48;5;201m%\e%[3A%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B %\e%[0m"
232+
set "box[4][3]=%\e%[48;5;201m%\e%[3A%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B %\e%[0m"
233+
set "box[4][4]=%\e%[48;5;196m%\e%[4A%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B %\e%[0m"
234+
set "box[2][3]=%\e%[48;5;226m%\e%[3A%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B %\e%[0m"
235+
set "box[3][2]=%\e%[48;5;202m%\e%[2A%\e%7 %\e%8%\e%[B %\e%[0m"
236+
237+
set "player=%\e%[48;5;57m%\e%[4A%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B%\e%7 %\e%8%\e%[B %\e%[48;5;16m%\e%[2A%\e%[3D %\e%[C %\e%[9D%\e%[4A%\e%[48;2;190;90;190m%\e%[3C%\e%7 %\e%8%\e%[B%\e%7 %\e%[C%\e%[48;5;15m %\e%[48;2;190;90;190m%\e%8%\e%[B%\e%[C%\e%7 %\e%8%\e%[B%\e%[2D %\e%[0m%\e%[0m"
238+
set "background=%\e%[48;5;39m%\e%[0J%\e%[23;1H%\e%[48;5;34m%\e%[0J"
239+
240+
set "sun[0]=%\e%[48;5;226m%\e%7%\e%[2C %\e%8%\e%[B%\e%7%\e%[C %\e%8%\e%[B%\e%7 %\e%8%\e%[B%\e%7 %\e%[48;5;16m %\e%[48;5;226m %\e%[48;5;16m %\e%[48;5;226m %\e%8%\e%[B%\e%7 %\e%8%\e%[B%\e%7 %\e%[48;5;16m %\e%[48;5;226m %\e%8%\e%[B%\e%7%\e%[C %\e%[48;5;16m %\e%[48;5;226m %\e%8%\e%[B%\e%[2C %\e%[0m"
241+
set "sun[1]=%\e%[48;5;226m%\e%7%\e%[2C %\e%8%\e%[B%\e%7%\e%[C %\e%8%\e%[B%\e%7 %\e%[48;5;16m %\e%[48;5;226m %\e%[48;5;16m %\e%[48;5;226m %\e%8%\e%[B%\e%7 %\e%8%\e%[B%\e%7 %\e%[48;5;16m %\e%[48;5;226m %\e%8%\e%[B%\e%7%\e%[C %\e%[48;5;16m %\e%[48;5;226m %\e%8%\e%[B%\e%[2C %\e%[6A%\e%[5D%\e%[48;5;39;38;5;202m\%\e%[5C/%\e%[6B%\e%[7D/%\e%[5C\%\e%[0m"
242+
set "sun[2]=%\e%[48;5;226m%\e%7%\e%[C %\e%8%\e%[B%\e%7 %\e%[48;5;16m %\e%[48;5;226m %\e%[48;5;16m %\e%[48;5;226m %\e%8%\e%[B%\e%7 %\e%8%\e%[B%\e%7 %\e%[48;5;16m %\e%[48;5;226m %\e%8%\e%[B%\e%7 %\e%[48;5;16m %\e%[48;5;226m %\e%8%\e%[B%\e%[C %\e%[5A%\e%[5D%\e%[48;5;39;38;5;202m\%\e%[4C/%\e%[5B%\e%[6D/%\e%[4C\%\e%[0m"
243+
goto :eof

0 commit comments

Comments
 (0)