Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: SmartGenius en 23 Julio 2009, 19:17 pm



Título: [Batch Game] F1 Cars - by SmartGenius
Publicado por: SmartGenius en 23 Julio 2009, 19:17 pm
Bueno, que mas decirle....un nuevo juego, de los tantos que ya he hecho  ::)

Esta vez se trata de un clasico del tetris, ya lo conocen, las carreras de carritos.

(http://img110.imageshack.us/img110/8643/f1cars.png)

Descargar: http://one.xthost.info/smartv2/BatchGames/F1CarGamev1bySmartGenius.zip

Mueven su "carrito" con las feclas de direccion izquierda y derecha, automaticamente bajaran los demas carros, esta programado para usar el KEYBOARD para mostrar el juego como una  "Prueba de Concepto", pero se adaptaria al uso de CHOICE.COM para que el juego siga automaticamente su curso aun cuando el jugador no presiona ninguna tecla...

Código:
@Echo off
@title Cars
@mode con cols=15 lines=13
::Batch Game F1 Cars
::Coded by SmartGenius

setlocal enabledelayedexpansion

If Not Exist "keyboard.exe" (Call :NoKey)

:Menu
Cls
Echo.
Echo.  F1 Car Game
Echo.
Echo.   Presione
Echo.    Enter
Echo.
Pause >nul

:Vars
Set "LimX=10"
Set "LimY=10"
Set "LimI=3"
Set "LimD=9"
Set "Last= "
Set "CurPos=X3Y3"

:Init
Call :Level
For /l %%a in (0,1,%LimX%) do (
For /l %%b in (0,1,%LimY%) do (
Set X%%aY%%b=!Lin_%%a:~%%b,1!))
Set "Car=X3Y3,X2Y2,X4Y2,X3Y2,X3Y1,X2Y0,X4Y0"
For %%a in (%Car%) do (Set "%%a=Û")

:Graphic
Call :Clear
For /l %%d in (0,1,%LimX%) do (
For /l %%e in (0,1,%LimY%) do (
Set LN_%%d=!LN_%%d!!X%%eY%%d!))
Echo.  F1 Car Game
For /l %%f in (%LimY%,-1,0) do (echo. -!LN_%%f!-)
keyboard
if "%errorlevel%"=="77" (call :Mov_D)
if "%errorlevel%"=="75" (call :Mov_I)
if "%errorlevel%"=="27" (Exit)
Call :Abajo
Call :Colision "%CurPos%" "%Car2%" "%Car3%"
Goto :Graphic

:Mov_D
If "%BoundD%"=="True" Goto :Eof
Set "BoundI=False"
Set "P=0"
For %%a in (%Car%) do (
Set /a P+=1
Call :MovX+ %%a Car!P!
)
Set "Car=%Car1%,%Car2%,%Car3%,%Car4%,%Car5%,%Car6%,%Car7%"
Set "CurPos=%Car1%"
Goto :Eof

:Mov_I
If "%BoundI%"=="True" Goto :Eof
Set "BoundD=False"
Set "P=0"
For %%a in (%Car%) do (
Set /a P+=1
Call :MovX- %%a Car!P!
)
Set "Car=%Car1%,%Car2%,%Car3%,%Car4%,%Car5%,%Car6%,%Car7%"
Set "CurPos=%Car1%"
Goto :Eof

:MovX+
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if !%~1!==Û set %~1=%Last%
set /a MovX=%%p+1
call set Last=%%X!MovX!Y%%q%%
If "%Last%"=="²" (Goto :Lost)
set X!MovX!Y%%q=Û
set %2=X!MovX!Y%%q
if !P!==7 (if "%%p"=="%LimD%" Set BoundD=True)
)
Goto :Eof

:MovX-
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if !%~1!==Û set %~1=%Last%
set /a MovX=%%p-1
call set Last=%%X!MovX!Y%%q%%
If "%Last%"=="²" (Goto :Lost)
set X!MovX!Y%%q=Û
set %2=X!MovX!Y%%q
if !P!==7 (if "%%p"=="%LimI%" Set BoundI=True)
)
Goto :Eof

:Abajo
If "%Mov%"=="55" Goto :Win
Set /a Mov=Mov+1
For /l %%d in (0,1,%LimY%) do (Set LN_%%d=!Lin_%%d:~%Mov%!)
For /l %%a in (0,1,%LimX%) do (
For /l %%b in (0,1,%LimY%) do (
Set X%%aY%%b=!LN_%%a:~%%b,1!))
For %%c in (%Car%) do (Set "%%c=Û")
Goto :Eof

:Colision
If "%~1"=="" (Goto :Eof)
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!"=="²" (Goto :Lost)
)
Shift
Goto :Colision

:Lost
cls
Echo.
Echo.    Te has
Echo.  Estrellado
Echo.
Echo.
Ping -n 3 0.0.0.0 >nul
msg * Gracias por Jugar F1 Cars
Exit

:Win
Cls.
Echo.
Echo. Has Ganado!
Echo.
Echo. Felicidades
Echo.
Echo.
Ping -n 3 0.0.0.0 >nul
msg * Gracias por Jugar F1 Cars
Exit

:Clear
For /l %%m in (0,1,%LimX%) do (set LN_%%m=)
Goto :Eof

:Level
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Set Lin_0=        ² ²             ² ²              ² ²              +       
Set Lin_1=         ²²²             ²²²              ²²²             +       
Set Lin_2=        ² ²             ² ²              ² ²              +       
Set Lin_3=                                                          +       
Set Lin_4=        ² ²                                  ² ²          +       
Set Lin_5=         ²²²                     ² ²          ²²²         +       
Set Lin_6=        ² ²                       ²²²        ² ²          +       
Set Lin_7=                                 ² ²                      +       
Set Lin_8=                  ² ²   ² ²  ² ²                          +       
Set Lin_9=                   ²²²   ²²²  ²²²                         +       
Set Lin_10=                  ² ²   ² ²  ² ²                          +       
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Goto :Eof

:NoKey
Cls
echo.
echo. Cargando...
call :Keyboard
Goto :Eof

:Keyboard
(
echo n keyboard.dat
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
echo rcx
echo 002E
echo w0
echo q
echo.
)>keyboard.dat
type keyboard.dat|debug>NUL 2>&1
del /f/q/a "keyboard.exe">NUL 2>&1
ren keyboard.dat "keyboard.exe"
Goto :Eof

Saludos.


Título: Re: [Batch Game] F1 Cars - by SmartGenius
Publicado por: Novlucker en 23 Julio 2009, 19:27 pm
Lo recuerdo!
Tenía ese junto al tetris  :D


Título: Re: [Batch Game] F1 Cars - by SmartGenius
Publicado por: Sr.Origami en 17 Junio 2010, 19:08 pm
No es por nada...
 :rolleyes: :rolleyes: :rolleyes:
pero si le das todo recto llega a la meta sin chocarse incluso pasando por dentro de otros coches xD
si alguien lo puediera mejorar... mi hermano siempre hace trampas
 ;D ;D ;D