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.
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 [Seleccionar]
@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