@ECHO OFF :BEGIN REM Skill level set sl= cls echo Tic Tac Toe (Q to quit) echo. echo. echo Pick your skill level (press a number) echo. echo (1) Children under 6 echo (2) Average Mental Case echo (3) Oversized Ego CHOICE /c:123q /n > nul if errorlevel 4 goto end if errorlevel 3 set sl=3 if errorlevel 3 goto layout if errorlevel 2 set sl=2 if errorlevel 2 goto layout set sl=1 :LAYOUT REM Player turn ("x" or "o") set pt= REM Game winner ("x" or "o") set gw= REM No moves set nm= REM Set to one blank space after equal sign (check with cursor end) set t1= set t2= set t3= set t4= set t5= set t6= set t7= set t8= set t9= :UPDATE cls echo (S to set skill level) Tic Tac Toe by Mac (Q to quit) echo. echo You are the X player. echo Press the number where you want to put an X. echo. echo Skill level %sl% 7 8 9 echo 4 5 6 echo 1 2 3 echo. echo : : echo %t1% : %t2% : %t3% echo ....:...:.... echo %t4% : %t5% : %t6% echo ....:...:.... echo %t7% : %t8% : %t9% echo : : if "%gw%"=="x" goto winx2 if "%gw%"=="o" goto wino2 if "%nm%"=="0" goto nomoves :PLAYER set pt=x REM Layout is for keypad. Change CHOICE to "/c:123456789sq /n > nul" REM for numbers to start at top left (also change user layout above). CHOICE /c:789456123sq /n > nul if errorlevel 11 goto end if errorlevel 10 goto begin if errorlevel 9 goto 9 if errorlevel 8 goto 8 if errorlevel 7 goto 7 if errorlevel 6 goto 6 if errorlevel 5 goto 5 if errorlevel 4 goto 4 if errorlevel 3 goto 3 if errorlevel 2 goto 2 goto 1 :1 REM Check if "x" or "o" already in square. if "%t1%"=="x" goto player if "%t1%"=="o" goto player set t1=x goto check :2 if "%t2%"=="x" goto player if "%t2%"=="o" goto player set t2=x goto check :3 if "%t3%"=="x" goto player if "%t3%"=="o" goto player set t3=x goto check :4 if "%t4%"=="x" goto player if "%t4%"=="o" goto player set t4=x goto check :5 if "%t5%"=="x" goto player if "%t5%"=="o" goto player set t5=x goto check :6 if "%t6%"=="x" goto player if "%t6%"=="o" goto player set t6=x goto check :7 if "%t7%"=="x" goto player if "%t7%"=="o" goto player set t7=x goto check :8 if "%t8%"=="x" goto player if "%t8%"=="o" goto player set t8=x goto check :9 if "%t9%"=="x" goto player if "%t9%"=="o" goto player set t9=x goto check :COMPUTER set pt=o if "%sl%"=="1" goto skill1 REM (win corner to corner) if "%t1%"=="o" if "%t3%"=="o" if not "%t2%"=="x" if not "%t2%"=="o" goto c2 if "%t1%"=="o" if "%t9%"=="o" if not "%t5%"=="x" if not "%t5%"=="o" goto c5 if "%t1%"=="o" if "%t7%"=="o" if not "%t4%"=="x" if not "%t4%"=="o" goto c4 if "%t3%"=="o" if "%t7%"=="o" if not "%t5%"=="x" if not "%t5%"=="o" goto c5 if "%t3%"=="o" if "%t9%"=="o" if not "%t6%"=="x" if not "%t6%"=="o" goto c6 if "%t9%"=="o" if "%t7%"=="o" if not "%t8%"=="x" if not "%t8%"=="o" goto c8 REM (win outside middle to outside middle) if "%t2%"=="o" if "%t8%"=="o" if not "%t5%"=="x" if not "%t5%"=="o" goto c5 if "%t4%"=="o" if "%t6%"=="o" if not "%t5%"=="x" if not "%t5%"=="o" goto c5 REM (win all others) if "%t1%"=="o" if "%t2%"=="o" if not "%t3%"=="x" if not "%t3%"=="o" goto c3 if "%t1%"=="o" if "%t5%"=="o" if not "%t9%"=="x" if not "%t9%"=="o" goto c9 if "%t1%"=="o" if "%t4%"=="o" if not "%t7%"=="x" if not "%t7%"=="o" goto c7 if "%t2%"=="o" if "%t5%"=="o" if not "%t8%"=="x" if not "%t8%"=="o" goto c8 if "%t3%"=="o" if "%t2%"=="o" if not "%t1%"=="x" if not "%t1%"=="o" goto c1 if "%t3%"=="o" if "%t5%"=="o" if not "%t7%"=="x" if not "%t7%"=="o" goto c7 if "%t3%"=="o" if "%t6%"=="o" if not "%t9%"=="x" if not "%t9%"=="o" goto c9 if "%t4%"=="o" if "%t5%"=="o" if not "%t6%"=="x" if not "%t6%"=="o" goto c6 if "%t6%"=="o" if "%t5%"=="o" if not "%t4%"=="x" if not "%t4%"=="o" goto c4 if "%t7%"=="o" if "%t4%"=="o" if not "%t1%"=="x" if not "%t1%"=="o" goto c1 if "%t7%"=="o" if "%t5%"=="o" if not "%t3%"=="x" if not "%t3%"=="o" goto c3 if "%t7%"=="o" if "%t8%"=="o" if not "%t9%"=="x" if not "%t9%"=="o" goto c9 if "%t8%"=="o" if "%t5%"=="o" if not "%t2%"=="x" if not "%t2%"=="o" goto c2 if "%t9%"=="o" if "%t8%"=="o" if not "%t7%"=="x" if not "%t7%"=="o" goto c7 if "%t9%"=="o" if "%t5%"=="o" if not "%t1%"=="x" if not "%t1%"=="o" goto c1 if "%t9%"=="o" if "%t6%"=="o" if not "%t3%"=="x" if not "%t3%"=="o" goto c3 REM (block general attempts) ----------------------------------------------- if "%t1%"=="x" if "%t2%"=="x" if not "%t3%"=="x" if not "%t3%"=="o" goto c3 if "%t1%"=="x" if "%t5%"=="x" if not "%t9%"=="x" if not "%t9%"=="o" goto c9 if "%t1%"=="x" if "%t4%"=="x" if not "%t7%"=="x" if not "%t7%"=="o" goto c7 if "%t2%"=="x" if "%t5%"=="x" if not "%t8%"=="x" if not "%t8%"=="o" goto c8 if "%t3%"=="x" if "%t2%"=="x" if not "%t1%"=="x" if not "%t1%"=="o" goto c1 if "%t3%"=="x" if "%t5%"=="x" if not "%t7%"=="x" if not "%t7%"=="o" goto c7 if "%t3%"=="x" if "%t6%"=="x" if not "%t9%"=="x" if not "%t9%"=="o" goto c9 if "%t4%"=="x" if "%t5%"=="x" if not "%t6%"=="x" if not "%t6%"=="o" goto c6 if "%t6%"=="x" if "%t5%"=="x" if not "%t4%"=="x" if not "%t4%"=="o" goto c4 if "%t7%"=="x" if "%t4%"=="x" if not "%t1%"=="x" if not "%t1%"=="o" goto c1 if "%t7%"=="x" if "%t5%"=="x" if not "%t3%"=="x" if not "%t3%"=="o" goto c3 if "%t7%"=="x" if "%t8%"=="x" if not "%t9%"=="x" if not "%t9%"=="o" goto c9 if "%t8%"=="x" if "%t5%"=="x" if not "%t2%"=="x" if not "%t2%"=="o" goto c2 if "%t9%"=="x" if "%t8%"=="x" if not "%t7%"=="x" if not "%t7%"=="o" goto c7 if "%t9%"=="x" if "%t5%"=="x" if not "%t1%"=="x" if not "%t1%"=="o" goto c1 if "%t9%"=="x" if "%t6%"=="x" if not "%t3%"=="x" if not "%t3%"=="o" goto c3 REM (block obvious corner to corner) if "%t1%"=="x" if "%t3%"=="x" if not "%t2%"=="x" if not "%t2%"=="o" goto c2 if "%t1%"=="x" if "%t9%"=="x" if not "%t5%"=="x" if not "%t5%"=="o" goto c5 if "%t1%"=="x" if "%t7%"=="x" if not "%t4%"=="x" if not "%t4%"=="o" goto c4 if "%t3%"=="x" if "%t7%"=="x" if not "%t5%"=="x" if not "%t5%"=="o" goto c5 if "%t3%"=="x" if "%t9%"=="x" if not "%t6%"=="x" if not "%t6%"=="o" goto c6 if "%t9%"=="x" if "%t7%"=="x" if not "%t8%"=="x" if not "%t8%"=="o" goto c8 if "%sl%"=="2" goto skill2 REM (block sneaky corner to corner 2-4, 2-6, etc.) if "%t2%"=="x" if "%t4%"=="x" if not "%t1%"=="x" if not "%t1%"=="o" goto c1 if "%t2%"=="x" if "%t6%"=="x" if not "%t3%"=="x" if not "%t3%"=="o" goto c3 if "%t8%"=="x" if "%t4%"=="x" if not "%t7%"=="x" if not "%t7%"=="o" goto c7 if "%t8%"=="x" if "%t6%"=="x" if not "%t9%"=="x" if not "%t9%"=="o" goto c9 REM (block offset corner trap 1-8, 1-6, etc.) if "%t1%"=="x" if "%t6%"=="x" if not "%t8%"=="x" if not "%t8%"=="o" goto c8 if "%t1%"=="x" if "%t8%"=="x" if not "%t6%"=="x" if not "%t6%"=="o" goto c6 if "%t3%"=="x" if "%t8%"=="x" if not "%t4%"=="x" if not "%t4%"=="o" goto c4 if "%t3%"=="x" if "%t4%"=="x" if not "%t8%"=="x" if not "%t8%"=="o" goto c8 if "%t9%"=="x" if "%t4%"=="x" if not "%t2%"=="x" if not "%t2%"=="o" goto c2 if "%t9%"=="x" if "%t2%"=="x" if not "%t4%"=="x" if not "%t4%"=="o" goto c4 if "%t7%"=="x" if "%t2%"=="x" if not "%t6%"=="x" if not "%t6%"=="o" goto c6 if "%t7%"=="x" if "%t6%"=="x" if not "%t2%"=="x" if not "%t2%"=="o" goto c2 :SKILL2 REM (block outside middle to outside middle) if "%t2%"=="x" if "%t8%"=="x" if not "%t5%"=="x" if not "%t5%"=="o" goto c5 if "%t4%"=="x" if "%t6%"=="x" if not "%t5%"=="x" if not "%t5%"=="o" goto c5 REM (block 3 corner trap) if "%t1%"=="x" if "%t9%"=="x" if not "%t2%"=="x" if not "%t2%"=="o" goto c2 if "%t3%"=="x" if "%t7%"=="x" if not "%t2%"=="x" if not "%t2%"=="o" goto c2 if "%t1%"=="x" if "%t9%"=="x" if not "%t4%"=="x" if not "%t4%"=="o" goto c4 if "%t3%"=="x" if "%t7%"=="x" if not "%t4%"=="x" if not "%t4%"=="o" goto c4 if "%t1%"=="x" if "%t9%"=="x" if not "%t6%"=="x" if not "%t6%"=="o" goto c6 if "%t3%"=="x" if "%t7%"=="x" if not "%t6%"=="x" if not "%t6%"=="o" goto c6 if "%t1%"=="x" if "%t9%"=="x" if not "%t8%"=="x" if not "%t8%"=="o" goto c8 if "%t3%"=="x" if "%t7%"=="x" if not "%t8%"=="x" if not "%t8%"=="o" goto c8 :SKILL1 REM (just take a turn) if not "%t5%"=="x" if not "%t5%"=="o" goto c5 if not "%t1%"=="x" if not "%t1%"=="o" goto c1 if not "%t3%"=="x" if not "%t3%"=="o" goto c3 if not "%t7%"=="x" if not "%t7%"=="o" goto c7 if not "%t9%"=="x" if not "%t9%"=="o" goto c9 if not "%t2%"=="x" if not "%t2%"=="o" goto c2 if not "%t4%"=="x" if not "%t4%"=="o" goto c4 if not "%t6%"=="x" if not "%t6%"=="o" goto c6 if not "%t8%"=="x" if not "%t8%"=="o" goto c8 set nm=0 goto update :C1 set t1=o goto check :C2 set t2=o goto check :C3 set t3=o goto check :C4 set t4=o goto check :C5 set t5=o goto check :C6 set t6=o goto check :C7 set t7=o goto check :C8 set t8=o goto check :C9 set t9=o goto check :CHECK if "%t1%"=="x" if "%t2%"=="x" if "%t3%"=="x" goto winx if "%t4%"=="x" if "%t5%"=="x" if "%t6%"=="x" goto winx if "%t7%"=="x" if "%t8%"=="x" if "%t9%"=="x" goto winx if "%t1%"=="x" if "%t4%"=="x" if "%t7%"=="x" goto winx if "%t2%"=="x" if "%t5%"=="x" if "%t8%"=="x" goto winx if "%t3%"=="x" if "%t6%"=="x" if "%t9%"=="x" goto winx if "%t1%"=="x" if "%t5%"=="x" if "%t9%"=="x" goto winx if "%t3%"=="x" if "%t5%"=="x" if "%t7%"=="x" goto winx if "%t1%"=="o" if "%t2%"=="o" if "%t3%"=="o" goto wino if "%t4%"=="o" if "%t5%"=="o" if "%t6%"=="o" goto wino if "%t7%"=="o" if "%t8%"=="o" if "%t9%"=="o" goto wino if "%t1%"=="o" if "%t4%"=="o" if "%t7%"=="o" goto wino if "%t2%"=="o" if "%t5%"=="o" if "%t8%"=="o" goto wino if "%t3%"=="o" if "%t6%"=="o" if "%t9%"=="o" goto wino if "%t1%"=="o" if "%t5%"=="o" if "%t9%"=="o" goto wino if "%t3%"=="o" if "%t5%"=="o" if "%t7%"=="o" goto wino if "%pt%"=="x" goto computer if "%pt%"=="o" goto update :WINX set gw=x goto update :WINX2 echo You win! echo Play again (Y,N)? CHOICE /c:ynsq /n > nul if errorlevel 4 goto end if errorlevel 3 goto begin if errorlevel 2 goto end goto layout :WINO set gw=o goto update :WINO2 echo Sorry, You lose. echo Play again (Y,N)? CHOICE /c:ynsq /n > nul if errorlevel 4 goto end if errorlevel 3 goto begin if errorlevel 2 goto end goto layout :NOMOVES echo There are no more moves left! echo Play again (Y,N)? CHOICE /c:ynsq /n > nul if errorlevel 4 goto end if errorlevel 3 goto begin if errorlevel 2 goto end goto layout :END cls echo Tic Tac Toe by Mac echo. REM Clear all variables (no spaces after equal sign). set gw= set nm= set sl= set pt= set t1= set t2= set t3= set t4= set t5= set t6= set t7= set t8= set t9=