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
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