[aporte][batch] 3 en raya en batch

Iniciado por shadowhunter, 15 Junio 2014, 22:27 PM

0 Miembros y 1 Visitante están viendo este tema.

shadowhunter

Es un 3 en raya multijugador programado en batch y que hice por una apuesta xD.

lo cuelgo aqui por si a alguien le interesa o le es de utilidad.

También acepto ideas de como mejorarlo, tanto el código como añadidos para el juego.

@echo off & mode con: cols=59 lines=40
set ver=1.2.0
Title Tic Tac Toe %ver%

REM Variables editables
set $=ÚÄ¿
set ú=³ ³
set Á=ÀÄÙ
set Ó= 
set É= 
set Í= 
set marname1=Circulos  
set marname2=Equis    
set player01=Player1  
set player02=Player2  
REM Variables de sistema
set win=  
set nextgame=0
set /a a=  0
set /a b=  0
Set /a primer=(%Random% %%9)
REM Variables no editables
:RETURN
set /a turno=0
set c=  
set d=  
set e=-1-
set f=  
set g=  
set h=-2-
set i=  
set j=  
set k=-3-
set l=  
set m=  
set n=-4-
set o=  
set p=  
set q=-5-
set r=  
set s=  
set t=-6-
set u=  
set v=  
set w=-7-
set x=  
set y=  
set z=-8-
set ñ=  
set @=  
set ç=-9-
set "counter=0"
:loop3
if %counter%==3 (goto endloop3)
set "a=%a% "
set/a "counter=%counter%+1"
goto loop3
:endloop3
set a=%a:~0,3%
set "counter=0"
:loop4
if %counter%==3 (goto endloop4)
set "b=%b% "
set/a "counter=%counter%+1"
goto loop4
:endloop4
set b=%b:~0,3%
if %nextgame%==1 goto INICIO
:MENU
cls
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º                   Tic Tac Toe %ver%                    º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º    Elija un nombre jugador 1:   (max 10 caracteres)    º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
set /p "player01="
set "counter=0"
:loop
if %counter%==10 (goto endloop)
set "player01=%player01% "
set/a "counter=%counter%+1"
goto loop
:endloop
set player01=%player01:~0,10%
cls
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º                   Tic Tac Toe %ver%                    º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º    Elija un nombre jugador 2:   (max 10 caracteres)    º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
set /p "player02="
set "counter=0"
:loop2
if %counter%==10 (goto endloop2)
set "player02=%player02% "
set/a "counter=%counter%+1"
goto loop2
:endloop2
set player02=%player02:~0,10%
cls
echo.
echo.ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º              elige un signo %player01%                 º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º                                                        º
echo º     %$%                        %Ó%                     º
echo º     %ú%  1.%marname1%          %É%  2.%marname2%       º
echo º     %Á%                        %Í%                     º
echo º                                                        º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
if not defined signo set signo=0
set /p "signo="
if %signo%==1 (
set signop1a=%$%
set signop1b=%ú%
set signop1c=%Á%
set signop2a=%Ó%
set signop2b=%É%
set signop2c=%Í%
goto INICIO
)
if %signo%==2 (
set signop1a=%Ó%
set signop1b=%É%
set signop1c=%Í%
set signop2a=%$%
set signop2b=%ú%
set signop2c=%Á%
goto INICIO
)
goto endloop2

:INICIO
set colocar=0
cls
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º                                                        º
echo º                                                        º
echo º  ÉÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍ»   ÉÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍ»  º
echo º  º         º         º         º   º %player01% º%a%º  º
echo º  º   %c%   º   %f%   º   %i%   º   ÌÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍ͹  º
echo º  º   %d%   º   %g%   º   %j%   º   º %player02% º%b%º  º
echo º  º   %e%   º   %h%   º   %k%   º   ÈÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍͼ  º
echo º  º         º         º         º                       º
echo º  ÌÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍ͹                       º
echo º  º         º         º         º                       º
echo º  º   %l%   º   %o%   º   %r%   º                       º
echo º  º   %m%   º   %p%   º   %s%   º                       º
echo º  º   %n%   º   %q%   º   %t%   º                       º
echo º  º         º         º         º                       º
echo º  ÌÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍ͹                       º
echo º  º         º         º         º                       º
echo º  º   %u%   º   %x%   º   %ñ%   º                       º
echo º  º   %v%   º   %y%   º   %@%   º                       º
echo º  º   %w%   º   %z%   º   %ç%   º                       º
echo º  º         º         º         º                       º
echo º  ÈÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍͼ                       º
echo º                                                        º
echo º                             V. %ver%   By Shadowhunter º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
if %turno%==0 goto PRIMERAJUGADA
if %turno% GEQ 1 goto JUGADA

