Advertisement
IcarusLives

Game Engine v1.3

Jun 9th, 2017
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 10.20 KB | None | 0 0
  1. @echo off & setlocal enableDelayedExpansion
  2.  
  3. %multithread_dispatcher%
  4.  
  5.     if not exist %temp%\Canvas_3.txt call :map
  6.     call :updateCanvas /f 3
  7.  
  8.     set /a "x=19", "y=21", "m=5"
  9.     for /l %%a in (1,1,%m%) do set /a "m%%a=18 - %%a - 1", "n%%a=20 - %%a - 1"
  10.  
  11. call :multiThread GAME_ENGINE "wasd"
  12. goto :eof
  13.  
  14.  
  15. :GAME_ENGINE
  16.  
  17.     (   for /l %%# in () do (       set /a "frame+=1"
  18.  
  19.             :: User Controller
  20.             %Controller% & %move% w a s d x y .
  21.  
  22.             :: NPC Controller
  23.             for /l %%a in (1,1,%m%) do (
  24.                 set /a "com=!random! %% 4" & %move% 3 2 1 0 m%%a n%%a %%a )
  25.  
  26.             call:adjustCamera x y
  27.             call:showCanvas !x! !y! @
  28.             call:updateCanvas /v 3
  29.  
  30.     )   )
  31. exit
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57. :canvas
  58. set ^"LF=^
  59.  
  60. ^" Above empty line is required - do not remove
  61. set ^"\n=^^^%LF%%LF%^%LF%%LF%^^"
  62.         call:macros
  63.         call:cursorpos 2>nul
  64.         if "%~2" neq "" ( set /a "width=%~1 - 1", "height=%~2 - 1" ) else ( goto :eof )
  65.         if "%~3" neq "" ( set "canvasChar=%~3" ) else ( set "canvasChar=#" )
  66.         if "%~4" neq "" ( set "title=%~4" ) else ( set "title=CANVAS" )
  67.         if "%~7" neq "" ( if /i "%~5" equ "/c" (
  68.                 set "CAM=/c"
  69.                 set /a "CAM_Y=0", "CAM_X=0", "maxX=%~6", "winMaxY=%~7","cols=maxX + 5", "rows=winMaxY + 8"
  70.                 if not defined outerBuffer ( for /l %%a in (-1,1,!maxX!) do (
  71.                     set "outerBuffer=!outerBuffer!%canvasChar%") )
  72.                 if !maxX!    geq %width%  set /a "maxX=width"
  73.                 if !winMaxY! geq %height% set /a "winMaxY=height"
  74.             )
  75.         ) else (
  76.             set /a "cols=width + 5", "rows=height + 8"
  77.             if not defined outerBuffer ( for /l %%a in (-2,1,%width%) do (
  78.                 set "outerBuffer=!outerBuffer!%canvasChar%") )
  79.         )
  80.         if not defined Controller ( set "Controller=set "com="^^& set /p "com="" )
  81.         if not defined multithread_dispatcher ( set "multithread_dispatcher=if "%%~1" neq "" call :%%~1 "%%~2"" )
  82.         for /l %%a in (0,1,%width%)  do set "widthBuffer=!widthBuffer! "
  83.         call:updateCanvas
  84.         if exist "%temp%\cursorpos.exe" (
  85.             set "cls="%temp%\cursorpos.exe" 0 1" ) else ( set "cls=cls" )
  86.         mode con: cols=%cols% lines=%rows%
  87.         title %title%
  88.     goto :eof
  89.    
  90.     :saveCanvas
  91.         if "%~2" neq "" ( if /i "%~1" equ "/f" (
  92.                 if exist "%tmp%\Canvas_%~2.txt" ( del /f /q "%tmp%\Canvas_%~2.txt" 2>nul )
  93.                 for /l %%a in (0,1,%height%) do ( echo="!_[%%a]!">>"%tmp%\Canvas_%~2.txt")
  94.                 <nul set /p ".=:: "%width%+1" "%height%+1" "%canvasChar%" "%title%" "%CAM%" "%maxX%" "%winMaxY%" ">>"%tmp%\Canvas_%~2.txt"  
  95.             ) else if /i "%~1" equ "/v" ( for /l %%a in (0,1,%height%) do ( set "tmp_%~2_[%%a]=!_[%%a]!")
  96.         ) else if /i "%~1" equ "/d" ( if exist "%tmp%\Canvas_%~2.txt" ( del /f /q "%tmp%\Canvas_%~2.txt" 2>nul ) ) )
  97.     :updateCanvas
  98.         if "%~2" neq "" ( if /i "%~1" equ "/f" ( if exist "%tmp%\Canvas_%~2.txt" (
  99.                     set "_=-1"
  100.                     for /f "tokens=*" %%a in (%tmp%\Canvas_%~2.txt) do (
  101.                         set /a "_+=1" & set "tmp_%~2_[!_!]=%%~a"
  102.                         call set "expanded_=%%tmp_%~2_[!_!]%%"
  103.                         if "!expanded_:~0,2!" equ "::" call:canvas !expanded_:~3!
  104.                     )
  105.                     call:updateCanvas /v %~2
  106.                 )
  107.             ) else if /i "%~1" equ "/v" ( for /l %%a in (0,1,%height%) do ( set "_[%%a]=!tmp_%~2_[%%a]!" ) )
  108.         ) else ( for /l %%a in (0,1,%height%) do ( set "_[%%a]=%widthBuffer%" ) )
  109.     goto :eof
  110.  
  111.     :showCanvas
  112.         %cls%
  113.         echo= %outerBuffer%
  114.         if /i "%CAM%" neq "/c" (
  115.             for /l %%a in (0,1,%height%) do ( echo= %canvasChar:~0,1%!_[%%a]!%canvasChar:~0,1%)
  116.         ) else if "%~3" neq "" (
  117.             set /a "maxY=CAM_Y + winMaxY", "_line=%~1 + 1" & if !maxY! gtr %height% set /a "maxY=height"
  118.             for /l %%a in (!CAM_Y!,1,!maxY!) do (
  119.                 set "line=!_[%%a]!"
  120.                 if "%%a" equ "%~2" call set "line=!line:~0,%~1!%~3%%line:~!_line!%%"
  121.                 echo= !canvasChar:~0,1!!line:~%CAM_X%,%maxX%!!canvasChar:~0,1!
  122.             )
  123.         ) else echo Missing Parameters
  124.         echo= %outerBuffer%
  125.     goto :eof
  126.    
  127.     :adjustCamera
  128.         set /a "CAM_X=%~1 - (maxX / 2)", "CAM_Y=%~2 - (winMaxY / 2)"
  129.         if %CAM_X% leq 0 set CAM_X=0
  130.         if %CAM_Y% leq 0 set CAM_Y=0
  131.     goto :eof
  132.    
  133.     :multiThread
  134.         if exist "%temp%\%~n0_signal.txt" del "%temp%\%~n0_signal.txt"
  135.         "%~F0" Controller %~2 >"%temp%\%!!|%~F0" %1 <"%temp%\%~n0_signal.txt"
  136.     goto :eof
  137.    
  138.     :Controller
  139.         ( for /l %%# in () do ( for /f "tokens=*" %%a in ('choice /c:%~1 /n') do ( <nul set /p ".=%%a" ) ) )
  140. goto :eof
  141.  
  142.  
  143. :macros
  144. :: Canvas Macros -------------------------------------------------------------------
  145. :: %PLOT%
  146. set plot=for %%# in (1 2) do if %%#==2 ( for /f "tokens=1-3" %%1 in ("^!args^!") do (%\n%
  147.     set /a "_y=%%2", "_x=%%1", "_x2=%%1 + 1"%\n%
  148.     for /f "tokens=1-4" %%a in ("_y ^!_y^! ^!_x^! ^!_x2^!") do set "_[^!%%a^!]=^!_[%%b]:~0,%%c^!%%3^!_[%%b]:~%%d^!"%\n%
  149. )) else set args=
  150.  
  151. :: End Canvas Macros ---------------------------------------------------------------
  152.  
  153. :: Engine Macros -------------------------------------------------------------------
  154. :: %checkSpace%
  155. set checkSpace=for %%# in (1 2) do if %%#==2 ( for /f "tokens=1,2" %%1 in ("^!args^!") do (%\n%
  156.     set /a "_x=%%1", "_y=%%2"%\n%
  157.     for /f "tokens=1,2" %%x in ("^!_x^! ^!_y^!") do (%\n%
  158.                if "^!_[%%y]:~%%x,1^!" equ "л" ( set "CSerr=1"%\n%
  159.         ) else if "^!_[%%y]:~%%x,1^!" equ "M" ( set "CSerr=1"%\n%
  160.         ) else if "^!_[%%y]:~%%x,1^!" equ "D" ( set /a "%%1=^!random^! %% a(width-10) + 10", "%%2=^!random^! %% (height-10) + 10"%\n%
  161.         ) else if "^!_[%%y]:~%%x,1^!" equ "T" ( set "CSerr=1"%\n%
  162.         ) else set "CSerr=0"%\n%
  163.     )%\n%
  164. )) else set args=
  165.  
  166. :: %move%
  167. set move=for %%# in (1 2) do if %%#==2 ( for /f "tokens=1-7" %%1 in ("^!args^!") do (%\n%
  168.            if /i "^!com^!" equ "%%1" ( ^!checkSpace^! %%5 %%6-1%\n%
  169.         if "^!CSerr^!" neq "1" set /a "%%6-=1"%\n%
  170.     ) else if /i "^!com^!" equ "%%2" ( ^!checkSpace^! %%5-1 %%6%\n%
  171.         if "^!CSerr^!" neq "1" set /a "%%5-=1"%\n%
  172.     ) else if /i "^!com^!" equ "%%3" ( ^!checkSpace^! %%5 %%6+1%\n%
  173.         if "^!CSerr^!" neq "1" set /a "%%6+=1"%\n%
  174.     ) else if /i "^!com^!" equ "%%4" ( ^!checkSpace^! %%5+1 %%6%\n%
  175.         if "^!CSerr^!" neq "1" set /a "%%5+=1")%\n%
  176.     if "%%7" neq "" ( ^!plot^! %%5 %%6 %%7 )%\n%
  177. )) else set args=
  178.  
  179. :: End Engine Macros ---------------------------------------------------------------
  180. goto :eof
  181.  
  182. :map
  183. for %%a in ("лллллллллллллллллллллллллллллллллллллллллллллллллл"
  184.             "лллллллллллллллллллллллллллллллллллллллллллллллл л"
  185.             "лллллллллллллллллллллллллллллллллллллллллллллллл л"
  186.             "ллллл        T ллл             ллллллллллллллллл л"
  187.             "ллллл ллллллллл                   лллллллллллллл л"
  188.             "ллллл лллллллл      ллллллллл      ллллллллллллл л"
  189.             "ллллл лллллл     лл           лл     ллллллллллл л"
  190.             "ллллл          л                 л    лллллллллл л"
  191.             "ллллллллл    л                     л    лллллллл л"
  192.             "лллллллл    л                       л    ллллллл л"
  193.             "лллллллл   л                         л   ллллллл л"
  194.             "ллллллл   л                           л   лллллл л"
  195.             "лллллл   л                             л   ллллл л"
  196.             "лллллл  л                               л  ллллл л"
  197.             "ллллл                                       лллл л"
  198.             "лллл   л             ллллллл             л   ллл л"
  199.             "лллл               лл       лл               ллл л"
  200.             "лллл  л           л           л           л  ллл л"
  201.             "ллл   л          л             л          л   лл л"
  202.             "ллл             л               л             лллл"
  203.             "ллл  л          л     ллллл     л          л  лллл"
  204.             "ллл  л         л     лллDллл     л         л  лллл"
  205.             "ллл  л         л    лллл ллл     л         л  лллл"
  206.             "ллл  л         л    лллл лллл              л  лллл"
  207.             "ллл  л         л    лллл                   л  лллл"
  208.             "ллл  л         л    ллллллллл              л  лллл"
  209.             "ллл  л         л    ллллллллл    л         л  лллл"
  210.             "ллл  л         л     ллллллл     л         л  лллл"
  211.             "ллл  л          л     ллллл     л          л  лллл"
  212.             "ллл             л               л             лллл"
  213.             "ллл   л          л             л          л   лл л"
  214.             "лллл  л           л           л           л  ллл л"
  215.             "лллл               лл       лл               ллл л"
  216.             "лллл   л             ллллллл             л   ллл л"
  217.             "ллллл                                       лллл л"
  218.             "лллллл  л                               л  ллллл л"
  219.             "лллллл   л                             л   ллллл л"
  220.             "ллллллл   л                           л   лллллл л"
  221.             "лллллллл   л                         л   ллллллл л"
  222.             "лллллллл    л                       л    ллллллл л"
  223.             "ллллллллл    л                     л    лллллллл л"
  224.             "ллллллллллл    л                 л    лллллллллл л"
  225.             "лллллллллллл     лл           лл     ллллллллллл л"
  226.             "лллллллллллллл      ллллллллл      ллллллллллллл л"
  227.             "ллллллллллллллл                   лллллллллллллл л"
  228.             "лллллллллллллллллл             ллллллллллллллллл л"
  229.             "лллллллллллллллллллллллллллллллллллллллллллллллл л"
  230.             "лллллллллллллллллллллллллллллллллллллллллллллллл л"
  231.             "л                  ллллллллллл                   л"
  232.             "лллллллллллллллллллллллллллллллллллллллллллллллллл"
  233.             ":: "49+1" "49+1" "#" "Game" "/c" "30" "30" "
  234. ) do echo %%~a>>%temp%\Canvas_3.txt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement