Advertisement
SmartGenius

SNAKX (aka Snake) Batch Game

May 18th, 2012
976
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 3.29 KB | None | 0 0
  1. @echo off
  2. title SNAKX 2.0
  3. rem mode con cols=30 lines=30
  4. :::::::::::: SNAKX 2.0 ::::::::::::
  5. ::       Codeado por: Nax        ::
  6. ::      para:  el-hacker.com     ::
  7. ::                 nd            ::
  8. ::             bl4ck-p0rtal      ::
  9. ::·······························::
  10. :: Basado en el algoritmo de ejes::
  11. :: y cordenadas de SmartGenius   ::
  12. :::::::::::::::::::::::::::::::::::
  13.  
  14. :starter:
  15. cls
  16. echo Welcome to SNAKX v 2.0 & echo.
  17. echo 1. Play
  18. echo 2. How to play?
  19. echo 3. Exit
  20. set /p "do=What do you want to do? "
  21. if not defined do (goto starter)
  22. if "%do%"=="1" (goto start)
  23. if "%do%"=="3" (exit)
  24.  
  25. :instructions
  26. cls
  27. echo.
  28. echo. Press:
  29. echo.                    exit
  30. echo.           ___      ___
  31. echo.          ^| w ^|    ^| x ^|
  32. echo.       ___^|___^|___ ^|___^|
  33. echo.      ^| a ^| s ^| d ^|
  34. echo.      ^|___^|___^|___^|
  35. echo.
  36. echo     Press key to continue
  37. pause>nul
  38. goto starter
  39.  
  40. :start
  41. setlocal enabledelayedexpansion
  42. set "mAncho=9"
  43. set "mAlto=9"
  44. set "lastmove=move_3"
  45. set "points=0"
  46. set "counter=0"
  47. set "long=4"
  48. set "empty=°"
  49. set "snake=þ"
  50. set "food=ú"
  51. set "moves=x0y9"
  52. set "i_moves=x0y9"
  53.  
  54. :set_square:
  55.  
  56.  for /l %%. in (0,1,%mAlto%) do (
  57.   for /l %%_ in (0 1 %mAncho%) do (set "x%%.y%%_=%empty%")
  58.  )
  59.  
  60. :Init
  61. call :draw_snake
  62. call :draw_food
  63.  
  64. :Main
  65. call :draw_square
  66. call :move_snake
  67. Goto Main
  68.  
  69. :draw_food:
  70.  set x=%random:~-1%
  71.  set y=%random:~-1%
  72. if "!x%x%y%y%!"=="%empty%" (set x%x%y%y%=%food%) else (goto :draw_food)
  73. goto :eof
  74.  
  75. :draw_snake:
  76.  for %%a in (%moves%) do (if not "!%%a!"=="%food%" set "%%a=%empty%")
  77.  for %%_ in (!moves:~-%long%!) do (set %%_=%snake%)
  78. goto :eof
  79.  
  80. :draw_square:
  81. cls
  82.  for /l %%. in (%malto%,-1,0) do (
  83.   for /l %%_ in (0,1,%mancho%) do (set /p "=!x%%_y%%.!"<nul)
  84.   echo.
  85.  )
  86. goto :eof
  87.  
  88. :move_snake:
  89.  choice /c:swdaex /n /t:e,1
  90.  call :move_%errorlevel%
  91. ::count moves
  92.   set /a counter+=1
  93. :: crash or eat?
  94.   if not "!%i_moves:~-4%!"=="%snake%" (
  95.    if "!%i_moves:~-4%!"=="%food%" (
  96.     set /a "points+=1
  97.     set /a long=%long%+5
  98.     set moves=%i_moves%
  99.     call :draw_snake
  100.     call :draw_food
  101.    ) else (
  102.       set moves=%i_moves%
  103.       call :draw_snake
  104.      )
  105.   ) else (echo You Crash! & goto end)
  106.  
  107. goto :eof
  108.  
  109.  :move_1: abajo
  110.   set lastmove=move_1
  111.   for /f "tokens=1,2 delims=x,y" %%a in ("%moves:~-4%") do (
  112.    if ["%%b"]==["0"] (goto end)
  113.    set /a movy=%%b-1
  114.    set i_moves=%moves%,x%%ay!movy!
  115.   )
  116.  goto :eof
  117.  
  118.  :move_2: arriba
  119.   set lastmove=move_2
  120.   for /f "tokens=1,2 delims=x,y" %%a in ("%moves:~-4%") do (
  121.    if ["%%b"]==["%malto%"] (goto end)
  122.    set /a movy=%%b+1
  123.    set i_moves=%moves%,x%%ay!movy!
  124.   )
  125.  goto :eof
  126.  
  127.  :move_3: derecha
  128.   set lastmove=move_3
  129.   for /f "tokens=1,2 delims=x,y" %%a in ("%moves:~-4%") do (
  130.    if ["%%a"]==["%mancho%"] (goto end)
  131.    set /a movx=%%a+1
  132.    set i_moves=%moves%,x!movx!y%%b
  133.   )
  134.  goto :eof
  135.  
  136.  :move_4: izquierda
  137.   set lastmove=move_4
  138.   for /f "tokens=1,2 delims=x,y" %%a in ("%moves:~-4%") do (
  139.    if ["%%a"]==["0"] (goto end)
  140.    set /a movx=%%a-1
  141.    set i_moves=%moves%,x!movx!y%%b
  142.   )
  143.  goto :eof
  144.  
  145.  :move_5: Usar el ultimo movimiento
  146.   call :%lastmove%
  147.  goto :eof
  148.  :move_6: Exit
  149.   goto end
  150.  
  151. :end:
  152. echo. You do %counter% movements
  153. echo. And have %points% points
  154. echo Press any key to exit
  155. pause>nul
  156. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement