Lets Make Our Own Snake Game in Notepad. Do You want to make it yourself? We play many games in our laptop/PC. Before playing action,adventure, etc game which we are playing at present, our main attraction was a game of a snake. Where you have to feed a snake and make him longer and to survive. Now its the time to get that experience with a great joy, because you are going to make it yourself. So, Jump Inside Now!
First of all Open Notepad or Notepad++ from in your PC. Now Write or copy the codes step by step with reading the details.
• "@ECHO OFF" is used to prevent any of the commands in the batch file from being displayed, just the information outputted by the command.
• "IF" is used to check for a certain condition if the condition exists. If that condition exists it performs that function.
• "%"(the percent) is followed by a numeric value, beginning with one, allows you to add matched variables to a batch file.
• "GOTO" jumps to a label or section of a batch file. The goto can make it easy to jump back to the start or end of a batch file if a condition is met, or an error occurs.
• This code will be used to set up some global variables used by both the game and the controller.
• The global varibales will make the game to run and make it playable.
• This codes will be used for setting up or saving data automatically in different files for different works.
• The codes will save those data in your system you can change it but this will not may work if someone else use the game from you.
• This codes will be used to Lock this game session and launch.
• This code will Loop back and try a new session if failure.
• This code will Cleanup and exit when finished.
• This codes will be used to launch the game and the controller.
• This code will load data from game files and restore all things what it was before you closed it last time.
• This will be used to upon exit, wait for the controller to close before returning.
• This codes will be used to set the tile of the game by its name.
• It will config the Play field size.
• The max playing field: (width-2)*(height-2) <= 1365
• This code will be used to resize the console window, I mean the program height+width, etc.
• It is the codes to define variables.
• This is a important part of the game.
• It is the settings menu for move keys, settings, level choosing and starting a game.
• This is the codes to define LF as a Line Feed (newline) character
• This is the codes to define CR as a Carriage Return character
• This is the codes to define BS as a BackSpace character
• This will define macros. This will run the game
• This will define a newline with line continuation
• This will run setErr
• This code sets the ERRORLEVEL to 1
• This will run clrErr
• This code sets the ERRORLEVEL to 0
• This will send Cmd command
• It sends a command to the controller
• To getKey [ValidKey] [ValidKey...]
• This will check for key press from the controller. Only accept a Valid Key.
• 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 key press.
• This codes draws the board
• To test X Y Value List Var
• It tests if value at coordinates X,Y is within contents of ValueListVar
• To set plot X Y ValueVar
• It places contents of ValueVar at coordinates X,Y
• This will be used start the game
• main loop (infinite loop)
• This is the main part of the game to play or setting up.
• 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.
• Prompt for a keypress.
• Wait until a ValidKey is pressed and return result in Key variable.
• Token delimiters, ), and poison characters must be quoted.
• This codes are for the main menu, controller options, settings, game menu, level select, etc.
• The main functions of the game are in here.
• 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:
• As written, this routine incorrectly reports ! as ), but that doesn't matter since we don't need that key. Both 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.
• Now after completing the codes Go to file menu in notepad and click on the "save as" option.
• Then Shoose where to save and choose a great name for the game, I will choose 'Hungry Snake' as its name. After the name you must write ".bat", this will make a batch file. Now click "Save".
• All done! Now go the the directory and run "[the game name].bat, Example: Hungry Snake.bat.
• Start a new game by pressing 'n' then shoose difficulty and play!
[youtube https://www.youtube.com/watch?v=XkZW_GBy7No&w=560&h=315]
Thats all. I think that many people directly downloaded the codes or downloaded the game for easiness. But I hope you haven't done this. You must follow us to get more new updates. And don't forget to like, share, comment. Thanks
First of all Open Notepad or Notepad++ from in your PC. Now Write or copy the codes step by step with reading the details.
[You can also download the codes from here, if you do that you may skip to step 23 or download the game directly]
You Can Also Watch Our Video To Learn It More Easily Which is Given Below!
Step 1:
@echo off
if "%~1" == "startGame" goto :game
if "%~1" == "startController" goto :controller
• "@ECHO OFF" is used to prevent any of the commands in the batch file from being displayed, just the information outputted by the command.
• "IF" is used to check for a certain condition if the condition exists. If that condition exists it performs that function.
• "%"(the percent) is followed by a numeric value, beginning with one, allows you to add matched variables to a batch file.
• "GOTO" jumps to a label or section of a batch file. The goto can make it easy to jump back to the start or end of a batch file if a condition is met, or an error occurs.
Step 2:
setlocal disableDelayedExpansion
• This code will be used to set up some global variables used by both the game and the controller.
• The global varibales will make the game to run and make it playable.
Step 3:
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"
• This codes will be used for setting up or saving data automatically in different files for different works.
• The codes will save those data in your system you can change it but this will not may work if someone else use the game from you.
Step 4:
call :launch %lockStream%>"%gameLock%" || goto :getSession
del "%tempFileBase%*"
exit /b
• This codes will be used to Lock this game session and launch.
• This code will Loop back and try a new session if failure.
• This code will Cleanup and exit when finished.
Step 5:
all :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%" ^
echo(
• This codes will be used to launch the game and the controller.
• This code will load data from game files and restore all things what it was before you closed it last time.
Step 6:
: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
• This will be used to upon exit, wait for the controller to close before returning.
Step 7:
:game
title %~nx0
cls
• This codes will be used to set the tile of the game by its name.
Step 8:
set "width=40" max=99
set "height=25" max=99
• It will config the Play field size.
• The max playing field: (width-2)*(height-2) <= 1365
Step 9:
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%
• This code will be used to resize the console window, I mean the program height+width, etc.
Step 10:
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 "head=@"
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"
• It is the codes to define variables.
• This is a important part of the game.
• It is the settings menu for move keys, settings, level choosing and starting a game.
Step 11:
set ^"LF=^
^" Above empty line is required - do not remove
• This is the codes to define LF as a Line Feed (newline) character
Step 11.1:
for /f %%A in ('copy /Z "%~dpf0" nul') do set "CR=%%A"
• This is the codes to define CR as a Carriage Return character
Step 11.2:
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=*~="
• This is the codes to define BS as a BackSpace character
Step 12:
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="
)
• This will define macros. This will run the game
Step 12.1:
set ^"\n=^^^%LF%%LF%^%LF%%LF%^^"
• This will define a newline with line continuation
Step 12.2:
set "setErr=(call)"
• This will run setErr
• This code sets the ERRORLEVEL to 1
Step 12.3:
set "clrErr=(call )"
• This will run clrErr
• This code sets the ERRORLEVEL to 0
Step 12.4:
set "sendCmd=>&%cmdStream% echo"
• This will send Cmd command
• It sends a command to the controller
Step 13:
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=
• To getKey [ValidKey] [ValidKey...]
• This will check for key press from the controller. Only accept a Valid Key.
• 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 key press.
Step 14:
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!
• This codes draws the board
Step 15:
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=
• To test X Y Value List Var
• It tests if value at coordinates X,Y is within contents of ValueListVar
Step 16:
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=
• To set plot X Y ValueVar
• It places contents of ValueVar at coordinates X,Y
Step 17:
setlocal enableDelayedExpansion
if not exist "%saveLoc%\" md "%saveLoc%"
set "replay= Aborting... "
set "replayAvailable="
call :loadHighScores
call :mainMenu
• This will be used start the game
Step 18:
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 <&%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
)
)
)
)
• main loop (infinite loop)
• This is the main part of the game to play or setting up.
Step 19:
:getString Prompt Var MaxLen
set /a "maxLen=%3"
set "%2="
%sendCmd% prompt
• 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.
Step 20:
:ask Prompt ValidKey [Validkey]...
%sendCmd% prompt
• Prompt for a keypress.
• Wait until a ValidKey is pressed and return result in Key variable.
• Token delimiters, ), and poison characters must be quoted.
Step 21:
: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') 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
• This codes are for the main menu, controller options, settings, game menu, level select, etc.
• The main functions of the game are in here.
Step 22:
:controller
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%
)
• 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 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.
Step 23:
• Now after completing the codes Go to file menu in notepad and click on the "save as" option.
• Then Shoose where to save and choose a great name for the game, I will choose 'Hungry Snake' as its name. After the name you must write ".bat", this will make a batch file. Now click "Save".
• All done! Now go the the directory and run "[the game name].bat, Example: Hungry Snake.bat.
• Start a new game by pressing 'n' then shoose difficulty and play!
Watch Our Video If You Still Can't Understand:
[youtube https://www.youtube.com/watch?v=XkZW_GBy7No&w=560&h=315]
Thats all. I think that many people directly downloaded the codes or downloaded the game for easiness. But I hope you haven't done this. You must follow us to get more new updates. And don't forget to like, share, comment. Thanks
How To Make A Simple Snake Game Using Notepad
4/
5
Oleh
Unknown