Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Pony-Magic en 26 Marzo 2009, 06:56 am



Título: MapGame - "Motor" de juegos batch.
Publicado por: Pony-Magic en 26 Marzo 2009, 06:56 am
- MapGame 1.0 By PonyMagic
Motor para crear mapas de juegos de diferentes tamaños donde un personaje se mueve, hay salidas, y objetos solidos que el jugador no puede atravezar.   ;-)



Ejemplo:
Call:mapGame solid=y2x1-y2x2-y2x3-y2x4-y2x5 pj=y3x2 map=5x10 exitmap=y3x1-y3x2

Solid=Coordenadas de objetos solidos. ( separados por - )
PJ= Coordenada de inicio del jugador.
Map=Tamaño del mapa ( 5x10, 5 renglones, 10x por renglon )
exitmap=Coordenadas de salida del mapa. ( separados por - )

Código:
:mapGame
CLS
SetLocal EnableDelayEdexpansion
set prm_1=%1&set prm_2=%2
set prm_3=%3&set prm_all=%*
set prm_5=%5&set prm_6=%6
set prm_7=%7&set prm_8=%8
set sld=%2
set sld=%sld:-=,%
set ext=%8
set ext=%ext:-=,%
For /F "Tokens=1 delims=x" %%z in ("%6") Do (set LmtY=%%z)
For /F "Tokens=2 delims=x" %%z in ("%6") Do (set LmtX=%%z)
For /L %%Y in (1,1,%LmtY%) do (Set Lin_%%Y=)
For /L %%Y in (1,1,%LmtY%) do (
For /L %%X in (1,1,%LmtX%) do (
Set y%%Yx%%X=±
For %%S in (%sld%) Do (
set %%S=Û
)
set %4=
For %%P in (%ext%) do (
If ["%4"]==["%%P"] ( GoTo:EOF ) ELSE (Set %%P=)
)
Set Lin_%%Y=!Lin_%%Y!!y%%Yx%%X!
)
Echo !Lin_%%Y!
)
CHOICE.EXE /c ADSW /n >nul
For /F "Tokens=* delims=y" %%F in ("%4") do (
For /F "Tokens=1 delims=x" %%G in ("%%F") do (
set PosY=%%G
)
For /F "Tokens=2 delims=x" %%G in ("%%F") do (
set PosX=%%G
)
)
If %Errorlevel%==1 ( if not !PosX!==1 (
set /a PosX-=1
set NwPJ=y%PosY%x!PosX!
For %%S in (%sld%) Do (
If "%%S"=="!NwPJ!" (
Call:mapGame %prm_all%
)
)

Call:mapGame %prm_1%=%prm_2% %prm_3%=!NwPJ! %prm_5%=%prm_6% %prm_7%=%prm_8%))
If %Errorlevel%==2 ( if not !PosX!==%LmtX% (
set /a PosX+=1
set NwPJ=y%PosY%x!PosX!
For %%S in (%sld%) Do (
If "%%S"=="!NwPJ!" (
Call:mapGame %prm_all%
)
)

Call:mapGame %prm_1%=%prm_2% %prm_3%=!NwPJ! %prm_5%=%prm_6% %prm_7%=%prm_8%))
If %Errorlevel%==3 ( if not !PosY!==%LmtY% (
set /a PosY+=1
set NwPJ=y!PosY!x%PosX%
For %%S in (%sld%) Do (
If "%%S"=="!NwPJ!" (
Call:mapGame %prm_all%
)
)

Call:mapGame %prm_1%=%prm_2% %prm_3%=!NwPJ! %prm_5%=%prm_6% %prm_7%=%prm_8%))
If %Errorlevel%==4 ( if not !PosY!==1 (
set /a PosY-=1
set NwPJ=y!PosY!x%PosX%
For %%S in (%sld%) Do (
If "%%S"=="!NwPJ!" (
Call:mapGame %prm_all%
)
)

Call:mapGame %prm_1%=%prm_2% %prm_3%=!NwPJ! %prm_5%=%prm_6% %prm_7%=%prm_8%))
Goto:EOF


EJEMPLO:

(http://i44.tinypic.com/iv9zy1.gif)
Código:
set Pje=y3x2
:_
Call:mapGame solid=y3x1-y2x1-y2x2-y2x3-y2x4-y2x5-y2x6-y2x7-y2x8-y2x9-y2x10-y4x1-y4x2-y4x3-y4x4-y4x5-y4x6-y4x7-y4x8-y4x9-y4x10 pj=%Pje% map=5x10 exitmap=y3x10
Call:mapGame solid=y2x1-y2x2-y2x3-y2x4-y2x5-y2x6-y2x7-y2x8-y2x9-y2x10-y4x1-y4x2-y4x3-y4x4-y4x5-y4x6-y4x7-y4x8-y4x9-y4x10-y3x10 pj=y3x2 map=5x10 exitmap=y3x1
set Pje=y3x9
GoTo:_



CHOICE.EXE - Click para Descargar (http://rapidshare.com/files/214215002/CHOICE.EXE.html)

http://rapidshare.com/files/214215002/CHOICE.EXE.html




Título: Re: MapGame - "Motor" de juegos batch.
Publicado por: leogtz en 26 Marzo 2009, 15:35 pm
Se ve bueno e interesante  ;D

Una pregunta, estas usando expansion de variables con !!, pero no veo en ninguna parte del codigo "setlocal +parametro".

Tal ves solo hayas llamado asi las variables "!variable!", bueno, esa es mi inquietud.


Título: Re: MapGame - "Motor" de juegos batch.
Publicado por: Darioxhcx en 26 Marzo 2009, 17:44 pm
jajajjaja pt :P
muy bueno
cuando tenga windows haceme acordar de probarlo (?
xD

lindo codigo bldo xD


Título: Re: MapGame - "Motor" de juegos batch.
Publicado por: Pony-Magic en 26 Marzo 2009, 18:25 pm
si, si... era setlocal EnableDelayedExpansion.

se me escapo, cuando lo estaba programando lo avia puesto arribla de la etiqueta.  :laugh:

Ahora lo arreglo, grax.


Título: Re: MapGame - "Motor" de juegos batch.
Publicado por: SmartGenius en 27 Marzo 2009, 04:23 am
mmm...interesante...veo que lo de las coordenadas es realmente util en esto de los batch games.....ahora que no vengan a decir que no se puede jugar... :¬¬

Saludos.

EDITO:

Que version del CHOICE.EXE usas...porque en mis codes he usado el CHOICE.COM y no tengo el tuyo, he bajado varios pero no me funciona.....