Cierto, sin coordenadas ningun batch game se puede comparar a tu Batch-Tetris xD
PD: Deseando verlo compatible en x64
Es que la cosa es jodida... para hacerlo compatible en 64 bits tendría que usar algún comando externo si quiero que siga coloreado, por ejemplo colous, y bueno, sería rediseñar una gran parte del código.
Tal vez lo haga algún día, pero creo que por aquí algunos ya conocen la aversión que le tengo a las utilidades externas como colous, nircmd... así que no sé.
Por cierto, hay excepciones a la regla de que sin usar un sistema de coordenadas no se puede hacer gran cosa. Por ahí he visto de vez en cuando batch games con un código un poco estrafalario (y con una cantidad de líneas mayor a la de la biblia) que son realmente impresionantes. Eso sí, se pueden optimizar mucho usando un sistema de coordenadas.
Dejaré aquí algo. Se trata de un laberinto que no usa coordenadas directamente, sino que lee lineas y hace un reemplazo de caracteres sobre ellas.
@Echo Off
SetLocal EnableDelayedExpansion
title Lineal Cordinates PoC [Labyrinth]
If Not Exist KeyBoard.Com Call:KeyGen
Set "-.LimX=0" & set "+.LimX=24"
Set "-.LimY=0" & set "+.LimY=14"
Set "CurPosX=2" & set "CurPosY=1"
Set "Player=" & Set "Table= " & Set "Block=Û" & Set "Exit=°" & Set "Point="
Set "Points=0"
Call:Create_Table
:_Main
call:Load_Graphic
KEYBOARD.COM
If "%ErrorLevel%" EQU "77" Call:_Mov "X" "+"
If "%ErrorLevel%" EQU "80" Call:_Mov "Y" "+"
If "%ErrorLevel%" EQU "75" Call:_Mov "X" "-"
If "%ErrorLevel%" EQU "72" Call:_Mov "Y" "-"
GoTo:_Main
:_Mov
if "!CurPos%~1!" EQU "!%~2.Lim%~1!" GoTo:EoF
set/a "NxCurPosX=%CurPosX%","NxCurPosY=%CurPosY%"
set/a "NxCurPos%~1%~2=1"
set "NxMov=!Line_%NxCurPosY%:~%NxCurPosX%,1!"
if "%NxMov%" EQU "%Block%" GoTo:EoF
if "%NxMov%" EQU "%Exit%" GoTo:Win
if "%NxMov%" EQU "%Point%" set/a "Points+=1"
set "Line_%CurPosY%=!Line_%CurPosY%:%Player%=%Table%!"
set/a "CurPos%~1%~2=1"
set/a "Gx=CurPosX+1"
set "Line_%CurPosY%=!Line_%CurPosY%:~0,%CurPosX%!%Player%!Line_%CurPosY%:~%Gx%,%+.LimX%!"
GoTo:EoF
:Create_Table
Set/A Count=0
For %%_ in (
"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ",
"ÛÛÛ Û Û ÛÛÛÛ Û Û",
"ÛÛ Û Û Û Û ÛÛ Û",
"ÛÛ ÛÛÛÛÛ ÛÛ Û ÛÛ Û Û Û",
"ÛÛÛ Û Û ÛÛÛÛ Û Û Û",
"ÛÛ Û Û Û Û Û Û Û",
"ÛÛ Û ÛÛ Û ÛÛ Û ÛÛÛ Û Û Û",
"ÛÛ Û Û Û Û Û Û Û",
"ÛÛ Û Û ÛÛÛÛ ÛÛÛ ÛÛÛÛÛÛ Û",
"ÛÛ Û Û Û Û Û",
"ÛÛ Û Û ÛÛÛÛÛÛ Û Û ÛÛÛÛ Û",
"ÛÛ ÛÛÛÛ Û Û Û Û",
"Û Û Û ÛÛÛÛ Û ÛÛÛÛ ÛÛÛ",
"Û ÛÛ Û Û Û",
"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°Û"
) do (
Set "Line_!Count!=%%~_"
Set/A "Count+=1"
)
GoTo:EoF
:Load_Graphic
cls&echo: Points: %points%
For /L %%l in (%-.LimY%,1,%+.LimY%) do Echo: !Line_%%l!
GoTo:EoF
:Win
more/c<nul
echo: You Won^^!
echo: -You have picked up %points% points.
pause 1>nul & exit
:KeyGen
(ECHO.N KEYBOARD.COM
ECHO.E 0000 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
ECHO.R CX
ECHO.000E
ECHO.W0
ECHO.Q)|DEBUG 1>NUL 2>&1
GOTO:EOF
El como el foro no se lleva bien con caracteres especiales, aquí podéis descargarlo:
https://www.dropbox.com/s/ct11vve2q93a3yl/Labyrinth%20PoC.batSaludos