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.
Código:
@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
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