BattleShips v 1
Descarga:http://one.xthost.info/smartv2/BatchGames/BattleShips_bySmartGenius.zip
Creo que el juego no necesita explicacion porque la gran mayoria conocera la mecanica del mismo, ir descubriendo la posicion del enemigo antes de que descubarn la tuya.
Los movimientos se realizan con las flechas de direccion y se confirma una coordenada con la tecla Enter.
Código:
@echo off
@title BattleShip
@::Another Batch Game
@::Coded by ::SmartGenius::
setlocal enabledelayedexpansion
if not exist "keyboard.exe" (Goto :NoKey)
Call :Logo
:Menu
@cls
@::BattleShip v 1
@mode con cols=21 lines=20
set colors=a123b567c9
echo.
echo. BattleShips v 1
echo. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
echo. ÚÄÄ¿ ÚÄÄÄÄÄÄ¿
echo. ³1.³ ³Jugar ³
echo. ÀÄÄÙ ÀÄÄÄÄÄÄÙ
echo. ÚÄÄ¿ ÚÄÄÄÄÄÄ¿
echo. ³2.³ ³Salir ³
echo. ÀÄÄÙ ÀÄÄÄÄÄÄÙ
keyboard
if "%errorlevel%"=="49" (Goto :InGame)
if "%errorlevel%"=="50" (msg * BattleShip v 1 by SmartGenius&exit)
if "%errorlevel%"=="32" (color 0!colors:~%random:~-1%,1!)
Goto :Menu
:InGame
Call :Clear
Call :Load1
cls
echo.
echo. Barcos en Posicion
echo. Cargando Juego...
ping -n 3 0.0.0.0 >nul
Call :Load2
Goto :Menu
::Tablero posicionador
:Load1
set LimX=6
set LimY=6
set IniX=0
set IniY=0
set MovX=0
set MovY=0
set Ships=5
set Water=²
set Blank=X
:init1
for /l %%a in (0,1,%LimX%) do (
for /l %%b in (0,1,%LimY%) do (
set X%%aY%%b=°
))
set X0Y0=
set Last=°
set Curpos=X0Y0
Goto :First
:Gp1
Call :Clear
:First
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. Posiciona tus
echo. Barcos...
echo.
echo. ÚÄÄÄÄÄÄÄ¿
for /l %%f in (0,1,%LimY%) do (
echo. !Lin_%%f!³
echo. ÃÄÅÄÅÄÅÄÅÄÅÄÅÄ´)
echo. ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÙ
if "%Ships%"=="0" Goto :Eof
keyboard
if "%errorlevel%"=="77" (call :MovAX+ "%CurPos%")
if "%errorlevel%"=="75" (call :MovAX- "%CurPos%")
if "%errorlevel%"=="80" (call :MovAY+ "%CurPos%")
if "%errorlevel%"=="72" (call :MovAY- "%CurPos%")
if "%errorlevel%"=="13" (call :PosShip "%CurPos%")
if "%errorlevel%"=="88" (Goto :Menu)
if "%errorlevel%"=="120" (Goto :Menu)
Goto :Gp1
::Fin Tablero Posicionador
::Tablero de Batalla
:Load2
@mode con cols=42 lines=20
for /l %%a in (0,1,%LimX%) do (
for /l %%b in (0,1,%LimY%) do (
set MX%%aY%%b=
))
Call :GenPC
:init2
for /l %%a in (0,1,%LimX%) do (
for /l %%b in (0,1,%LimY%) do (
set PX%%aY%%b=!X%%aY%%b!
set X%%aY%%b=°))
set Player=5
set X0Y0=
set Last=°
set Curpos=X0Y0
Goto :Gp2
:Gp2
title BattleShip v 1 by SmartGenius
Call :Clear
:Second
for /l %%d in (0,1,%LimY%) do (
for /l %%e in (0,1,%LimX%) do (
set Lin_%%d=!Lin_%%d!³!PX%%eY%%d!
set Lin2_%%d=!Lin2_%%d!³!X%%eY%%d!))
echo.
echo. Jugador: %Player% PC: %PC%
echo. A B C D E F G A B C D E F G
echo. ÚÄÄÄÄÄÄÄ¿ : ÚÄÄÄÄÄÄÄ¿
for /l %%f in (0,1,%LimY%) do (
echo. %%f !Lin_%%f!³ : %%f !Lin2_%%f!³
echo. ÃÄÅÄÅÄÅÄÅÄÅÄÅÄ´ : ÃÄÅÄÅÄÅÄÅÄÅÄÅÄ´)
echo. ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÙ : ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÙ
if "%PC%"=="0" Goto :Win
if "%Player%"=="0" Goto :Lose
keyboard
if "%errorlevel%"=="77" (call :MovAX+ "%CurPos%")
if "%errorlevel%"=="75" (call :MovAX- "%CurPos%")
if "%errorlevel%"=="80" (call :MovAY+ "%CurPos%")
if "%errorlevel%"=="72" (call :MovAY- "%CurPos%")
if "%errorlevel%"=="13" (
call :Player "%CurPos%"
Call :MovPC
)
if "%errorlevel%"=="88" (Goto :Menu)
if "%errorlevel%"=="120" (Goto :Menu)
Goto :Gp2
::Fin Tablero de Batalla
:MovAX+
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if "%%p"=="%LimX%" Goto :Eof
if !%~1!== set %~1=%Last%
set /a MovX=%%p+1
call set Last=%%X!MovX!Y%%q%%
set X!MovX!Y%%q=
set CurPos=X!MovX!Y%%q
)
Goto :Eof
:MovAX-
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if "%%p"=="%IniX%" Goto :Eof
if !%~1!== set %~1=%Last%
set /a MovX=%%p-1
call set Last=%%X!MovX!Y%%q%%
set X!MovX!Y%%q=
set CurPos=X!MovX!Y%%q
)
Goto :Eof
:MovAY+
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if "%%q"=="%LimY%" Goto :Eof
if !%~1!== set %~1=%Last%
set /a MovY=%%q+1
call set Last=%%X%%pY!MovY!%%
set X%%pY!MovY!=
set CurPos=X%%pY!MovY!
)
Goto :Eof
:MovAY-
for /f "tokens=1,2 delims=X,Y" %%p in ("%~1") do (
if "%%q"=="%IniY%" Goto :Eof
if !%~1!== set %~1=%Last%
set /a MovY=%%q-1
call set Last=%%X%%pY!MovY!%%
set X%%pY!MovY!=
set CurPos=X%%pY!MovY!
)
Goto :Eof
:GenPC
set PC=5
set R1=%random:~-1%
set R2=%random:~-1%
if not "%R1%" GTR "%LimX%" (
if not "%R2%" GTR "%LimY%" (
set MX%R1%Y%R2%=Û
set /a var+=1
))
if "%var%"=="%PC%" Goto :Eof
Goto :GenPC
:MovPC
set R1=%random:~-1%
set R2=%random:~-1%
if not "%R1%" GTR "%LimX%" (
if not "%R2%" GTR "%LimY%" (
call set Tar=!PX%R1%Y%R2%!
if "!Tar!"=="X" (
Goto :MovPC
)
if "!Tar!"=="" (
Goto :MovPC
)
if "!Tar!"=="Û" (
set PX%R1%Y%R2%=
set /a Player-=1
Goto :Eof
) else (
set PX%R1%Y%R2%=X
Goto :Eof
)
))
Goto :MovPC
:PosShip
if not "%Last%"=="Û" (
set %~1=Û
set /a Ships-=1)
Goto :Eof
:Player
if defined M%~1 (
set %~1=Û
set /a PC-=1
Goto :Eof
)
set %~1=%Blank%
Goto :Eof
:Lose
msg * Perdiste !
ping -n 3 0.0.0.0 >nul
Goto :Menu
:Win
msg * Ganaste !
ping -n 3 0.0.0.0 >nul
Goto :Menu
:Clear
for /l %%m in (0,1,%LimY%) do (
set Lin_%%m=
set Lin2_%%m=
)
Goto :Eof
:Logo
@mode con cols=40 lines=15
@title BattleShips v 1 by SmartGenius
echo.
echo. _==^|
echo. Battle _==^| )__) ^| Ships
echo. )_) )___) ))
echo. )___) )____))_)
echo. _ )____)_____))__)\
echo. \---__^|____/^|___^|___-\\---
echo. ~~~~~~~~~\ oo oo oo oo /~~~~~~~~
echo. ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
echo. ~~~~ ~~~~ ~~~~ ~~ ~~
echo. ~~~~~ ~~~~~
echo.
echo. SmartGenius, Corp. 2009
pause >nul
ping -n 3 0.0.0.0 >nul
Goto :Eof
:NoKey
cls
echo.
echo Uno de los archivos necesarios para el
echo funcionamiento de este Script no se
echo encuentra.
echo.
echo A Continuacion sera creado...
call :keyboard
ping -n 2 0.0.0.0 >nul
Goto :Menu
: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
Espero sea de su agrado..cualquier duda o comentario por favor hacerlo... !!
Saludos. =D