:PRIMERAJUGADA
set /a turno=%turno% + 1
if %primer% GEQ 5 goto PLAYER2
goto PLAYER1
:JUGADA
if %e%==%h% (
set win=%e%
if %e%==%k% goto WIN
)
if %e%==%q% (
set win=%e%
if %e%==%ç% goto WIN
)
if %e%==%n% (
set win=%e%
if %e%==%w% goto WIN
)
if %ç%==%z% (
set win=%ç%
if %ç%==%w% goto WIN
)
if %ç%==%t% (
set win=%ç%
if %ç%==%k% goto WIN
)
if %n%==%q% (
set win=%n%
if %n%==%t% goto WIN
)
if %h%==%q% (
set win=%h%
if %h%==%z% goto WIN
)
if %k%==%q% (
set win=%k%
if %k%==%w% goto WIN
)
if %turno%==10 goto EMPATE
if %playerturn%==1 Call :PLAYER2
Call :PLAYER1

:EMPATE
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Empate entre %player01% y %player02% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
echo Se iniciara una nueva partida. |MORE
pause
set nextgame=1
goto RETURN
:WIN
if %win%==%signop1c% (
set player00=%player01%
set /a a=%a%+1
Call :CABWIN
)
if %win%==%signop2c% (
set player00=%player02%
set /a b=%b%+1
Call :CABWIN
)

:PLAYER1
CALL :CABPLAYER1
echo Colocar en -1-
echo Colocar en -2-
echo Colocar en -3-
echo Colocar en -4-
echo Colocar en -5-
echo Colocar en -6-
echo Colocar en -7-
echo Colocar en -8-
echo Colocar en -9-
set /p "colocar=Casilla "
Call :COMPROBARCASILLA
if %colocar%==1 (
set c=%signop1a%
set d=%signop1b%
set e=%signop1c%
goto :ENDPLAYER1
)
if %colocar%==2 (
set f=%signop1a%
set g=%signop1b%
set h=%signop1c%
goto :ENDPLAYER1
)
if %colocar%==3 (
set i=%signop1a%
set j=%signop1b%
set k=%signop1c%
goto :ENDPLAYER1
)
if %colocar%==4 (
set l=%signop1a%
set m=%signop1b%
set n=%signop1c%
goto :ENDPLAYER1
)
if %colocar%==5 (
set o=%signop1a%
set p=%signop1b%
set q=%signop1c%
goto :ENDPLAYER1
)
if %colocar%==6 (
set r=%signop1a%
set s=%signop1b%
set t=%signop1c%
goto :ENDPLAYER1
)
if %colocar%==7 (
set u=%signop1a%
set v=%signop1b%
set w=%signop1c%
goto :ENDPLAYER1
)
if %colocar%==8 (
set x=%signop1a%
set y=%signop1b%
set z=%signop1c%
goto :ENDPLAYER1
)
if %colocar%==9 (
set ñ=%signop1a%
set @=%signop1b%
set ç=%signop1c%
goto :ENDPLAYER1
)
goto ERROR02
:ENDPLAYER1
set playerturn=1
set /a turno=%turno% + 1
goto INICIO
:PLAYER2
CALL :CABPLAYER2
echo Colocar en -1-
echo Colocar en -2-
echo Colocar en -3-
echo Colocar en -4-
echo Colocar en -5-
echo Colocar en -6-
echo Colocar en -7-
echo Colocar en -8-
echo Colocar en -9-
set /p "colocar=Casilla "
Call :COMPROBARCASILLA
if %colocar%==1 (
set c=%signop2a%
set d=%signop2b%
set e=%signop2c%
goto :ENDPLAYER2
)
if %colocar%==2 (
set f=%signop2a%
set g=%signop2b%
set h=%signop2c%
goto :ENDPLAYER2
)
if %colocar%==3 (
set i=%signop2a%
set j=%signop2b%
set k=%signop2c%
goto :ENDPLAYER2
)
if %colocar%==4 (
set l=%signop2a%
set m=%signop2b%
set n=%signop2c%
goto :ENDPLAYER2
)
if %colocar%==5 (
set o=%signop2a%
set p=%signop2b%
set q=%signop2c%
goto :ENDPLAYER2
)
if %colocar%==6 (
set r=%signop2a%
set s=%signop2b%
set t=%signop2c%
goto :ENDPLAYER2
)
if %colocar%==7 (
set u=%signop2a%
set v=%signop2b%
set w=%signop2c%
goto :ENDPLAYER2
)
if %colocar%==8 (
set x=%signop2a%
set y=%signop2b%
set z=%signop2c%
goto :ENDPLAYER2
)
if %colocar%==9 (
set ñ=%signop2a%
set @=%signop2b%
set ç=%signop2c%
goto :ENDPLAYER2
)
goto ERROR02
:ENDPLAYER2
set playerturn=0
set /a turno=%turno% + 1
goto INICIO

