Board logo

标题: [游戏娱乐] 【首发:INAG论坛】批处理推箱子游戏 [打印本页]

作者: zcydez    时间: 2012-8-5 15:08     标题: 【首发:INAG论坛】批处理推箱子游戏

【更新:编写地图时支持已有箱子的目标(★),详情键回帖】
链接: https://pan.baidu.com/s/1OW0lslV6SNTaSjcxf50ivw 提取码: vfsc

刚刚更新 解决地图太小无法正常显示的BUG。
小弟不才 界面不太漂亮 还望高手指点~
支持自编地图,游戏说明:█为墙 ▓为箱子 ☆为目标 ♀为人的位置。控制方法:WSAD移动小人 46跳关 E退出 R重来
目录下有一个map.bat是自编地图用的 用鼠标控制 方法不多说了。本程序需要外部命令行程序Cmos.exe和Choice.exe。附件里有。
挂上代码:
推箱子.bat:
  1. @echo off&setlocal enabledelayedexpansion
  2. if not exist choice.exe echo 找不到choice.exe!&pause&exit
  3. set file=1
  4. :begin
  5. if not exist level%file%.txt echo 找不到第%file%关!&pause&exit
  6. title 第%file%关
  7. cls
  8. echo 正在加载……
  9. for /f %%a in (level%file%.txt) do (set aline=%%a)
  10. set zs=0
  11. set y=0
  12. set mbs=0
  13. :next
  14. if "!aline:~%zs%!"=="" goto alinelast
  15. set /a zs=%zs%+1
  16. goto next
  17. :alinelast
  18. for /f %%a in (level%file%.txt) do (set /a y=y+1
  19. set aline=%%a
  20. for /l %%b in (1 1 %zs%) do (call :sets %%b !y!)
  21. )
  22. set /a czs=%zs%*2+1
  23. if %czs% leq 14 set czs=14
  24. mode con:cols=%czs% lines=%y%
  25. :loop
  26. cls
  27. set nmb=
  28. for /l %%y in (1 1 %y%) do (
  29. for /l %%x in (1 1 %zs%) do (set /p=!x%%xy%%y!<nul
  30. for /l %%a in (1 1 %mbs%) do (if !mbx%%a!==%%x (if !mbx%%a!==%%x (if !mby%%a!==%%y (set/p=<nul
  31. set mb=☆
  32. if "!x%%xy%%y!"=="▓" set mb=★
  33. if !mb!==☆ set nmb=1
  34. set/p=!mb!<nul))))
  35. if %%x==%psx% (if %%y==%psy% (set psd=1
  36. set/p=<nul
  37. set/p=♀<nul)))
  38. if not %%y==%y% echo.
  39. )
  40. if "%nmb%"=="" goto win
  41. choice /c WSAD46ER /n>nul
  42. set movex=0
  43. set movey=0
  44. set cnm=0
  45. if %errorlevel%==1 (set movey=-1)
  46. if %errorlevel%==2 (set movey=1)
  47. if %errorlevel%==3 (set movex=-1)
  48. if %errorlevel%==4 (set movex=1)
  49. if %errorlevel%==5 (call :cleanarchives
  50. set /a file=%file%-1
  51. goto begin)
  52. if %errorlevel%==6 (call :cleanarchives
  53. set /a file=%file%+1
  54. goto begin)
  55. if %errorlevel%==7 exit
  56. if %errorlevel%==8 (call :cleanarchives
  57. goto begin)
  58. set /a npsx=%movex%+%psx%
  59. set /a npsy=%movey%+%psy%
  60. if "!x%npsx%y%npsy%!"=="" set cnm=1
  61. if "!x%npsx%y%npsy%!"=="█" set cnm=1
  62. if "!x%npsx%y%npsy%!"=="▓" (call :movewall)
  63. if "%cnm%"=="1" goto loop
  64. set psx=%npsx%
  65. set psy=%npsy%
  66. goto :loop
  67. ::==========================
  68. goto :eof
  69. :sets
  70. set/a sx=%1-1
  71. set x%1y%2=!aline:~%sx%,1!
  72. if "!aline:~%sx%,1!"=="♀" (set x%1y%2=
  73. set psx=%1
  74. set psy=%2)
  75. if "!aline:~%sx%,1!"=="☆" (set x%1y%2=
  76. set /a mbs=!mbs!+1
  77. set mbx!mbs!=%1
  78. set mby!mbs!=%2)
  79. goto :eof
  80. :movewall
  81. set /a wpsx=%movex%*2+%psx%
  82. set /a wpsy=%movey%*2+%psy%
  83. if not "!x%wpsx%y%wpsy%!"=="" (set cnm=1&goto :eof)
  84. set x!wpsx!y!wpsy!=▓
  85. set x%npsx%y%npsy%=
  86. goto :eof
  87. :win
  88. cls
  89. echo 你赢了!
  90. pause
  91. call :cleanarchives
  92. set /a file=%file%+1
  93. goto begin
  94. goto :eof
  95. :cleanarchives
  96. for /l %%y in (1 1 %y%) do (for /l %%x in (1 1 %zs%) do (set x%%xy%%y=))
  97. goto :eof
