Título: [Batch Game] PacMan v 1 - by :: SmartGenius ::
Publicado por: SmartGenius en 22 Enero 2009, 22:51 pm
Bueno, de nuevo llevando a la practica el Tema de los Graficos en Batch, y una que otra cosita que he aprendido, pues les traigo otro Clasico de los Gamers...en Batch !!! Pacman v 1(http://img104.imageshack.us/img104/60/pacmanv1dg5.png) Es el Clasico Juego de PacMan en el que tienes que atravesar un Puzzle mientras recoges "Galletas" y vas acumulando puntos, pero teniendo cuidado con los Fantasmas..... ;D ;D EL Juego hace uso de CHOICE Descargar:PacManv1bySmart.zip (CHOICE Incluido) (http://wikisend.com/download/892410/PacManv1bySmart.zip) @echo off @title PacMan v 1 @mode con cols=24 lines=24 @::Juego Batch PacMan @::Another Batch Game @::by ::SmartGenius ::
if not exist "choice.com" (Goto :NoKey)
:load call :Logo setlocal enabledelayedexpansion set LimX=16 set LimY=16 set NLevels=1
:init for /l %%a in (0,1,%LimX%) do ( for /l %%b in (0,1,%LimY%) do ( set X%%aY%%b=.)) set Player= set Bound= set Box= set Ghost=
:Levels set /a L+=1 Call :Level%L% Call :Graphic set P%L%=%Movs% if "%NXL%"=="True" Goto :End if "%L%"=="%NLevels%" Goto :Win ping -n 1 0.0.0.0 >nul Goto :Init
:Graphic Call :Clear cls for /l %%d in (0,1,%LimY%) do ( for /l %%e in (0,1,%LimX%) do ( set Lin_%%d=!Lin_%%d!!X%%eY%%d!)) echo. echo. Pacman v 1 by Smart echo. echo. Vidas:%Lives% Puntos:%Points% echo. ͻ for /l %%f in (0,1,%LimY%) do (echo. !Lin_%%f!) echo. ͼ CHOICE /C:WASDX /N /T:%Dir%,1 >nul if "%errorlevel%"=="1" (call :MovY- "%CurPos%" CurPos&set Dir=W) if "%errorlevel%"=="2" (call :MovX- "%CurPos%" CurPos&set Dir=A) if "%errorlevel%"=="3" (call :MovY+ "%CurPos%" CurPos&set Dir=S) if "%errorlevel%"=="4" (call :MovX+ "%CurPos%" CurPos&set Dir=D) if "%errorlevel%"=="5" (set NXL=True&Goto :Eof) Call :MovGhost for %%w in (%Boxes%) do ( if not "!%%w!"=="%Box%" ( if "!%%w!"=="." (set %%w=%Box%))) set /a NCK=%Points% %% 7 if "%NCK%"=="0" set Cki=False if "%EOG%"=="True" (msg * Perdiste&Goto :Eof) Goto :Graphic
::Logica de Movimiento en el Plano ::Coded by :: SmartGenius ::
:MovX+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovX=%%p+1 call set NMovX=%%X!MovX!Y%%q%%
if "!NMovX!"=="%Bound%" (Goto :Eof)
if "!NMovX!"=="%Ghost%" ( if !%~1!==%Player% ( if "%Cki%"=="True" ( set %~1= set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q set /a Points+=10 call :UnGhost "X!MovX!Y%%q" ) if "%Cki%"=="False" ( set %~1= set /a Lives-=1 set %Init%=%Player% set %2=%Init% if "!Lives!"=="0" (set EOG=True) )))
if "!NMovX!"=="." ( if !%~1!==%Player% ( set %~1= set /a Points+=2 set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1=. set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q))
if "!NMovX!"==" " ( if !%~1!==%Player% ( set %~1= set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1= set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q))
if "!NMovX!"=="%Box%" ( if !%~1!==%Player% ( set %~1= set /a Points+=5 set Cki=True set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1=. set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q)))
if !%~1!==%Player% set /a Movs+=1 Goto :Eof
:MovX- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovX=%%p-1 call set NMovX=%%X!MovX!Y%%q%%
if "!NMovX!"=="%Bound%" (Goto :Eof)
if "!NMovX!"=="%Ghost%" ( if !%~1!==%Player% ( if "%Cki%"=="True" ( set %~1= set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q set /a Points+=10 call :UnGhost "X!MovX!Y%%q" ) if "%Cki%"=="False" ( set %~1= set /a Lives-=1 set %Init%=%Player% set %2=%Init% if "!Lives!"=="0" (set EOG=True) )))
if "!NMovX!"=="." ( if !%~1!==%Player% ( set %~1= set /a Points+=2 set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1=. set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q))
if "!NMovX!"==" " ( if !%~1!==%Player% ( set %~1= set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1= set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q))
if "!NMovX!"=="%Box%" ( if !%~1!==%Player% ( set %~1= set /a Points+=5 set Cki=True set X!MovX!Y%%q=%Player% set %2=X!MovX!Y%%q) if !%~1!==%Ghost% ( set %~1=. set X!MovX!Y%%q=%Ghost% set %2=X!MovX!Y%%q)))
if !%~1!==%Player% set /a Movs+=1 Goto :Eof
:MovY+ for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovY=%%q+1 call set NMovY=%%X%%pY!MovY!%%
if "!NMovY!"=="%Bound%" (Goto :Eof)
if "!NMovY!"=="%Ghost%" ( if !%~1!==%Player% ( if "%Cki%"=="True" ( set %~1= set X%%pY!MovY!=%Player% set %2=X%%pY!MovY! set /a Points+=10 call :UnGhost "X%%pY!MovY!" ) if "%Cki%"=="False" ( set %~1= set /a Lives-=1 set %Init%=%Player% set %2=%Init% if "!Lives!"=="0" (set EOG=True) )))
if "!NMovY!"=="." ( if !%~1!==%Player% ( set %~1= set /a Points+=2 set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1=. set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!))
if "!NMovY!"==" " ( if !%~1!==%Player% ( set %~1= set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1= set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!))
if "!NMovY!"=="%Box%" ( if !%~1!==%Player% ( set %~1= set /a Points+=5 set Cki=True set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1=. set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!)))
if !%~1!==%Player% set /a Movs+=1 Goto :Eof
:MovY- for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do ( set /a MovY=%%q-1 call set NMovY=%%X%%pY!MovY!%%
if "!NMovY!"=="%Bound%" (Goto :Eof)
if "!NMovY!"=="%Ghost%" ( if !%~1!==%Player% ( if "%Cki%"=="True" ( set %~1= set X%%pY!MovY!=%Player% set %2=X%%pY!MovY! set /a Points+=10 call :UnGhost "X%%pY!MovY!" ) if "%Cki%"=="False" ( set %~1= set /a Lives-=1 set %Init%=%Player% set %2=%Init% if "!Lives!"=="0" (set EOG=True) )))
if "!NMovY!"=="." ( if !%~1!==%Player% ( set %~1= set /a Points+=2 set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1=. set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!))
if "!NMovY!"==" " ( if !%~1!==%Player% ( set %~1= set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1= set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!))
if "!NMovY!"=="%Box%" ( if !%~1!==%Player% ( set %~1= set /a Points+=5 set Cki=True set X%%pY!MovY!=%Player% set %2=X%%pY!MovY!) if !%~1!==%Ghost% ( set %~1=. set X%%pY!MovY!=%Ghost% set %2=X%%pY!MovY!)))
if !%~1!==%Player% set /a Movs+=1 Goto :Eof
:MovGhost set NGG=0 for %%z in (%Ghosts%) do ( set /a NG+=1 set Ghost!NG!=%%z) :MovGhost2 set /a NGG+=1 set /a GoMov=%random:~-1% %% 4 if "!GoMov!"=="0" Call :MovX+ %%Ghost!NGG!%% Ghost!NGG! if "!GoMov!"=="1" Call :MovX- %%Ghost!NGG!%% Ghost!NGG! if "!GoMov!"=="2" Call :MovY+ %%Ghost!NGG!%% Ghost!NGG! if "!GoMov!"=="3" Call :MovY- %%Ghost!NGG!%% Ghost!NGG! ) if "%NGG%"=="4" ( set Ghosts=%Ghost1%,%Ghost2%,%Ghost3%,%Ghost4% set NG=0 Goto :Eof) Goto :MovGhost2
:UnGhost set Ghosts=!Ghosts:%~1=X8Y7! for %%g in (%Ghosts%) do (set %%g=%Ghost%) Goto :Eof
:Clear for /l %%m in (0,1,%LimY%) do (set Lin_%%m=) Goto :Eof
:Win
:End msg * Gracias por Jugar PacMan v1 by :: SmartGenius:: endlocal exit
::Niveles del Juego PacMan ::Coordenadas Cartesianas ::Coded by :: SmartGenius ::
::Inicio Nivel 1 :Level1 set Movs=0 set Points=0 set X2Y15=%Player% set CurPos=X2Y15 set Init=X2Y15 set Lives=3 set Cki=False set Dir=D set Ghosts=X2Y11,X6Y9,X6Y7,X10Y6 set Boxes=X2Y1,X2Y9,X14Y1,X14Y9,X14Y15 for %%g in (%Ghosts%) do (set %%g=%Ghost%) for %%h in (%Boxes%) do (set %%h=%Box%) for /l %%i in (0,1,16) do ( set X0Y%%i=%Bound% set X1Y%%i=%Bound% set X15Y%%i=%Bound% set X16Y%%i=%Bound% set X%%iY0=%Bound% set X%%iY16=%Bound%) for %%j in (3,4,5,6,10,11,12,13) do ( set X%%jY2=%Bound% set X%%jY3=%Bound% set X%%jY10=%Bound% set X%%jY14=%Bound%) for %%k in (X8Y1,X8Y2,X8Y3,X3Y5,X3Y6,X3Y7,X3Y8,X5Y5,X5Y6,X5Y7,X5Y8,X6Y5,X7Y5) do (set %%k=%Bound%) for %%l in (X6Y8,X7Y8,X8Y8,X9Y8,X10Y8,X9Y5,X10Y5,X11Y5,X11Y6,X11Y7,X11Y8,X13Y5) do (set %%l=%Bound%) for %%m in (X13Y6,X13Y7,X13Y8,X7Y10,X9Y10,X3Y12,X3Y13,X5Y12,X6Y12,X7Y12,X8Y12) do (set %%m=%Bound%) for %%n in (X9Y12,X10Y12,X11Y12,X8Y13,X8Y14,X13Y12,X13Y13) do (set %%n=%Bound%) for %%o in (X6Y6,X7Y6,X8Y5,X8Y6,X9Y6,X7Y7,X8Y7,X9Y7,X10Y7) do (set %%o= ) Goto :Eof
::Fin Nivel 1
::Fin de Coordenadas
:Logo color 0a cls echo. echo. echo. echo. ۰۰۰ echo. ۰۰۰۰۰ echo. ۰۰۰۰۰ echo. ۰۰۰ echo. ۰۰۰۰ echo. ۰۰۰۰ echo. ۰۰۰۰ echo. echo. ۰۰۰۰۰ echo. ۰۰۰۰۰۰۰ echo. ۰۰۰۰۰۰۰ echo. ۰۰۰۰۰۰ echo. ۰۰۰۰۰۰۰ echo. ۰۰۰۰۰۰ echo. ۰۰۰۰۰۰ echo. echo. echo. : SmartGenius : echo. Corp. 2009 echo. ping -n 3 0.0.0.0 >nul color 0e Goto :Eof
:NoKey @mode con cols=30 lines=20 cls echo. echo Uno de los archivos necesarios para el echo funcionamiento de este Script no se echo encuentra. echo. echo CHOICE.COM echo. echo Por favor descargue una copia del Comando echo CHOICE de Internet... echo. pause exit
Con esto queda demostrado que se pueden hacer bastantes cosas en Batch, solo hace falta imaginacion y algo de tiempo.... ;) Cualquier duda, comentario o sugerencia acerca del codigo hacerla por favor... :) Saludos.
Título: Re: [Batch Game] PacMan v 1 - by :: SmartGenius ::
Publicado por: Banti en 23 Enero 2009, 01:37 am
Noooooooo, esto ya paso de imaginacion!!! Muy bueno te doy un /rec (?)
Voy a tener que leer tu guia rara esa que no entiendo nada XD.
PD: Aun seguimos con lo de navidad? y los militares?
Título: Re: [Batch Game] PacMan v 1 - by :: SmartGenius ::
Publicado por: Amerikano|Cls en 23 Enero 2009, 02:58 am
Esta excelente, felicitaciones :o :o :o
Título: Re: [Batch Game] PacMan v 1 - by :: SmartGenius ::
Publicado por: Littlehorse en 23 Enero 2009, 03:13 am
Excelente, le voy a pegar una leida aguda a ese code porque pinta interesante.
Un abrazo
|