:COMPROBARCASILLA
if %colocar%==1 (
if not %e%==-1- goto ERROR01
)
if %colocar%==2 (
if not %h%==-2- goto ERROR01
)
if %colocar%==3 (
if not %k%==-3- goto ERROR01
)
if %colocar%==4 (
if not %n%==-4- goto ERROR01
)
if %colocar%==5 (
if not %q%==-5- goto ERROR01
)
if %colocar%==6 (
if not %t%==-6- goto ERROR01
)
if %colocar%==7 (
if not %w%==-7- goto ERROR01
)
if %colocar%==8 (
if not %z%==-8- goto ERROR01
)
if %colocar%==9 (
if not %ç%==-9- goto ERROR01
)
goto :eof

:CABPLAYER1
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Turno de %player01% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF
:CABPLAYER2
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Turno de %player02% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF
:CABWIN
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Victoria de %player00% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
echo Se iniciara una nueva partida. |MORE
pause
set nextgame=1
goto RETURN

:ERROR
cls
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍ»
echo º   ERROR   º
echo ÈÍÍÍÍÍÍÍÍÍÍͼ
echo 
goto :EOF
:ERROR01
call :ERROR
echo Esa casilla ya esta ocupada. |MORE
pause & goto INICIO
:ERROR02
call :ERROR
echo Tiene que seleccionar una casilla. |MORE
pause & goto INICIO

shadowhunter

Bueno he estado revisando el código y lo he mejorado bastante, ahora tambien tiene modo de 1 jugador, y con selección de dificultad de la "IA"  ;D

Sigo buscando ideas para mejorarlo

