Esta es mi versión del famoso juego snake
wasd para el movimiento
p para hacer una pausa
x para salir
:: [Batch Game] Snake
:: by modubat
setlocal enableextensions enabledelayedexpansion
mode
con cols=25 lines=14
set "filas=9"
& set "columnas=17"
set "print=Û"
& set "jugador="
& set "fondo= "
set "coordenadas="
& set "personaje=;01X01Y"
& set "punto=;09X05Y"
call :
puntos "
%filas%" "
%columnas%" "
%coordenadas%" "
%personaje%"
:Ini
set "coordenadas=
%coordenadas%%personaje%"
if "
%personaje%"=="
%punto%"
( call :
puntos "
%filas%" "
%columnas%" "
%coordenadas%" "
%personaje%"
) else ( call :
eliminar "
!coordenadas!"
)
call :
coordenates "
%filas%" "
%columnas%" "
%coordenadas%" "
%fondo%" "
%print%" "
%personaje%" "
%jugador%" "
%punto%"
call :
set_pers "
%personaje%"
choice /c DASWPX /n /t 1 /d
%opcion% >nulif "
%errorlevel%"
equ "5"
set "opcion=
%opcion%"
& pause
>nul for /f "tokens=
%token% delims=$"
%%a in ("D$A$S$W"
) do set "opcion=
%%a"
for /f "tokens=
%token% delims=$"
%%b in ("right$left$down$up"
) do ( call :
Move %%b "
!Cord_x!" "!Cord_y!" "!filas!" "!columnas!"
) if "
%errorlevel%"
equ "0"
call:col "
%coordenadas%" "
%personaje%" "
%rangX%" "
%rangY%"
if "
%errorlevel%"
equ "0"
set "personaje=;
%rangX%X
%rangY%Y"
:coordenates filas columnas coordenadas fondo print personaje
setlocal enableextensions enabledelayedexpansion
for %%X in ("
%~1" "
%~2" "
%~3" "
%~4" "
%~5"
) do if /i "
%%~X"==""
exit /b 1
set "
!var_x!X!var_y!Y=
%~4"
))
for /f "Tokens=2 delims=="
%%b in ('
set ^| find "
!find_y!Y"
^| find /v ";"
^| sort'
) do ( set "fila
%%a=
!fila%% style="color: #448888;">a!%% style="color: #448888;">b")) echo. ±±±±±±±±±±±±±±±±±±±
for /l
%%z in (%~1 -1 1
) do (echo. ±
!fila%% style="color: #448888;">z!±) echo. ±±±±±±±±±±±±±±±±±±±
:set_pers
for /f "tokens=1,2 delims=;XY"
%%a in ("
%~1"
) do (
:eliminar
for /f "tokens=1* delims=; eol="
%%a in ("
%~1"
) do ( )
set "Cord_X=
%~2"
& set "Cord_Y=
%~3"
for %%a in ("Cord_X" "Cord_Y"
) do if !% style="color: #448888;">%~a! lss 10 set "%%~a=!% style="color: #448888;">%~a:~1!" if "
%1"=="right"
set/a "rangX=Cord_X+1,rangY=Cord_Y"
if "
%1"=="left"
set/a "rangX=Cord_X-1,rangY=Cord_Y"
if "
%1"=="down"
set/a "rangX=Cord_X,rangY=Cord_Y-1
if "
%1"=="up"
set/a "rangX=Cord_X,rangY=Cord_Y+1"
for %%b in ("rangX" "rangY"
) do if !% style="color: #448888;">%~b! LSS 10 set "%%~b=0!% style="color: #448888;">%~b!"
:puntos filas columnas coordenadas personaje
set/a Pos_x=
%random%%%%~2+1,Pos_y=
%random%%%%~1+1
for %%a in ("Pos_X" "Pos_Y"
) do if !% style="color: #448888;">%~a! LSS 10 set "%%~a=0!% style="color: #448888;">%~a!" set "punto=
%Pos_x%X
%Pos_y%Y"
:col
:lost
saludos