Advertisement
Oysi

Snake by Oysi [Display]

Jun 23rd, 2012
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 3.09 KB | None | 0 0
  1. @echo off
  2.  
  3. :: You need the other file to play the game
  4. :: http://pastebin.com/fsA7CYZ4
  5.  
  6. SetLocal EnableDelayedExpansion
  7. mode con cols=34 lines=18
  8.  
  9. title Snake Display by Oysi
  10. color 0a
  11.  
  12. :: File directory
  13. cd "%userprofile%"
  14. if not exist "iccs" md "iccs"
  15. cd "%userprofile%\iccs"
  16. if not exist "Snake" md "Snake"
  17. cd "%userprofile%\iccs\Snake"
  18.  
  19. :setup
  20.     :: Load settings
  21.     set pings=10
  22.     set slength=4
  23.     set foodEaten=0
  24.     :: Clear out the map
  25.     for /L %%X in (1,1,32) do (
  26.         for /L %%Y in (1,1,16) do (
  27.             set g%%X_%%Y=
  28.         )
  29.     )
  30.     :: Create borders
  31.     for /L %%X in (1,1,32) do (set g%%X_1=Û& set g%%X_16=Û)
  32.     for /L %%Y in (1,1,16) do (set g1_%%Y& set g32_%%Y)
  33.     :: Create snake
  34.     for /L %%S in (1,1,%slength%) do (
  35.         set /a y=2+%%S
  36.         set s%%Sx=3
  37.         set s%%Sy=!y!
  38.         set g!s%%Sx!_!s%%Sy!=O
  39.     )
  40.     :: Create food
  41.     set g10_10=X
  42. goto menu
  43.  
  44. :menu
  45.     call "move.bat"
  46.    
  47.     if not "%move%"=="" (
  48.         :: Take away snake's tail from map
  49.         set g!s%slength%x!_!s%slength%y!=
  50.        
  51.         :: Move snake a notch
  52.         for /L %%S in (%slength%,-1,2) do (
  53.             set /a n=%%S - 1
  54.             for /L %%N in (!n!,!n!,!n!) do (
  55.                 set s%%Sx=!s%%Nx!
  56.                 set s%%Sy=!s%%Ny!
  57.             )
  58.         )
  59.     )
  60.    
  61.     :: Handle input
  62.     if "%move%"=="a" (set /a s1x=%s1x% - 1)
  63.     if "%move%"=="w" (set /a s1y=%s1y% - 1)
  64.     if "%move%"=="s" (set /a s1y=%s1y% + 1)
  65.     if "%move%"=="d" (set /a s1x=%s1x% + 1)
  66.    
  67.     if not "%move%"=="" (
  68.         :: Collision detection
  69.         if "!g%s1x%_%s1y%!"=="Û" (goto fail)
  70.         if "!g%s1x%_%s1y%!"=="O" (goto fail)
  71.        
  72.         :: Food eating
  73.         if "!g%s1x%_%s1y%!"=="X" (
  74.             set /a foodEaten=%foodEaten% + 1
  75.             set /a slength=%slength% + 1
  76.             set /a pingDrop=!foodEaten! / 3
  77.             set /a pings=10 - !pingDrop!
  78.             if !pings! LSS 3 (set pings=3)
  79.            
  80.             :: Spawn more food
  81.             :foodLoop
  82.                 set /a x=%Random%*29/32767 + 2
  83.                 set /a y=%Random%*13/32767 + 2
  84.                 for /L %%X in (!x!,!x!,!x!) do (
  85.                     for /L %%Y in (!y!,!y!,!y!) do (
  86.                         if not "!g%%X_%%Y!"==" " (goto foodLoop)
  87.                     )
  88.                 )
  89.                 set g!x!_!y!=X
  90.         )
  91.        
  92.         :: Add snake's head to map
  93.         set g%s1x%_%s1y%=O
  94.     )
  95.    
  96.     cls
  97.     echo.
  98.     :: Render image
  99.     for /L %%Y in (1,1,16) do (
  100.         set line=
  101.         for /L %%X in (1,1,32) do (
  102.             set line=!line!!g%%X_%%Y!
  103.         )
  104.         echo !line!
  105.     )
  106.     :: Ping to wait for screen to refresh
  107.     for /L %%P in (1,1,%pings%) do (ping localhost -n 1 >nul)
  108. goto menu
  109.  
  110. :fail
  111.     > "move.bat" echo set move=
  112.     set space=
  113.     if "%foodEaten:~1,1%"=="" (set space=%space% )
  114.     if "%foodEaten:~2,1%"=="" (set space=%space% )
  115.     cls
  116.     echo.
  117.     echo  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
  118.     echo  Û                              Û
  119.     echo  Û      S N A K E by Oysi       Û
  120.     echo  Û                              Û
  121.     echo  Û You failed at %foodEaten% food eaten %space%Û
  122.     echo  Û                              Û
  123.     echo  Û Write ^<start^> and press      Û
  124.     echo  Û ^<Enter^> to play again        Û
  125.     echo  Û                              Û
  126.     echo  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
  127.     :failLoop
  128.         ping localhost -n 1 >nul
  129.         call "move.bat"
  130.         if not "%move%"=="start" (goto failLoop)
  131.         > "move.bat" echo set move=
  132. goto setup
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement