Here's a pretty cool batch snake game, modeled off of Slither.io. This makes quite a bit of temp files, and sometimes it doesnt delete them all, so I'd recommend clearing the TEMP folder after using this awhile.
@echo off color 0a if "%~1" == "startGame" goto :game if "%~1" == "startController" goto :controller ::--------------------------------------------------------------------- :: setup some global variables used by both the game and the controller setlocal disableDelayedExpansion :getSession if defined temp (set "tempFileBase=%temp%\") else if defined tmp set "tempFileBase=%tmp%\" set "tempFileBase=%tempFileBase%Snake%time::=_%" set "keyFile=%tempFileBase%_key.txt" set "cmdFile=%tempFileBase%_cmd.txt" set "gameLock=%tempFileBase%_gameLock.txt" set "gameLog=%tempFileBase%_gameLog.txt" set "signal=%tempFileBase%_signal.txt" set "saveLoc=%userprofile%\Snake" set "userPref=%saveLoc%\SnakeUserPref.txt" set "hiFile=%saveLoc%\Snake!growth!Hi" set "keyStream=9" set "cmdStream=8" set "lockStream=7" ::------------------------------------------ :: Lock this game session and launch. :: Loop back and try a new session if failure. :: Cleanup and exit when finished call :launch %lockStream%>"%gameLock%" || goto :getSession del "%tempFileBase%*" exit /b ::------------------------------------------ :launch the game and the controller call :fixLogs copy nul "%keyFile%" >nul copy nul "%cmdFile%" >nul start "" /b cmd /c ^""%~f0" startController %keyStream%^>^>"%keyFile%" %cmdStream%^<"%cmdFile%" 2^>nul ^>nul^" cmd /c ^""%~f0" startGame %keyStream%^<"%keyFile%" %cmdStream%^>^>"%cmdFile%" ^<nul^" echo( ::-------------------------------------------------------------- :: Upon exit, wait for the controller to close before returning :close 2>nul (>>"%keyFile%" call )||goto :close if not exist "%~dp0CursorPos.exe" ( echo Game play can be improved by installing echo Aacini's CursorPos.exe, available at echo http://goo.gl/hr6Kkn echo( echo %cmdcmdline%|find /i "%~f0">nul&&pause ) exit /b 0 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :game title %~nx0 cls ::--------------------------------------- :: Playfield size :: max playing field: (width-2)*(height-2) <= 1365 set "width=40" max=99 set "height=25" max=99 ::---------------------------- :: resize the console window set /a cols=width+1, lines=height+10, area=(width-2)*(height-2) if %area% gtr 1365 ( echo ERROR: Playfield area too large %sendCmd% quit exit ) if %lines% lss 14 set lines=14 if %cols% lss 46 set cols=46 mode con: cols=%cols% lines=%lines% ::---------------------------- :: define variables set "configOptions=diffCode difficulty growth moveKeys up down left right" set "configOptionCnt=9" set "moveKeys=4" set "up=W" set "down=S" set "left=A" set "right=D" set "pause=P" set "space= " set "bound=#" set "food=+" set "[email protected]" set "body=O" set "death=X" set "growth=1" if exist "%userPref%" for /f "usebackq delims=" %%V in ("%userPref%") do set "%%V" set "spinner1=-" set "spinner2=\" set "spinner3=|" set "spinner4=/" set "spinner= spinner1 spinner2 spinner3 spinner4 " set "delay1=20" set "delay2=15" set "delay3=10" set "delay4=7" set "delay5=5" set "delay6=3" set "desc1=Sluggard" set "desc2=Crawl" set "desc3=Slow" set "desc4=Normal" set "desc5=Fast" set "desc6=Insane" set "spinnerDelay=3" set /a "width-=1, height-=1" :: define LF as a Line Feed (newline) character set ^"LF=^ ^" Above empty line is required - do not remove :: define CR as a Carriage Return character for /f %%A in ('copy /Z "%~dpf0" nul') do set "CR=%%A" :: define BS as a BackSpace character for /f %%A in ('"prompt $H&for %%B in (1) do rem"') do set "BS=%%A" set "upper=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" set "invalid=*~=" ::--------------------------- :: define macros if exist "%~dp0CursorPos.exe" ( set "cls=CursorPos 0 0" set "ClearLine=echo( &CursorPos 0 -1" set "ClearPrev=CursorPos 0 -0&echo( " ) else ( set "cls=cls" set "ClearLine=" set "ClearPrev=" ) :: define a newline with line continuation set ^"\n=^^^%LF%%LF%^%LF%%LF%^^" :: setErr ::: Sets the ERRORLEVEL to 1 set "setErr=(call)" :: clrErr ::: Sets the ERRORLEVEL to 0 set "clrErr=(call )" :: sendCmd command ::: sends a command to the controller set "sendCmd=>&%cmdStream% echo" :: getKey [ValidKey] [ValidKey...] ::: Check for keypress from the controller. Only accept a ValidKey. ::: Token delimiters and poison characters must be quoted. ::: Accept any key if no ValidKey specified. ::: Return result in Key variable. Key is undefined if no valid keypress. set getKey=%\n% for %%# in (1 2) do if %%#==2 (%\n% set key=%\n% set inKey=%\n% set keyTest=%\n% ^<^&%keyStream% set /p "inKey="%\n% if defined inKey (%\n% set inKey=!inKey:~0,-1!%\n% for %%C in (!args!) do set /a keyTest=1^&if /i !inKey! equ %%~C set key=!inKey!%\n% )%\n% if not defined keyTest set key=!inKey!%\n% ) else set args= :: draw ::: draws the board set draw=%\n% set screen=%\n% for /l %%Y in (0,1,%height%) do set screen=!screen!!line%%Y!!LF!%\n% set screen=!screen!Speed = !Difficulty! !replay!!LF!Growth Rate = !growth! HighScore = !hi!!LF!Score = !score! Time = !m!:!s!%\n% if defined replay if not defined replayFinished (%\n% set screen=!screen!!LF!!LF!Press a key to abort the replay%\n% )%\n% %cls%^&echo(!screen! :: test X Y ValueListVar ::: tests if value at coordinates X,Y is within contents of ValueListVar set test=%\n% for %%# in (1 2) do if %%#==2 (for /f "tokens=1-3" %%1 in ("!args!") do (%\n% for %%A in ("!line%%2:~%%1,1!") do if "!%%3:%%~A=!" neq "!%%3!" %clrErr% else %setErr%%\n% )) else set args= :: plot X Y ValueVar ::: places contents of ValueVar at coordinates X,Y set plot=%\n% for %%# in (1 2) do if %%#==2 (for /f "tokens=1-3" %%1 in ("!args!") do (%\n% set "part2=!line%%2:~%%1!"%\n% set "line%%2=!line%%2:~0,%%1!!%%3!!part2:~1!"%\n% )) else set args= ::-------------------------------------- :: start the game setlocal enableDelayedExpansion if not exist "%saveLoc%\" md "%saveLoc%" set "replay= Aborting... " set "replayAvailable=" call :loadHighScores call :mainMenu ::-------------------------------------- :: main loop (infinite loop) for /l %%. in () do ( %=== check for and process abort signal if in replay mode ===% if defined replay if exist "%signal%" ( del "%signal%" set "replayFinished=1" %draw% echo( %ClearLine% <nul set /p "=Aborting... " findstr "^" >nul <&%keyStream% for %%A in (!configOptions!) do set "%%A=!%%ASave!" call :mainMenu ) %=== compute time since last move ===% for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t2=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100, tDiff=t2-t1" if !tDiff! lss 0 set /a tDiff+=24*60*60*100 if !tDiff! geq !delay! ( %=== delay has expired, so time for movement ===% set /a t1=t2 %=== compute game time ===% if not defined gameStart set "gameStart=!t2!" set /a "gameTime=(t2-gameStart)" if !gameTime! lss 0 set /a "gameTime+=24*60*60*100" set /a "gameTime=(gameTime-pauseTime)/100, m=gameTime/60, s=gameTime%%60" if !m! lss 10 set "m=0!m!" if !s! lss 10 set "s=0!s!" %=== get keypress ===% %getKey% !keys! if /i !key! equ !pause! ( %=== pause game ===% echo( call :ask "PAUSED - Press a key to continue..." %ClearPrev% %sendCmd% go for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "t2=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100, tDiff=t2-t1" if !tDiff! lss 0 set /a tDiff+=24*60*60*100 set /a pauseTime+=tDiff ) else ( %=== establish direction ===% if not defined replay (echo(!key!.) >>"!gameLog!" for %%K in (!key!) do if !moveKeys! equ 2 ( set /a "xDiff=xTurn%%K*!yDiff!, yDiff=yTurn%%K*!xDiff!" ) else if "!%%KAxis!" neq "!axis!" ( set /a "xDiff=xDiff%%K, yDiff=yDiff%%K" set "axis=!%%KAxis!" ) %=== erase the tail ===% set "TX=!snakeX:~-2!" set "TY=!snakeY:~-2!" set "snakeX=!snakeX:~0,-2!" set "snakeY=!snakeY:~0,-2!" %plot% !TX! !TY! space %=== compute new head location and attempt to move ===% set /a "X=PX+xDiff, Y=PY+yDiff" set "X= !X!" set "Y= !Y!" set "X=!X:~-2!" set "Y=!Y:~-2!" (%test% !X! !Y! playerSpace) && ( %=== move successful ===% %=== remove the new head location from the empty list ===% for %%X in ("!X!") do for %%Y in ("!Y!") do set "empty=!empty:#%%~X %%~Y=!" %=== eat any food that may be present ===% (%test% !X! !Y! food) && ( %=== initiate growth ===% set /a grow+=growth %=== locate and draw new food ===% if defined replay ( <&%keyStream% set /p "F=" ) else ( set /a "F=(!random!%%(emptyCnt-1))*6+1" (echo !F!) >>"!gameLog!" ) for %%F in (!F!) do (%plot% !empty:~%%F,5! food) ) if !grow! gtr 0 ( %=== restore the tail ===% %plot% !TX! !TY! body set "snakeX=!snakeX!!TX!" set "snakeY=!snakeY!!TY!" set /a emptyCnt-=1 %=== manage score ===% set /a "score+=1, grow-=1" if not defined replay if !score! gtr !hi! set /a "hi+=1, newHi=1" ) else ( %=== add the former tail position to the empty list ===% set "empty=!empty!#!TX! !TY!" ) %=== draw the new head ===% if defined snakeX (%plot% !PX! !PY! body) %plot% !X! !Y! head %=== Add the new head position to the snake strings ===% set "snakeX=!X!!snakeX!" set "snakeY=!Y!!snakeY!" set "PX=!X!" set "PY=!Y!" %draw% ) || ( %=== failed move - game over ===% set "replayFinished=1" %plot% !TX! !TY! body call :spinner !PX! !PY! death %draw% if defined newHi ( echo( echo New High Score - Congratulations^^! set "hi!diffCode!=!score!" copy "!gameLog!" "%hiFile%!diffCode!.txt" >nul >>"%hiFile%!diffCode!.txt" echo ::!score! ) echo( %ClearLine% call :ask "Press a key to continue..." for %%A in (!configOptions!) do set "%%A=!%%ASave!" call :mainMenu ) ) ) ) ::------------------------------------- :getString Prompt Var MaxLen :: Prompt for a string with max lengh of MaxLen. :: Valid keys are alpha-numeric, space, underscore, and dash :: String is terminated by Enter :: Backspace works to delete previous character :: Result is returned in Var set /a "maxLen=%3" set "%2=" %sendCmd% prompt <nul set /p "=%~1 " call :purge :getStringLoop (%getKey% !upper! 0 1 2 3 4 5 6 7 8 9 " " _ - {Enter} !BS!) if defined key ( if !key! equ {Enter} ( echo( exit /b ) if !key! neq !BS! if !maxLen! gtr 0 ( set /a maxLen-=1 <nul set /p "=.!BS!!key!" set "%2=!%2!!key! ) if !key! equ !BS! if defined %2 ( set /a maxLen+=1 <nul set /p "=!BS! !BS!" set "%2=!%2:~0,-1!" ) ) if defined inKey %sendCmd% one goto :getStringLoop ::------------------------------------- :ask Prompt ValidKey [Validkey]... :: Prompt for a keypress. :: Wait until a ValidKey is pressed and return result in Key variable. :: Token delimiters, ), and poison characters must be quoted. %sendCmd% prompt <nul set /p "=%~1 " (set validKeys=%*) (set validKeys=!validKeys:%1=!) call :purge :getResponse (%getKey% !validKeys!) if not defined key ( if defined inKey %sendCmd% one goto :getResponse ) exit /b :purge set "inKey=" for /l %%N in (1 1 1000) do ( set /p "inKey=" if "!inKey!" equ "{purged}." exit /b )<&%keyStream% goto :purge ::------------------------------------- :spinner X Y ValueVar set /a d1=-1000000 for /l %%N in (1 1 5) do for %%C in (%spinner%) do ( call :spinnerDelay %plot% %1 %2 %%C %draw% ) call :spinnerDelay (%plot% %1 %2 %3) exit /b ::------------------------------------- :delay centiSeconds setlocal for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "spinnerDelay=%1, d1=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100" :: fall through to :spinnerDelay ::------------------------------------- :spinnerDelay for /f "tokens=1-4 delims=:.," %%a in ("!time: =0!") do set /a "d2=(((1%%a*60)+1%%b)*60+1%%c)*100+1%%d-36610100, dDiff=d2-d1" if %dDiff% lss 0 set /a dDiff+=24*60*60*100 if %dDiff% lss %spinnerDelay% goto :spinnerDelay set /a d1=d2 exit /b ::------------------------------------- :mainMenu cls set "loadAvailable=" echo Growth rate = !growth! echo( echo Main Menu: echo( echo N - New game if defined replayAvailable echo R - Replay previous game if defined saveAvailable echo S - Save a game if exist *.snake.txt echo L - Load and watch a saved game&set "loadAvailable=L" echo C - Control options echo G - Graphic options echo Q - Quit echo( set "hiAvailable=" for /l %%N in (1 1 6) do if defined hi%%N ( if not defined hiAvailable ( echo Replay High Score: echo( ) set "desc=!desc%%N!........" set "hiAvailable=!hiAvailable! %%N" echo %%N - !desc:~0,8! !hi%%N! ) if defined hiAvailable echo( set "keys=N C G Q !hiAvailable! !replayAvailable! !saveAvailable! !loadAvailable!" call :ask ">" !keys! if /i !key! equ Q ( %sendCmd% quit cls exit ) if /i !key! equ N ( set "replay=" set "replayAvailable=R" set "saveAvailable=S" goto :initialize ) if /i !key! equ S ( if defined replayAvailable ( call :ask "HighScore # or P for Previous:" !hiAvailable! P ) else ( call :ask "HighScore #:" !hiAvailable! ) echo !key! if /i !key! equ P (set "src=!gameLog!") else set "src=%hiFile%!key!.txt" call :getString "Save file name:" file 20 copy "!src!" "!file!.snake.txt" call :ask "Press a key to continue..." ) if /i !key! equ L ( call :getString "Load file name:" file 20 if exist "!file!.snake.txt" ( set "replay=!file!.snake.txt" goto :initialize ) echo Error: File "!file!.snake.txt" not found call :ask "Press a key to continue..." ) if /i !key! equ R ( set "replay=!gameLog!" goto :initialize ) if !key! geq 1 if !key! leq 6 ( set "replay=%hiFile%!key!.txt" goto :initialize ) if /i !key! equ C call :controlOptions if /i !key! equ G call :graphicOptions goto :mainMenu ::------------------------------------- :controlOptions cls set "keys={Enter} T L R P" if !moveKeys! equ 4 set "keys=!keys! U D" echo Control Options: echo( echo T - Type... = !moveKeys! keys echo( echo L - Left... = !left! echo R - Right.. = !right! if !moveKeys! equ 4 echo U - Up..... = !up! if !moveKeys! equ 4 echo D - Down... = !down! echo( echo P - Pause.. = !pause! echo( echo {Enter} - Return to Main Menu echo( call :ask ">" !keys! if !key! equ {Enter} goto :saveUserPrefs if /i !key! equ T ( if !moveKeys! equ 2 (set "moveKeys=4") else set "moveKeys=2" goto :controlOptions ) set "option= LLeft RRight UUp DDown PPause" for /f %%O in ("!option:* %key%=!") do ( call :ask "Press a key for %%O:" for %%K in (0 1 2) do if "!key!" equ "!invalid:~%%K,1!" goto :controlOptions for %%C in (!upper!) do set "key=!key:%%C=%%C!" set "%%O=!key!" ) goto :controlOptions ::------------------------------------- :graphicOptions cls echo Graphic Options: echo( echo B - Border...... = !bound! echo E - Empty space. = !space! echo H - snake Head.. = !head! echo S - Snake body.. = !body! echo F - Food........ = !food! echo D - Death....... = !death! echo( echo G - Growth rate. = !growth! echo( echo {Enter} - Rturn to Main Menu echo( call :ask ">" B E H S F D G {Enter} if !key! equ {Enter} goto :saveUserPrefs if /i !key! equ G ( call :ask "Press a digit for growth rate (0 = 10)" 0 1 2 3 4 5 6 7 8 9 if !key! equ 0 set "key=10" set "growth=!key!" call :loadHighScores ) else ( set "option=-BBorder:bound:-EEmpty Space:space:-HSnake Head:head:-SSnake Body:body:-FFood:food:-DDeath:death:" for /f "tokens=1,2 delims=:" %%A in ("!option:*-%key%=!") do ( call :ask "Press a key for %%A" for %%K in (0 1 2) do if "!key!" equ "!invalid:~%%K,1!" goto :graphicOptions set "%%B=!key!" ) ) goto :graphicOptions ::------------------------------------ :saveUserPrefs (for %%V in (moveKeys up down left right space bound food head body death pause growth) do echo %%V=!%%V!) >"%userPref%" exit /b ::------------------------------------- :initialize cls if defined replay ( echo Replay Speed Options: ) else ( echo Speed Options: ) echo delay echo # Description (seconds) echo --- ----------- --------- for /l %%N in (1 1 6) do ( set "delay=0!delay%%N!" set "desc=!desc%%N! " echo %%N !desc:~0,11! 0.!delay:~-2! ) echo( call :ask "Pick a speed (1-6):" 1 2 3 4 5 6 set "difficulty=!desc%key%!" set "delay=!delay%key%!" set "diffCode=%key%" echo %key% - %difficulty% echo( <nul set /p "=Initializing." set "axis=X" set "xDiff=+1" set "yDiff=+0" set "empty=" set /a "PX=1, PY=height/2, FX=width/2+1, FY=PY, score=0, emptyCnt=0, t1=-1000000" set "gameStart=" set "m=00" set "s=00" set "snakeX= %PX%" set "snakeY= %PY%" set "snakeX=%snakeX:~-2%" set "snakeY=%snakeY:~-2%" for /l %%Y in (0 1 %height%) do ( <nul set /p "=." set "line%%Y=" for /l %%X in (0,1,%width%) do ( set "cell=" if %%Y equ 0 set "cell=%bound%" if %%Y equ %height% set "cell=%bound%" if %%X equ 0 set "cell=%bound%" if %%X equ %width% set "cell=%bound%" if %%X equ %PX% if %%Y equ %PY% set "cell=%head%" if not defined cell ( set "cell=%space%" set "eX= %%X" set "eY= %%Y" set "empty=!empty!#!eX:~-2! !eY:~-2!" set /a emptyCnt+=1 ) if %%X equ %FX% if %%Y equ %FY% set "cell=%food%" set "line%%Y=!line%%Y!!cell!" ) ) for %%A in (!configOptions!) do set "%%ASave=!%%A!" set "replayFinished=" if defined replay ( %sendCmd% replay %sendCmd% !replay! call :waitForSignal set "replay=(REPLAY at !difficulty!)" set "read=1" <&%keyStream% ( for /l %%N in (1 1 !configOptionCnt!) do if defined read ( set /p "ln=" if "!ln!" equ "END" (set read=) else set "!ln!" ) ) set "keys=" set "hi=0" for /f "delims=:" %%A in ('findstr "^::" "%hiFile%!diffCode!.txt" 2^>nul') do set "hi=%%A" (%draw%) call :delay 100 ) else ( if defined hi%diffCode% (set "hi=!hi%diffCode%!") else set "hi=0" (%draw%) >"!gameLog!" ( for %%A in (!configOptions!) do (echo %%A=!%%A!) (echo END) ) echo( if !moveKeys! equ 4 ( echo Controls: !up!=up !down!=down !left!=left !right!=right !pause!=pause ) else ( echo Controls: !left!=left !right!=right !pause!=pause ) echo Avoid running into yourself (!body!!body!!head!^) or wall (!bound!^) echo Eat food (!food!^) to grow. echo( call :ask "Press a key to start..." %sendCmd% go ) set "pauseTime=0" set "xDiff!up!=+0" set "xDiff!down!=+0" set "xDiff!left!=-1" set "xDiff!right!=+1" set "yDiff!up!=-1" set "yDiff!down!=+1" set "yDiff!left!=+0" set "yDiff!right!=+0" set "!up!Axis=Y" set "!down!Axis=Y" set "!left!Axis=X" set "!right!Axis=X" set "xTurn!left!=1" set "xTurn!right!=-1" set "yTurn!left!=-1" set "yTurn!right!=1" set "playerSpace=!space!!food!" set ^"keys="!left!" "!right!" "!pause!"^" set "newHi=" set "grow=0" if !moveKeys! equ 4 set ^"keys=!keys! "!up!" "!down!"^" if exist "%~dp0CursorPos.exe" if not defined replay ( cursorpos 0 -4 for /l %%N in (1 1 5) do (echo( ) ) exit /b ::------------------------------------- :waitForSignal if not exist "%signal%" goto :waitForSignal del "%signal%" exit /b ::------------------------------------- :loadHighScores set "saveAvailable=" for /l %%N in (1 1 6) do ( set "hi%%N=" for /f "delims=:" %%A in ('findstr "^::" "%hiFile%%%N.txt" 2^>nul') do ( set "hi%%N=%%A" set "saveAvailable=S" ) ) exit /b ::------------------------------------- :fixLogs setlocal enableDelayedExpansion for %%F in (*.snake) do ( ren "%%F" "%%F.txt" call :fixLog "%%F.txt" ) pushd "%SaveLoc%" for /f "delims=" %%F in ('dir /b SnakeHi*.txt 2^>nul') do ( set "file=%%~nF" set "file=Snake1Hi!file:~-1!.txt" ren "%%F" "!file!" call :fixLog "!file!" ) popd exit /b :fixLog filePath >"%~1.new" ( <"%~1" ( for %%A in (diffCode difficulty moveKeys up down left right) do ( set /p "val=" (echo %%A=!val!) ) ) (echo growth=1) (echo END) more +7 "%~1" ) move /y "%~1.new" "%~1" >nul exit /b :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :controller :: Detects keypresses and sends the information to the game via a key file. :: The controller has various modes of input that are activated by commands sent :: from the game via a cmd file. :: :: Modes: :: :: hold - No input, wait for command :: :: go - Continuously get/send key presses :: :: prompt - Send {purged} marker to allow game to purge input buffer, then :: get/send a single key press and hold :: :: one - Get/send a single key press and hold :: :: replay - Copy a game log to the key file. The next line in cmd file :: specifies name of log file to copy. During replay, the controller :: will send an abort signal to the game if a key is pressed. :: :: quit - Immediately exit the controller process :: :: As written, this routine incorrectly reports ! as ), but that doesn't matter :: since we don't need that key. Both <CR> and Enter key are reported as {Enter}. :: An extra character is appended to the output to preserve any control chars :: when read by SET /P. setlocal enableDelayedExpansion for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a" set "cmd=hold" set "inCmd=" set "key=" for /l %%. in () do ( if "!cmd!" neq "hold" ( for /f "delims=" %%A in ('xcopy /w "%~f0" "%~f0" 2^>nul') do ( if not defined key set "key=%%A" ) set "key=!key:~-1!" if !key! equ !CR! set "key={Enter}" ) <&%cmdStream% set /p "inCmd=" if defined inCmd ( if !inCmd! equ quit exit set "cmd=!inCmd!" if !inCmd! equ replay ( <&%cmdStream% set /p "file=" type "!file!" >&%keyStream% copy nul "%signal%" ) set "inCmd=" ) if defined key ( if "!cmd!" equ "prompt" (echo {purged}.) if "!cmd!" equ "replay" ( copy nul "%signal%" >nul set "cmd=go" ) else (echo(!key!.) if "!cmd!" neq "go" set "cmd=hold" set "key=" )>&%keyStream% )
0 Comments On This Entry
Trackbacks for this entry [ Trackback URL ]
← April 2021 →
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
My Blog Links
Recent Entries
-
-
-
-
-
Batch Snake game (modeled off Slither.io)
on Dec 10 2016 12:43 PM
Search My Blog
0 user(s) viewing
0 Guests
0 member(s)
0 anonymous member(s)
0 member(s)
0 anonymous member(s)