复制代码
自编地图:
  1. @echo off&setlocal enabledelayedexpansion
  2. if not exist cmos.exe echo 找不到cmos.exe!&pause&exit
  3. set /p mx=请输入地图长度:
  4. set /p my=请输入地图宽度:
  5. set nowct=空白&set nowc=
  6. set /a cmx=%mx%*2+1
  7. set /a cmy=%my%+4
  8. if %mx% lss 12 set cmx=25
  9. mode con:cols=%cmx% lines=%cmy%
  10. for /l %%y in (1 1 %my%) do (for /l %%x in (1 1 %mx%) do (set x%%xy%%y=))
  11. :loop
  12. cls
  13. for /l %%y in (1 1 %my%) do (for /l %%x in (1 1 %mx%) do (set/p=!x%%xy%%y!<nul
  14. if "%psx%"=="%%x" (if "%psy%"=="%%y" (set/p=<nul
  15. set/p=♀<nul)))
  16. echo.)
  17. set /a kgs=%cmx%/2-4
  18. set kg=
  19. for /l %%a in (1 1 %kgs%) do (set kg=!kg!=)
  20. echo.%kg%单击选择%kg%
  21. echo.墙  空白  目标  箱子  人
  22. echo.当前选择:!nowct!
  23. set/p=保存地图<nul
  24. cmos 0 1 -1
  25. set /a P=%errorlevel%
  26. set /a mouseX=%P:~0,-3%
  27. set /a mouseY=%P%-1000*%mouseX%
  28. set /a setx=%mousex%+1
  29. set /a sety=%my%+2
  30. set /a savey=%my%+4
  31. set /a setx=%setx%/2
  32. if "%mousey%"=="%savey%" (if %setx% leq 4 goto save)
  33. if "%mousey%"=="%sety%" (
  34. if !setx!==1 set nowct=墙&set nowc=█
  35. if !setx!==3 set nowct=空白&set nowc=
  36. if !setx!==4 set nowct=空白&set nowc=
  37. if !setx!==6 set nowct=目标&set nowc=☆
  38. if !setx!==7 set nowct=目标&set nowc=☆
  39. if !setx!==9 set nowct=箱子&set nowc=▓
  40. if !setx!==10 set nowct=箱子&set nowc=▓
  41. if !setx!==12 set nowct=人&set nowc=♀
  42. )
  43. if %setx%==%psx% (if %mousey%==%psy% goto loop)
  44. if "!x%setx%y%mousey%!"=="" goto loop
  45. if "%nowct%"=="人" (if not "!x%setx%y%mousey%!"=="" goto loop
  46. set psx=%setx%
  47. set psy=%mousey%) else (set x%setx%y%mousey%=%nowc%)
  48. goto loop
  49. :save
  50. mode con:cols=30 lines=3
  51. set mbs=0
  52. set boxes=0
  53. set goon=0
  54. if "%psx%"=="" echo 警告!&echo 未设定人位置 是否继续?&call :choicegoon
  55. if !goon!==1 goto reedit
  56. cls
  57. for /l %%y in (1 1 %my%) do (for /l %%x in (1 1 %mx%) do (if !x%%xy%%y!==☆ set /a mbs=!mbs!+1
  58. if !x%%xy%%y!==▓ set /a boxes=!boxes!+1
  59. ))
  60. if not %mbs%==%boxes% (echo 警告!&echo 目标数不等于箱子数 是否继续?&call :choicegoon
  61. if !goon!==1 goto reedit)
  62. cls
  63. set /p filename=请输入文件名:
  64. type nul>%filename%
  65. for /l %%y in (1 1 %my%) do (for /l %%x in (1 1 %mx%) do (
  66. if "%psx%"=="%%x" (if "%psy%"=="%%y" (set/p=♀<nul>>%filename%&set wdps=1))
  67. if "!wdps!"=="" (set/p=!x%%xy%%y!<nul>>%filename%) else (set wdps=))
  68. if not %%y==%my% echo.>>%filename%)
  69. goto :eof
  70. :choicegoon
  71. set/p=是  否<nul
  72. :cloop
  73. cmos 0 1 -1
  74. set /a P=%errorlevel%
  75. set /a mouseX=%P:~0,-3%
  76. set /a mouseY=%P%-1000*%mouseX%
  77. set /a setx=%mousex%+1
  78. set /a setx=%setx%/2
  79. if %mousey%==3 (if %setx%==1 set goon=0&goto :eof
  80. if %setx%==3 set goon=1&goto :eof)
  81. goto cloop
  82. :reedit
  83. mode con:cols=%cmx% lines=%cmy%
  84. goto loop
复制代码

作者: canyuexiaolang    时间: 2012-8-5 15:58

感谢分享
作者: ht河豚    时间: 2012-8-5 17:20

不错不错,看了下,收藏了
作者: lcg823    时间: 2012-8-6 16:49

膜拜LZ,学习学习
作者: zcydez    时间: 2012-8-23 14:21

最近更新:编写地图时支持已有箱子的目标(★),这下完美了
作者: 狱渊    时间: 2013-4-28 20:47

回复 1# zcydez


    万分感谢你的分享




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2