@echo off & mode con: cols=59 lines=40
set ver=2.2.1
Title Tic Tac Toe %ver%
::By Shadowhunter
::::::::::::::::::::::::::::::::::::::::
REM Variables editables
set $=ÚÄ¿
set ú=³0³
set Á=ÀÄÙ
set Ó=ÉÍ»
set É=ºXº
set Í=Èͼ
set marname1=Circulos 
set marname2=Equis     
set player01=Player1   
set player02=Player2   
set /a dificultad=0 REM de 0 a 9, cuanto mas grande menor dificultad.
REM Variables de sistema
set win=0
set /a "a=  0","b=  0","#=  0","nextgame=0","nextgame2=0","singleplayer=0","signo=0"
Set /a "IA=(%Random% %%9)","primer=(%Random% %%9)"
REM Variables no editables
:CLEAR
set /a turno=0
set c=   
set d=   
set e=-1-
set f=   
set g=   
set h=-2-
set i=   
set j=   
set k=-3-
set l=   
set m=   
set n=-4-
set o=   
set p=   
set q=-5-
set r=   
set s=   
set t=-6-
set u=   
set v=   
set w=-7-
set x=   
set y=   
set z=-8-
set ñ=   
set @=   
set ç=-9-
REM Contadores
set "counter=0"
:loop
if %counter%==3 (goto endloop)
set "a=%a% "
set "b=%b% "
set "#=%#% "
set/a "counter=%counter%+1"
goto loop
:endloop
set a=%a:~0,3%
set b=%b:~0,3%
set #=%#:~0,3%
if %nextgame%==1 goto INICIO
if %nextgame2%==1 goto INICIO2
::::::::::::::::::::::::::::::::::::::::
:MENU
cls
echo.
Call :CABECERA
echo º                                                        º
echo º       1.      Un jugador.                              º
echo º       2.      Dos jugadores.                           º
echo º                                                        º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
CHOICE /C:12 /N >nul
If "%errorlevel%"=="1" Goto 1PLAYER
If "%errorlevel%"=="2" Goto 2PLAYER
::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
:1PLAYER
REM Variables para 1 jugador
set player02=Computer 
set singleplayer=1
Call :CABECERA
echo º        Elija un nombre:     (max 10 caracteres)        º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
set /p "player01="
Call :DIFICULTAD
set "counter=0"
:loop2
if %counter%==10 (goto endloop2)
set "player01=%player01% "
set/a "counter=%counter%+1"
goto loop2
:endloop2
set player01=%player01:~0,10%
call :SIGNO
:INICIO
call :TABLERO
if %turno%==0 goto PRIMERAJUGADA
if %turno%==10 goto EMPATE
if %turno% GEQ 1 goto JUGADA
:PRIMERAJUGADA
set /a turno=%turno% + 1
if %primer% GEQ 5 goto IA
goto PLAYER1
:JUGADA
Call :COMPROBARVICTORIA
if %turno%==10 goto EMPATE
if %playerturn%==1 goto IA
goto PLAYER1
:EMPATE
Call :CABEMPATE
set nextgame=1
goto CLEAR
::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
:2PLAYER
Call :CABECERA
echo º    Elija un nombre jugador 1:   (max 10 caracteres)    º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
set /p "player01="
Call :CABECERA
echo º    Elija un nombre jugador 2:   (max 10 caracteres)    º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
set /p "player02="
Call :DIFICULTAD
set "counter=0"
:loop3
if %counter%==10 (goto endloop3)
set "player01=%player01% "
set "player02=%player02% "
set/a "counter=%counter%+1"
goto loop3
:endloop3
set player01=%player01:~0,10%
set player02=%player02:~0,10%
Call :SIGNO
::::::::::::::::::::::::::::::::::::::::
:INICIO2
Call :TABLERO
if %turno%==0 goto PRIMERAJUGADA2
if %turno%==10 goto EMPATE2
if %turno% GEQ 1 goto JUGADA2
:PRIMERAJUGADA2
set /a turno=%turno% + 1
if %primer% GEQ 5 goto PLAYER2
goto PLAYER1
:JUGADA2
Call :COMPROBARVICTORIA
if %playerturn%==1 goto PLAYER2
goto PLAYER1
:EMPATE2
Call :CABEMPATE
set nextgame2=1
goto CLEAR
::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
:WIN
if %win%==%signop1c% (
set player00=%player01%
set /a "a=%a%+1","nextgame2=1"
Call :CABWIN
)
if %win%==%signop2c% (
set player00=%player02%
set /a "b=%b%+1","nextgame2=1"
Call :CABWIN
)
::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
:IA
REM Jugadas de computer
if "%e%%h%%k%"=="-1-%signop2c%%signop2c%" goto IA_1
if "%e%%h%%k%"=="%signop2c%-2-%signop2c%" goto IA_2
if "%e%%h%%k%"=="%signop2c%%signop2c%-3-" goto IA_3
if "%n%%q%%t%"=="-4-%signop2c%%signop2c%" goto IA_4
if "%n%%q%%t%"=="%signop2c%-5-%signop2c%" goto IA_5
if "%n%%q%%t%"=="%signop2c%%signop2c%-6-" goto IA_6
if "%w%%z%%ç%"=="-7-%signop2c%%signop2c%" goto IA_7
if "%w%%z%%ç%"=="%signop2c%-8-%signop2c%" goto IA_8
if "%w%%z%%ç%"=="%signop2c%%signop2c%-9-" goto IA_9
if "%e%%n%%w%"=="-1-%signop2c%%signop2c%" goto IA_1
if "%e%%n%%w%"=="%signop2c%-4-%signop2c%" goto IA_4
if "%e%%n%%w%"=="%signop2c%%signop2c%-7-" goto IA_7
if "%h%%q%%z%"=="-2-%signop2c%%signop2c%" goto IA_2
if "%h%%q%%z%"=="%signop2c%-5-%signop2c%" goto IA_5
if "%h%%q%%z%"=="%signop2c%%signop2c%-8-" goto IA_8
if "%k%%t%%ç%"=="-3-%signop2c%%signop2c%" goto IA_3
if "%k%%t%%ç%"=="%signop2c%-6-%signop2c%" goto IA_6
if "%k%%t%%ç%"=="%signop2c%%signop2c%-9-" goto IA_9
if "%e%%q%%ç%"=="-1-%signop2c%%signop2c%" goto IA_1
if "%e%%q%%ç%"=="%signop2c%-5-%signop2c%" goto IA_5
if "%e%%q%%ç%"=="%signop2c%%signop2c%-9-" goto IA_9
if "%k%%q%%w%"=="-3-%signop2c%%signop2c%" goto IA_3
if "%k%%q%%w%"=="%signop2c%-5-%signop2c%" goto IA_5
if "%k%%q%%w%"=="%signop2c%%signop2c%-7-" goto IA_7
if %IA% GEQ %dificultad% goto IA2
REM Romper jugadas Player
if "%e%%h%%k%"=="-1-%signop1c%%signop1c%" goto IA_1
if "%e%%h%%k%"=="%signop1c%-2-%signop1c%" goto IA_2
if "%e%%h%%k%"=="%signop1c%%signop1c%-3-" goto IA_3
if "%n%%q%%t%"=="-4-%signop1c%%signop1c%" goto IA_4
if "%n%%q%%t%"=="%signop1c%-5-%signop1c%" goto IA_5
if "%n%%q%%t%"=="%signop1c%%signop1c%-6-" goto IA_6
if "%w%%z%%ç%"=="-7-%signop1c%%signop1c%" goto IA_7
if "%w%%z%%ç%"=="%signop1c%-8-%signop1c%" goto IA_8
if "%w%%z%%ç%"=="%signop1c%%signop1c%-9-" goto IA_9
if "%e%%n%%w%"=="-1-%signop1c%%signop1c%" goto IA_1
if "%e%%n%%w%"=="%signop1c%-4-%signop1c%" goto IA_4
if "%e%%n%%w%"=="%signop1c%%signop1c%-7-" goto IA_7
if "%h%%q%%z%"=="-2-%signop1c%%signop1c%" goto IA_2
if "%h%%q%%z%"=="%signop1c%-5-%signop1c%" goto IA_5
if "%h%%q%%z%"=="%signop1c%%signop1c%-8-" goto IA_8
if "%k%%t%%ç%"=="-3-%signop1c%%signop1c%" goto IA_3
if "%k%%t%%ç%"=="%signop1c%-6-%signop1c%" goto IA_6
if "%k%%t%%ç%"=="%signop1c%%signop1c%-9-" goto IA_9
if "%e%%q%%ç%"=="-1-%signop1c%%signop1c%" goto IA_1
if "%e%%q%%ç%"=="%signop1c%-5-%signop1c%" goto IA_5
if "%e%%q%%ç%"=="%signop1c%%signop1c%-9-" goto IA_9
if "%k%%q%%w%"=="-3-%signop1c%%signop1c%" goto IA_3
if "%k%%q%%w%"=="%signop1c%-5-%signop1c%" goto IA_5
if "%k%%q%%w%"=="%signop1c%%signop1c%-7-" goto IA_7
:IA2
Set /a IA2=(%Random% %%9)
if %IA2%==0 goto IA2
goto IA_%IA2%
:ENDIA
set playerturn=0
set /a turno=%turno% + 1
goto INICIO
:IA_1
Call :COMPROBARCASILLA_IA
Call :CASILLA1B
goto ENDIA
:IA_2
Call :COMPROBARCASILLA_IA
Call :CASILLA2B
goto ENDIA
:IA_3
Call :COMPROBARCASILLA_IA
Call :CASILLA3B
goto ENDIA
:IA_4
Call :COMPROBARCASILLA_IA
Call :CASILLA4B
goto ENDIA
:IA_5
Call :COMPROBARCASILLA_IA
Call :CASILLA5B
goto ENDIA
:IA_6
Call :COMPROBARCASILLA_IA
Call :CASILLA6B
goto ENDIA
:IA_7
Call :COMPROBARCASILLA_IA
Call :CASILLA7B
goto ENDIA
:IA_8
Call :COMPROBARCASILLA_IA
Call :CASILLA8B
goto ENDIA
:IA_9
Call :COMPROBARCASILLA_IA
Call :CASILLA9B
goto ENDIA
:COMPROBARCASILLA_IA
if %IA2%==1 (
if not %e%==-1- goto IA2)
if %IA2%==2 (
if not %h%==-2- goto IA2)
if %IA2%==3 (
if not %k%==-3- goto IA2)
if %IA2%==4 (
if not %n%==-4- goto IA2)
if %IA2%==5 (
if not %q%==-5- goto IA2)
if %IA2%==6 (
if not %t%==-6- goto IA2)
if %IA2%==7 (
if not %w%==-7- goto IA2)
if %IA2%==8 (
if not %z%==-8- goto IA2)
if %IA2%==9 (
if not %ç%==-9- goto IA2)
goto :eof
::::::::::::::::::::::::::::::::::::::::
:PLAYER1
CALL :CABPLAYER1
For /L %%i in (1,1,9) do ( echo Colocar en -%%i- )
set /p "colocar=Casilla "
Call :COMPROBARCASILLA
if %colocar%==1 ( Call :CASILLA1A
goto :ENDPLAYER1)
if %colocar%==2 ( Call :CASILLA2A
goto :ENDPLAYER1)
if %colocar%==3 ( Call :CASILLA3A
goto :ENDPLAYER1)
if %colocar%==4 ( Call :CASILLA4A
goto :ENDPLAYER1)
if %colocar%==5 ( Call :CASILLA5A
goto :ENDPLAYER1)
if %colocar%==6 ( Call :CASILLA6A
goto :ENDPLAYER1)
if %colocar%==7 ( Call :CASILLA7A
goto :ENDPLAYER1)
if %colocar%==8 ( Call :CASILLA8A
goto :ENDPLAYER1)
if %colocar%==9 ( Call :CASILLA9A
goto :ENDPLAYER1)
goto ERROR02
:ENDPLAYER1
set playerturn=1
set /a turno=%turno% + 1
if %singleplayer%==1 goto INICIO
goto INICIO2
::::::::::::::::::::::::::::::::::::::::
:PLAYER2
CALL :CABPLAYER2
For /L %%i in (1,1,9) do ( echo Colocar en -%%i- )
set /p "colocar=Casilla "
Call :COMPROBARCASILLA
if %colocar%==1 ( Call :CASILLA1B
goto :ENDPLAYER2)
if %colocar%==2 ( Call :CASILLA2B
goto :ENDPLAYER2)
if %colocar%==3 ( Call :CASILLA3B
goto :ENDPLAYER2)
if %colocar%==4 ( Call :CASILLA4B
goto :ENDPLAYER2)
if %colocar%==5 ( Call :CASILLA5B
goto :ENDPLAYER2)
if %colocar%==6 ( Call :CASILLA6B
goto :ENDPLAYER2)
if %colocar%==7 ( Call :CASILLA7B
goto :ENDPLAYER2)
if %colocar%==8 ( Call :CASILLA8B
goto :ENDPLAYER2)
if %colocar%==9 ( Call :CASILLA9B
goto :ENDPLAYER2)
goto ERROR02
:ENDPLAYER2
set playerturn=0
set /a turno=%turno% + 1
goto INICIO2
::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
:COMPROBARVICTORIA
set win=%e%
if "%e%%h%"=="%k%%k%" goto WIN
if "%e%%n%"=="%w%%w%" goto WIN
set win=%ç%
if "%ç%%z%"=="%w%%w%" goto WIN
if "%ç%%t%"=="%k%%k%" goto WIN
set win=%q%
if "%q%%n%"=="%t%%t%" goto WIN
if "%q%%h%"=="%z%%z%" goto WIN
if "%q%%k%"=="%w%%w%" goto WIN
if "%q%%e%"=="%ç%%ç%" goto WIN
goto :eof
:COMPROBARCASILLA
if %colocar%==1 (
if not %e%==-1- goto ERROR01)
if %colocar%==2 (
if not %h%==-2- goto ERROR01)
if %colocar%==3 (
if not %k%==-3- goto ERROR01)
if %colocar%==4 (
if not %n%==-4- goto ERROR01)
if %colocar%==5 (
if not %q%==-5- goto ERROR01)
if %colocar%==6 (
if not %t%==-6- goto ERROR01)
if %colocar%==7 (
if not %w%==-7- goto ERROR01)
if %colocar%==8 (
if not %z%==-8- goto ERROR01)
if %colocar%==9 (
if not %ç%==-9- goto ERROR01)
goto :eof
::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
:CASILLA1A
set c=%signop1a%
set d=%signop1b%
set e=%signop1c%
goto :eof
:CASILLA2A
set f=%signop1a%
set g=%signop1b%
set h=%signop1c%
goto :eof
:CASILLA3A
set i=%signop1a%
set j=%signop1b%
set k=%signop1c%
goto :eof
:CASILLA4A
set l=%signop1a%
set m=%signop1b%
set n=%signop1c%
goto :eof
:CASILLA5A
set o=%signop1a%
set p=%signop1b%
set q=%signop1c%
goto :eof
:CASILLA6A
set r=%signop1a%
set s=%signop1b%
set t=%signop1c%
goto :eof
:CASILLA7A
set u=%signop1a%
set v=%signop1b%
set w=%signop1c%
goto :eof
:CASILLA8A
set x=%signop1a%
set y=%signop1b%
set z=%signop1c%
goto :eof
:CASILLA9A
set ñ=%signop1a%
set @=%signop1b%
set ç=%signop1c%
goto :eof
::::::::::::::::::::::::::::::::::::::::
:CASILLA1B
set c=%signop2a%
set d=%signop2b%
set e=%signop2c%
goto :eof
:CASILLA2B
set f=%signop2a%
set g=%signop2b%
set h=%signop2c%
goto :eof
:CASILLA3B
set i=%signop2a%
set j=%signop2b%
set k=%signop2c%
goto :eof
:CASILLA4B
set l=%signop2a%
set m=%signop2b%
set n=%signop2c%
goto :eof
:CASILLA5B
set o=%signop2a%
set p=%signop2b%
set q=%signop2c%
goto :eof
:CASILLA6B
set r=%signop2a%
set s=%signop2b%
set t=%signop2c%
goto :eof
:CASILLA7B
set u=%signop2a%
set v=%signop2b%
set w=%signop2c%
goto :eof
:CASILLA8B
set x=%signop2a%
set y=%signop2b%
set z=%signop2c%
goto :eof
:CASILLA9B
set ñ=%signop2a%
set @=%signop2b%
set ç=%signop2c%
goto :eof
::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
:DIFICULTAD
cls
echo.
echo.ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º             elige un nivel de dificultad               º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º                                                        º
echo º    Facil                                     Dificil   º
echo º   -------     1  2  3  4  5  6  7  8  9      -------   º
echo º                                                        º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
CHOICE /C:123456789 /N >nul
If "%errorlevel%"=="1" set dificultad=9
If "%errorlevel%"=="2" set dificultad=8
If "%errorlevel%"=="3" set dificultad=7
If "%errorlevel%"=="4" set dificultad=6
If "%errorlevel%"=="5" set dificultad=5
If "%errorlevel%"=="6" set dificultad=4
If "%errorlevel%"=="7" set dificultad=3
If "%errorlevel%"=="8" set dificultad=2
If "%errorlevel%"=="9" set dificultad=1
goto :eof
:SIGNO
cls
echo.
echo.ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º              elige un signo %player01%                 º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º                                                        º
echo º     %$%                        %Ó%                     º
echo º     %ú%  1.%marname1%          %É%  2.%marname2%       º
echo º     %Á%                        %Í%                     º
echo º                                                        º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
CHOICE /C:12 /N >nul
If "%errorlevel%"=="1" (
set "signop1a=%$%"
set "signop1b=%ú%"
set "signop1c=%Á%"
set "signop2a=%Ó%"
set "signop2b=%É%"
set "signop2c=%Í%"
goto :eof)
If "%errorlevel%"=="2" (
set "signop1a=%Ó%"
set "signop1b=%É%"
set "signop1c=%Í%"
set "signop2a=%$%"
set "signop2b=%ú%"
set "signop2c=%Á%"
goto :eof)
::::::::::::::::::::::::::::::::::::::::
:TABLERO
set colocar=0
cls
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º                                                        º
echo º                                                        º
echo º  ÉÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍ»   ÉÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍ»  º
echo º  º         º         º         º   º %player01% º%a%º  º
echo º  º   %c%   º   %f%   º   %i%   º   ÌÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍ͹  º
echo º  º   %d%   º   %g%   º   %j%   º   º %player02% º%b%º  º
echo º  º   %e%   º   %h%   º   %k%   º   ÈÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍͼ  º
echo º  º         º         º         º                       º
echo º  ÌÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍ͹   ÉÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍ»  º
echo º  º         º         º         º   º Empates    º%#%º  º
echo º  º   %l%   º   %o%   º   %r%   º   ÈÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍͼ  º
echo º  º   %m%   º   %p%   º   %s%   º                       º
echo º  º   %n%   º   %q%   º   %t%   º                       º
echo º  º         º         º         º                       º
echo º  ÌÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍ͹                       º
echo º  º         º         º         º                       º
echo º  º   %u%   º   %x%   º   %ñ%   º                       º
echo º  º   %v%   º   %y%   º   %@%   º                       º
echo º  º   %w%   º   %z%   º   %ç%   º                       º
echo º  º         º         º         º                       º
echo º  ÈÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍͼ                       º
echo º                                                        º
echo º                             V. %ver%   By Shadowhunter º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
goto :eof
::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
:CABECERA
cls
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º                   Tic Tac Toe %ver%                    º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
goto :eof
:CABPLAYER1
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Turno de %player01% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF
:CABPLAYER2
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Turno de %player02% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF
:CABEMPATE
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Empate entre %player01% y %player02% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
echo Se iniciara una nueva partida. |MORE
pause>nul
set /a "#=%#%+1"
goto :EOF
:CABWIN
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Victoria de %player00% º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |MORE
echo Se iniciara una nueva partida. |MORE
pause>nul
goto CLEAR
::::::::::::::::::::::::::::::::::::::::
:ERROR
cls
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍ»
echo º   ERROR   º
echo ÈÍÍÍÍÍÍÍÍÍÍͼ |MORE
goto :EOF
:ERROR01
call :ERROR
echo Esa casilla ya esta ocupada. |MORE
if %singleplayer%==1 ( pause & goto INICIO)
pause & goto INICIO2
:ERROR02
call :ERROR
echo Tiene que seleccionar una casilla. |MORE
if %singleplayer%==1 ( pause & goto INICIO)
pause & goto INICIO2