Código:
@echo off
title 3R
echo.>00.t && echo.>01.t && echo.>02.t && echo.>10.t && echo.>11.t && echo.>12.t && echo.>20.t && echo.>21.t
echo.>22.t && attrib *.t +h
:ini
color a
cls
set op=-
set or=-
set a3=-
set b3=-
set c3=-
set a2=-
set b2=-
set c2=-
set a1=-
set b1=-
set c1=-
call :4ech 4
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo 3 en Raya en batch by Shadow
call :4ech 4
echo [a] Juego Nuevo
echo [i] Tabla de Errores
echo [s] Salir
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
call :4ech 2
set /p op=_
if %op%==- call :error 01 ini
set opc=%op: =%
set opcn1=%opc:~0,1%
if %opcn1%==- call :error 01 ini
if %opcn1%==a (goto a_) else (if %opcn1%==A (goto a_))
if %opcn1%==i (goto i_) else (if %opcn1%==I (goto i_))
if %opcn1%==s (goto x_) else (if %opcn1%==S (goto x_))
call :error 01 ini
:a_
cls
call :4ech 4
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo [e] Empezar tu
echo [s] Sederme el turno
echo [v] Volver al menu anterior
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
call :4ech 3
set /p or=Que desea hacer (E, S o V)?
if %or%==- call :error 02 a_
set ord=%or: =%
set ordn=%ord:~0,1%
if %ordn%==e (goto graph) else (if %ordn%==E (goto graph))
if %ordn%==s (goto pr) else (if %ordn%==S (goto pr))
if %ordn%==v (goto ini) else (if %ordn%==V (goto ini))
call :error 02 a_
:pr
set rdm=%random:~0,1%
if not %rdm%==1 (if not %rdm%==2 (if not %rdm%==3 (goto pr)))
goto b%rdm%
:graph
cls && call :4ech 3
echo 0 1 2
call :4ech 2
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º º
echo º ^| ^| º
echo 0 º %a1% ^| %b1% ^| %c1% º
echo º _____^|_____^|_____ º
echo º ^| ^| º
echo 1 º %a2% ^| %b2% ^| %c2% º
echo º _____^|_____^|_____ º
echo º ^| ^| º
echo 2 º %a3% ^| %b3% ^| %c3% º
echo º ^| ^| º
echo º º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
set curr=X && call :win_chk jugmov
:win_chk
set nest=%1
:lop
if %curr%==X (set term=Perdiste! && set col=4)
if %a1%%b1%%c1%==%curr: =%%curr: =%%curr: =% (call :win %col% %term%)
if %a2%%b2%%c2%==%curr: =%%curr: =%%curr: =% (call :win %col% %term%)
if %a3%%b3%%c3%==%curr: =%%curr: =%%curr: =% (call :win %col% %term%)
if %a1%%a2%%a3%==%curr: =%%curr: =%%curr: =% (call :win %col% %term%)
if %b1%%b2%%b3%==%curr: =%%curr: =%%curr: =% (call :win %col% %term%)
if %c1%%c2%%c3%==%curr: =%%curr: =%%curr: =% (call :win %col% %term%)
if %a1%%b2%%c3%==%curr: =%%curr: =%%curr: =% (call :win %col% %term%)
if %a3%%b2%%c1%==%curr: =%%curr: =%%curr: =% (call :win %col% %term%)
if %curr%==X (set curr=O && set term=Ganaste! && set col=a && goto lop)
call :juju %nest%
:juju
if %a1%==- goto %1
if %a2%==- goto %1
if %a3%==- goto %1
if %b1%==- goto %1
if %b2%==- goto %1
if %b3%==- goto %1
if %c1%==- goto %1
if %c2%==- goto %1
if %c3%==- (goto %1) else (call :win f0 Empate!)
:jugmov
call :4ech 2 && echo Elija las coordenadas de su siguiente jugada! && call :4ech 2
set /p co_n=Coordenadas (xy) ej.:11?
set coo_n=%co_n:~0,2%
set coor_n=%coo_n: =%
if op%coor_n%==op (call :error 04 graph)
if %coor_n%==s (goto x_) else (if %coor_n%==S (goto x_))
if not exist %coor_n%.t (call :error 03 graph)
if %coor_a%%coor_n%==00 goto a1_
if %coor_a%%coor_n%==01 goto a2_
if %coor_a%%coor_n%==02 goto a3_
if %coor_a%%coor_n%==10 goto b1_
if %coor_a%%coor_n%==11 goto b2_
if %coor_a%%coor_n%==12 goto b3_
if %coor_a%%coor_n%==20 goto c1_
if %coor_a%%coor_n%==21 goto c2_
if %coor_a%%coor_n%==22 goto c3_
:a1_
if not %a1%==- goto no
set a1=O
goto ia
:a2_
if not %a2%==- goto no
set a2=O
goto ia
:a3_
if not %a3%==- goto no
set a3=O
goto ia
:b1_
if not %b1%==- goto no
set b1=O
goto ia
:b2_
if not %b2%==- goto no
set b2=O
goto ia
:b3_
if not %b3%==- goto no
set b3=O
goto ia
:c1_
if not %c1%==- goto no
set c1=O
goto ia
:c2_
if not %c2%==- goto no
set c2=O
goto ia
:c3_
if not %c3%==- goto no
set c3=O
goto ia
:no
echo Codigo de ERROR:04 (Ha dejado el campo vacio o el espacio ya a sido ocupado) && pause && goto graph
:ia
set curr=X
call :win_chk sif
:sif
if %a1%%b2%%b1%%c1%%a2%%c2%%a3%%b3%%c3%==O-------- goto b2
if %c1%%b2%%b1%%a1%%a2%%c2%%a3%%b3%%c3%==O-------- goto b2
if %a3%%b2%%b1%%a1%%a2%%c2%%c1%%b3%%c3%==O-------- goto b2
if %c3%%b2%%b1%%a1%%a2%%c2%%a3%%b3%%c1%==O-------- goto b2
set crt=X
set cnf=x
:nxpla
if %a3%%b3%%c3%==%crt: =%%crt: =%- goto c3
if %a3%%b3%%c3%==%crt: =%-%crt: =% goto b3
if %a3%%b3%%c3%==-%crt: =%%crt: =% goto a3
if %a2%%b2%%c2%==%crt: =%%crt: =%- goto c2
if %a2%%b2%%c2%==%crt: =%-%crt: =% goto b2
if %a2%%b2%%c2%==-%crt: =%%crt: =% goto a2
if %a1%%b1%%c1%==%crt: =%%crt: =%- goto c1
if %a1%%b1%%c1%==%crt: =%-%crt: =% goto b1
if %a1%%b1%%c1%==-%crt: =%%crt: =% goto a1
if %a3%%a2%%a1%==%crt: =%%crt: =%- goto a1
if %a3%%a2%%a1%==%crt: =%-%crt: =% goto a2
if %a3%%a2%%a1%==-%crt: =%%crt: =% goto a3
if %b3%%b2%%b1%==%crt: =%%crt: =%- goto b1
if %b3%%b2%%b1%==%crt: =%-%crt: =% goto b2
if %b3%%b2%%b1%==-%crt: =%%crt: =% goto b3
if %c3%%c2%%c1%==%crt: =%%crt: =%- goto c1
if %c3%%c2%%c1%==%crt: =%-%crt: =% goto c2
if %c3%%c2%%c1%==-%crt: =%%crt: =% goto c3
if %a1%%b2%%c3%==%crt: =%%crt: =%- goto c3
if %a1%%b2%%c3%==%crt: =%-%crt: =% goto b2
if %a1%%b2%%c3%==-%crt: =%%crt: =% goto a1
if %c1%%b2%%a3%==%crt: =%%crt: =%- goto a3
if %c1%%b2%%a3%==%crt: =%-%crt: =% goto b2
if %c1%%b2%%a3%==-%crt: =%%crt: =% goto c1
if %cnf%==x (set cnf=f
set crt=O
goto nxpla)
if %a1%%b2%%b3%%c1%%b1%%c3%%a2%%c2%%a3%==OXO------ goto a3
if %b2%%c2%%a3%%b1%%a1%%c1%%a2%%b3%%c3%==XOO------ goto c3
if %b1%%b2%%c3%%a1%%c1%%c2%%a2%%b3%%a3%==OXO------ goto c1
if %c1%%a2%%b2%%a1%%b1%%c2%%b3%%a3%%c3%==OXO------ goto a1
if %a1%%c2%%b3%%b1%%c1%%a2%%b2%%a3%%c3%==OXO------ goto b2
if %b1%%c2%%a3%%a1%%c1%%a2%%b2%%b3%%c3%==XOO------ goto b2
if %b1%%a2%%c3%%a1%%c1%%c2%%b2%%b3%%a3%==OXO------ goto b2
if %c1%%a2%%b3%%a1%%b1%%c2%%b2%%a3%%c3%==OOX------ goto b2
if %a1%%b1%%a2%%c1%%b2%%a3%%c2%%b3%%c3%==XOO------ goto b2
if %a3%%b3%%a2%%a1%%b2%%c3%%b1%%c2%%c1%==XOO------ goto b2
if %c1%%b1%%c2%%a1%%b2%%c3%%a2%%b3%%a3%==XOO------ goto b2
if %c3%%c2%%b3%%c1%%b2%%a3%%b1%%a2%%a1%==XOO------ goto b2
if %a1%%b1%%a2%%c1%%b2%%a3%%c2%%b3%%c3%==XOO------ goto b2
if %c1%%c2%%a3%%a1%%b1%%a2%%b2%%b3%%c3%==XOO------ goto b2
if %a1%%b1%%c3%%c1%%b2%%a3%%c2%%b3%%a2%==XOO------ goto b2
if %c1%%a2%%a3%%a1%%b1%%b2%%c2%%b3%%c3%==OOX------ goto b2
if %a1%%b3%%c3%%b1%%c1%%a2%%c2%%a3%%b2%==OOX------ goto b2
if %a1%%c2%%b3%%b1%%c1%%a2%%b2%%a3%%c3%==XOO------ goto c1
if %a3%%b2%%c2%%a1%%c1%%a2%%b1%%b3%%c3%==OXO------ goto c3
if %b1%%b2%%a3%%a1%%c1%%a2%%c2%%b3%%c3%==OXO------ goto a2
if %a2%%b2%%c3%%a1%%c1%%b1%%c2%%b3%%a3%==OXO------ goto b3
if %c1%%b2%%b3%%a1%%b1%%c3%%a2%%c2%%a3%==OXO------ goto c2
if %a1%%b2%%c2%%c1%%b1%%c3%%a2%%b3%%a3%==OXO------ goto b1
if %c1%%a2%%b3%%a1%%b1%%b2%%c2%%a3%%c3%==XOO------ goto a1
if %c3%%b1%%a2%%a1%%c1%%b2%%c2%%a3%%b3%==XOO------ goto a3
if %b2%%a1%%c3%%b1%%c2%%c1%%a2%%b3%%a3%==XOO------ goto c2
if %c1%%b2%%a3%%a1%%b1%%a2%%c2%%b3%%c3%==XOO------ goto c3
if %a1%%b2%%c3%%b1%%c1%%a2%%c2%%a3%%b3%==XOO------ goto a3
if %a3%%b2%%c1%%a1%%b1%%a2%%c2%%b3%%c3%==XOO------ goto a1
if %c3%%b2%%a1%%b1%%c1%%a2%%c2%%a3%%b3%==XOO------ goto c1
if %a1%%c2%%b3%%b1%%c1%%a2%%b2%%a3%%c3%==XOO------ goto c1
if %a2%%a3%%c2%%a1%%b1%%c1%%b2%%b3%%c3%==XOO------ goto c3
if %a2%%b3%%c1%%a1%%b1%%b2%%c2%%a3%%c3%==XOO------ goto b2
if %c2%%b1%%a3%%a1%%c1%%a2%%b2%%b3%%c3%==XOO------ goto b2
if %a1%%b1%%a3%%c1%%a2%%b2%%c2%%b3%%c3%==XOO------ goto b2
if %a1%%c1%%b3%%b1%%a2%%b2%%c2%%a3%%c3%==XOO------ goto a3
if %c3%%a3%%c2%%a1%%b1%%c1%%a2%%b2%%b3%==XOO------ goto b2
if %c3%%b3%%c1%%a1%%b1%%a2%%b2%%c2%%a3%==XOO------ goto b2
if %a3%%b3%%c3%%a1%%b1%%c1%%a2%%b2%%c2%==OOX------ goto b2
if %c1%%c2%%c3%%b1%%b2%%b3%%a1%%a2%%a3%==XOO------ goto b2
if %a1%%b1%%c1%%a3%%b3%%c3%%a2%%b2%%c2%==XOO------ goto b2
if %a1%%a2%%a3%%c1%%c2%%c3%%b1%%b2%%b3%==OOX------ goto b2
if %a1%%c1%%a2%%c2%%b3%%b1%%b2%%a3%%c3%==0XXOO---- goto b2
if %a1%%c1%%a2%%c2%%b3%%b1%%b2%%a3%%c3%==XOOXO---- goto b2
if %b1%%a2%%c2%%a3%%c3%%b3%%b2%%a1%%c1%==OOXXO---- goto b2
if %b1%%a2%%c2%%a3%%c3%%b3%%b2%%a1%%c1%==OXOOX---- goto b2
if %a1%%b1%%c2%%a3%%b3%%a2%%b2%%c3%%c1%==XOOOX---- goto b2
if %a1%%b1%%c2%%a3%%b3%%a2%%b2%%c3%%c1%==OXOXO---- goto b2
if %b1%%c1%%a2%%b3%%c3%%a3%%b2%%a1%%c2%==XOOOX---- goto b2
if %b1%%c1%%a2%%b3%%c3%%a3%%b2%%a1%%c2%==OXOXO---- goto b2
if %b1%%a2%%b2%%c2%%c3%%b3%%a3%%a1%%c1%==OXXOO---- goto c1
if %b1%%a2%%b2%%b3%%c3%%a3%%c2%%a1%%c1%==OOXXO---- goto a1
if %c1%%a2%%b2%%c2%%b3%%a3%%a1%%b1%%c3%==OOXXO---- goto a3
if %a1%%b1%%b2%%c2%%b3%%a2%%a3%%c3%%c1%==OXXOO---- goto c3
if %b2%==- goto b2x
if %a3%==- goto pr2
if %b3%==- goto pr2
if %c3%==- goto pr2
if %a2%==- goto pr2
if %c2%==- goto pr2
if %a1%==- goto pr2
if %b1%==- goto pr2
if %c1%==- (goto pr2) else (call :win f0 Empate!)
:a3
if %a3%==- (goto a3x) else (goto pr2)
:b3
if %b3%==- (goto b3x) else (goto pr2)
:c3
if %c3%==- (goto c3x) else (goto pr2)
:a2
if %a2%==- (goto a2x) else (goto pr2)
:b2
if %b2%==- (goto b2x) else (goto pr2)
:c2
if %c2%==- (goto c2x) else (goto pr2)
:a1
if %a1%==- (goto a1x) else (goto pr2)
:b1
if %b1%==- (goto b1x) else (goto pr2)
:c1
if %c1%==- (goto c1x) else (goto pr2)
:a3x
set a3=X
goto graph
:b3x
set b3=X
goto graph
:c3x
set c3=X
goto graph
:a2x
set a2=X
goto graph
:b2x
set b2=X
goto graph
:c2x
set c2=X
goto graph
:a1x
set a1=X
goto graph
:b1x
set b1=X
goto graph
:c1x
set c1=X
goto graph
:4ech
echo.
if %1==1 goto :EOF
echo.
if %1==2 goto :EOF
echo.
if %1==3 goto :EOF
echo.
if %1==4 goto :EOF
echo.
goto :EOF
:error
echo Un error ha ocurrido! Codigo de error: %1 .
echo Para ver la explicacion del error vaya a la tabla de errores en el menu principal.
pause && goto %2
:win
color %1 && call :4ech 2 && echo %2 && pause && goto ini
:x_
attrib -h *.t && del /s /q *.t && exit
:i_
cls
call :4ech 5
echo TABLA DE ERRORES
echo ------------------
echo.
echo CODIGO ^| SIGNIFICADO
echo ________^|______________________________________________________
echo 01 ^| OPCION INVALIDA (OPCIONES VALIDAS: a, i, x)
echo 02 ^| OPCION INVALIDA (OPCIONES VALIDAS: e, s, v)
echo 03 ^| OPCION INVALIDA (OPCIONES VALIDAS: 00,01,02,10,11,12,20,21,22)
echo 04 ^| Ha dejado un campo en blanco o La coordenada ya ha sido ocupada
call :4ech 3
pause
goto ini
:lo
call :error 05 jugmov
:pr2
set rdm=%random:~1,1%
if not %rdm%==1 (if not %rdm%==2 (if not %rdm%==3 (goto pr2)))
set rdm2=%random:~2,1%
if not %rdm2%==4 (if not %rdm2%==5 (if not %rdm2%==6 (goto pr2)))
set targt=%rdm2%%rdm%
set targt=%targt:4=a%
set targt=%targt:5=b%
set targt=%targt:6=c%
if %targt%==c3 (if %a2%%a1%%b1%%c1%%b2%%c2%%c3%%b3%%a3%==O-------- goto pr2
if %c1%%a1%%b1%%a2%%b2%%c2%%a3%%b3%%c3%==O-------- goto pr2)
if %targt%==a1 (if %c2%%a1%%b1%%c1%%a2%%b2%%a3%%b3%%c3%==O-------- goto pr2
if %a3%%a1%%b1%%c1%%a2%%b2%%c2%%b3%%c3%==O-------- goto pr2)
if %targt%==a3 (if %a1%%b1%%c1%%a2%%b2%%c2%%a3%%b3%%c3%==O-------- goto pr2
if %c2%%a1%%b1%%c1%%a2%%b2%%a3%%b3%%c3%==O-------- goto pr2)
if %targt%==c1 (if %a2%%a1%%b1%%c1%%b2%%c2%%a3%%b3%%c3%==O-------- goto pr2
if %c3%%a1%%b1%%c1%%a2%%b2%%c2%%a3%%b3%==O-------- goto pr2)
if %targt%==b1 (if %b2%%a1%%b1%%c1%%a2%%c2%%a3%%b3%%c3%==O-------- goto pr2)
if %targt%==c2 (if %b2%%a1%%b1%%c1%%a2%%c2%%a3%%b3%%c3%==O-------- goto pr2)
if %targt%==a2 (if %b2%%a1%%b1%%c1%%a2%%c2%%a3%%b3%%c3%==O-------- goto pr2)
if %targt%==b3 (if %b2%%a1%%b1%%c1%%a2%%c2%%a3%%b3%%c3%==O-------- goto pr2)
goto %targt%
Saludos!