本帖最后由 netbenton 于 2011-8-4 00:43 编辑
发贴前先引用他人一句话:
记得几年前,《推箱子》在PC机上刮起了一股不小的益智类游戏的旋风,现在许多资深玩家也都对《推箱子》赞不绝口,可见有深度的益智类游戏是非常受大家欢迎的。
推箱子游戏出现在计算机中最早起源于1994年台湾省李果兆开发的仓库世家,又名仓库番,箱子只可以推, 不可以拉, 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。
推箱子游戏是一种老少皆宜的益智游戏,既可以开发青少年学生的智力,又可以防止老年痴呆症,全家一起攻关还可以促进家庭和睦,何乐而不为?
虽然这种游戏已经很多,但是批处理的玩法是别有情趣哦!
看!批处理版推箱子游戏登场!!!!
砖块快点扔过来。。。呵呵!!
2009-08-27进一步精简代码,并做好了10关,
大家都来试试能不能全部通过。
2009-08-29再次改进,摆脱了choice.exe 的依赖,只有一个文件,增加已经通过的关记录,请看代码:
2009-09-13 更新
增加了几关其中有一关为超大地图(cn-dos)一网友提供,
增强了对大地图的支持(指一屏以外的)
2010-05-28 更新
引入了一个字符保存4个记录信息的方法,目前用只第一行文本可支持300关做记录- @goto :begin @1@0000000000000000000000000000000000000000000此为用户记录保存行,请不要删移!
- e 100 cd 16 86 c4 b4 02 cd 10 b4 4C CD 21
- g
- :begin
- @echo off
- pushd "%~dp0"
- chcp 437 >nul
- graftabl 936 >nul
- color 2f
- set "a=i83=10;i1=7;i72=1;i80=3;i75=2;i77=4;i73=8;i81=9;i57=5;i28=6;c1=n-;c2=m-;c3=n+;c4=m+;∷=^^!r!n!.!m!^^!-∷;☆=^^!r!n!.!m!^^!-☆;▓∷=▓-∷;▓☆=★-∷;★∷=▓-☆;★☆=★-☆;原=∷
- set %a:;=&set %
- setlocal enabledelayedexpansion
- for /f "tokens=2,3 delims=囧" %%a in (%~nx0) do (
- set var=!var!%%a
- if "%%b" equ "" (
- set lev!n!=!var!
- set/a n+=1
- set var=
- )
- )
- set a=a=■;b=∷;c=▓;d=☆;e=★;f=大;tc=abcdefg;tn=1234567890;g=;/a end=n,z=8180,x=0,n=0,m=0;$a=
- set cr=^
-
- &set %a:;=&set %
- set/p ygx=< %~nx0 >nul
- for /f "tokens=2,3 delims=@" %%a in ("!ygx!") do (
- set lev=%%a
- set ygx=%%b
- )
- set hhoo=@f1111@e1110@d1101@c1100@b1011@a1010@91001@81000@70111@60110@50101@40100@30011@20010@10001@00000@
- ::定义数据,用于16进制和二进制的互换
- for /l %%a in (0,1,40) do (
- for %%b in ("!ygx:~%%a,1!") do (
- set ygn=!hhoo:*@%%~b=!
- set yg=!yg!!ygn:~,4!
- ) )
- set ygx=
- ::16进制转二进制
-
- set/a n0=0,n9=17,m0=-1
- set yg=0!yg!
- goto :skend
- :restart
- endlocal&set lev=%lev%&set yg=%yg%
- :skend
- cls&setlocal enabledelayedexpansion
- set str=!lev%lev%!
- for /l %%a in (1,1,14) do (set/a "y=(z-x)/2+x"
- for %%b in (!y!) do if "!str:~%%b,1!" equ "" (set/a z=y) else (set/a x=y)
- )
- for /l %%a in (0,1,!x!) do (set/a t=%%a+1
- for %%b in (!t!) do (
- for /f "tokens=1-3 delims=-" %%1 in ("!str:~%%a,1!-!str:~%%b,1!-!n!") do (
- if "!tc:%%1=!" neq "!tc!" (
- if "!tn:%%2=!" neq "!tn!" (set k=%%2) else (set k=1)
- for /l %%k in (1,1,!k!) do (set r!n!.!m!=!%%1!&set rr!%%1!=!n!.!m!
- if "!%%1!" equ "☆" set "ke=!ke!^!r!n!.!m!^!"
- set /a m+=1
- )
- ) else (if "%%1" equ " " set /a n+=1,m=0)
- )
- ))
- setlocal enabledelayedexpansion
- for /l %%a in (1,1,!n!) do set lev%%a=
- set /a n=!rr大:.=,m=!
- set ji=%ke%&set ji=!ji:☆=★!
- if "!yg:~%lev%,1!" equ "1" (set cyg=☆已过☆) else set cyg=
- title 批处理推箱子 第%lev%关 !cyg!
- :loop
- (
- if !n! geq !n9! set /a n0=n-17,n9=n
- if !n0! lss 0 set /a n0=0,n9=17
- if !n! lss !n0! set /a n0=n,n9=n+17
- if !m! geq !m9! set /a m0=m-34,m9=m
- if !m0! lss 0 set /a m0=0,m9=34
- if !m! lss !m0! set /a m0=m,m9=m+34
- set/a en0=n0-2,em0=m0-2,en9=n9+2,em9=m9+2
- if "!m0!!m9!" neq "%m0%%m9%" (
- set ebs=
- for /l %%b in (!em0!,1,!em9!) do (
- set "ebs=!ebs!^!@%%b^!^^^!$a^!@%%b^!^^^!
- )
- )
- )
- for /l %%a in (!en0!,1,!en9!) do (
- for %%c in ("!ebs:@=r%%a.!") do (
- for %%d in ("%%~c") do (set ebuf=!ebuf!%%~d!cr!)
- )
- )
- if "%ke%" equ "!ji!" cls&echo;!ebuf! &call :dtxs 恭喜您通过了%lev%关!! 1300&pause&goto me9
- set ebuf=!ebuf!方向键移动,空格后退一步,回车重来, Pu上一关,Pd下一关,Esc退出,Del删除记录。玩法:用“大”把“▓”全部推到“☆”内为过关
- set/p=!ebuf!<nul
- set ebuf=
- debug <%~nx0 >nul
- set in=!i%errorlevel%!
- if !in! equ 0 goto :loop
- if !in! gtr 4 goto :me%in%
- set/a sm=m,sn=n,!c%in%!=1,bm=m,bn=n,!c%in%!=1
- for /f "tokens=1,2" %%a in ("!r%bn%.%bm%! !r%bn%.%bm%!!r%n%.%m%!") do (
- for %%c in ("!%%a!!%%b!") do (
- for /f "tokens=1,2 delims=-" %%1 in (%%c) do (
- if "!%%b!" neq "" set save=r%sn%.%sm%=!r%sn%.%sm%!^&set r%bn%.%bm%=!r%bn%.%bm%!^&set r%n%.%m%=!r%n%.%m%!^&set 原=%原%^&set/a m=%sm%,n=%sn%
- set r%sn%.%sm%=!原!&set r%bn%.%bm%=大&set r%n%.%m%=%%1&set/a m=bm,n=bn&set 原=%%2
- goto :loop
- )
- set/a m=sm,n=sn
- )
- )
- goto :loop
- :me5
- if defined save (
- set r%n%.%m%=%原%
- set %save%
- set save=
- )
- goto :loop
- :me6
- endlocal&goto :restart
- :me7
- for /l %%a in (1,4,161) do (
- for %%b in ("!yg:~%%a,4!") do (
- for /f "delims=#" %%c in ("!hhoo:%%~b@=#!") do set ygn=%%~c
- set ygq=!ygq!!ygn:~-1!
- ) )
- ::2进制转16进制
-
- set a=a 10d`db "@%lev%@!ygq!"``w`q
- (echo %a:`=&echo;%) |debug %~nx0 >nul
- exit /b
- ::保存记录并退出
- :me8
- set/a lev-=2
- :me9
- set/a lev+=1
- if !lev! equ !end! set lev=1
- if !lev! equ 0 set/a lev=end-1
- set/a var=lev-1
- endlocal&(if %in% leq 4 set yg=!yg:~,%var%!1!yg:~%lev%!)&set lev=%lev%&goto :restart
- :me10
- endlocal&set yg= &set lev=1
- for /l %%a in (1,1,41) do set yg=!yg!0000
- goto :restart
-
- ::动态显示字符串
- :dtxs 字符串 速率
- setlocal enabledelayedexpansion
- set "say=%1 "
- for /l %%a in (1,1,40) do if "!say:~%%a!" neq "" set n=%%a
- set /a m=76-n
- for /l %%a in (1,1,80) do (set spacs=!spacs! &set tgs=!tgs!)
- for /l %%b in (1,1,!n!) do (
- for /l %%a in (70,-2,1) do (
- set sayq=!say:~,%%b!!spacs:~,%%a!!say:~%%b,1!
- set /p=!tgs!!sayq:~,%m%! <nul
- for /l %%c in (1,%%a,%2) do ver >nul
- ))
- goto :eof
-
-
- :囧a9a ab8a ab4d2fba ab2a2b4a ab2a4b2a aba2b5a ab4c2b2a ab8a ab8a a9a
- :囧a8g ab3ab2a abdbcdba a2ca2b2a ab2a2ca2 abdfb3a ab2ab3a a8
- :囧g4a7 g3a2b2abfa g3ab3ab2a g3acbcbcba g3abca2b2a ga3bcbaba2 gad5b2a ga9
- :囧g3a6 ga3b4a a2dbca2ba2 ad2cbcb2fa ad2bcbcba2 a5b3a g4a5
- :囧a6 abfb2a abcaba abcb2a abcba2 a3ba4 gab2ab2a gad3b2a gab5a ga7
- :囧a9a3 ab9ba aba7bfa2 abab9a abab2cb3ab2a abc2ba5b2a a3b2agabd3a g2a4gab4a g7a6
- :囧ga9 gab2a2b3a gab3cb3a gacba3bca gabad3aba a2bad3aba2 abcb2cb2cba ab5ab2fa a9a2
- :囧g2a5 g2ab3a a3cdca5 ab3dbcb3a aba2ca2bfba ab3dba5 a3bdba g2ab3a g2a5
- :囧ga4g2a5 a2b2ag2ab3a abcba4cb2a ab2cd4bcba a2b4abfba2 ga9a
- :囧a9a ad2b6a ad2cb2ab2a ab2aca2ba2 abcb5a a5baba g2abcbfba g2ab5a g2a7
- :囧a6ga5 ab4a3b3a abc2b5afa abcbad3b3a ab3a8 a5
- :囧ga5 gab3a a2bcbag2a4 ab4a4b2a abcb6cda ab3a5cda a5g3abfa g8a4
- :囧g7a5 g7adb2a g7adaba a8daba abfbcbcb2cba abababab2a3 ab8a a9a
- :囧a5 ab3a4 abababda ab4cba3 a3bacdb2a ab3afb3a ababa6 ab3a a5
- :囧a9a4 abdb2db2dbdba5 ab9b6a5 abdabda2badb9a aba2b2a9a2b3a abcbcb9b6a abcb3cbcba7b3a ab3cb2a4g5a5 a4bcba g3abfba g3a5
- :囧ga4g5 gab2a a2dfa abdca6 abc2bcb2a2 abd2b4a2 a4b2a4 g3a4
- :囧g5a4g a6b2a abcb2cb2a abab2daba2 ab2dbadfba a2cabdcb2a gab3a5 ga5
- :囧g5a6g g5ab4a ga5ba2ba2 gabcb2cb2cba a2badada2dba abcb2cda2dba ab2d2bcfbca2 a8b2a g7a4
- :囧a9g2 ab7a ab2cbcbca a2baca2ba gabd2bd2a2 ga2d2bd2ba g2aba2caba2 g2acbcbcb2a g2ab6fa g2a9
- :囧a5g7 ab3a8 abfdbdbdbdba a2bababababa gabcbcbcbcba ga6b2a3 g6a4
- :囧g4a4g a5b2a abcb3ca ab2dadba a2ba3ba2 gabdadb2a gacbfbcba gab2a5 ga4
- :囧g2a8g a3b2fb3a ab3cbcb2a ab2cbcbcba a5ca5 g3a2bdbd2a g3ab2dab2a g3abdb3da g3a4b2a2 g6a4
- :囧a9g ab2fb4a ac7a ad3ad3a ad7a ac3bc3a ab7a a9
- :囧a9ag ab8a2 abcacacacfa adbdcd3cda adbdcd3cda abcacacaca2 ab8a a9a
- :囧a2 a9a ab2ab2ad2a afbcbcbdba ab3cb2cba abababadba a9a
- :囧g9g7a4g9g2 g5a5g3a4b2a a4gab3a6b4a9a ab2a3bab8ab9b2a abcd5ababcbabad2ab4c2aba ab2a2d3cb2abcabad2b2a2b3cba3 ab4ca2cabacbcbad2ab2a2cabcb2a abcacb3cb2abcb2ad2b3ab2cbcb2a a2b3a3cabad3a2d2ab2abcacb3a ga2ba2bab3ad2a3bdb3abcbcba3 a3bab2a9ab2ab2ab3a4 ab7a2b6ab2ab4a6 abcacacbab3cbcb2a9ab2a adcdb2cbab2cbcbcb8cb3ca ad3a2b2a5ca9b2dadba a4b3a6bdbd2ab3a2ba3ba2 g3ab2db2cbab2dab2adaca2bdadb2a g3a3d2bcbabdb3dab4acb3cba g3a3c2bcbaba2b2a2dacbab2a5 ga3bdcdbab3a6b3a2ba2 gab2cd3ca5g4adacab2a gab3a2dcbag6a2b5a2 ga6b3a囧@
- :囧g6abdaca3 g6a5g6ab4a g9g8afba3 g9g8a4
- :囧g9g7a4 g5a5g3a4b2a a4gab3a6b4a9a ab2a3bab8ab9b2a abcd5ababcbabad2ab4c2aba ab2a2d3cb2abcabad2b2a2b3cba3 ab4ca2cabacbcbad2ab2a2cabcb2a abcacb3cb2abcb2ad2b3ab2cbcb2a a2b3a3cabad3a2d2ab2abcacb3a ga2ba2bab3ad2a3bdb3abcbcba3 a3bab2a9ab2ab2ab3a4 ab7a2b6ab2ab4a6 abcacacbab3cbcb2a9ab2a adcdb2cbab2cbcbcb8cb3ca ad3a2b2a5ca9b2dadba a4b3a6bdbd2ab3a2ba3ba2 g3ab2db2cbab2dab2adaca2bdadb2a g3a3d2bcbabdb3dab4acb3cba g3a3c2bcbaba2b2a2dacbab2a5 ga3bdcdbab3a6b3a2ba2 gab2cd3ca5g4adacab2a gab3a2dcbag6a2b5a2 ga6b3ag6ab囧@
- :囧daca3 g6a5g6ab4a g9g8afba3 g9g8aba2g9g9g9g9g3a7 g9g8ab2ag9g9g9g9g3adbdbda g9g8ab2ag9g9g9g9g3ab5a g9g8ab2ag9g9g9g9g3adbdbda g9g8ab2ag9g9g9g9g3ab5a g9g8ab2ag9g9g9g9g3adb4a g9g8ab2ag9g9g9g9g3a4ba2 g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g9g9g6aba g9g8ab2ag9g9g2a7g9g6aba g9g8ab2ag9g9g2ab5ag9g6aba g9g8ab2ag9g9g2囧@
- :囧ab5ag9g6aba g9g8ab2ag9g9g2acbcbcag9g6aba g9g8ab2ag9g9g2ab5ag9g6aba g9g8ab2ag9g9g2acbcbcag9g6aba g9g8ab2a9a9a4b5a9a8ba g9g8ab4cb9b9b9b9b6a g9g8ab9b9b9b9b9b2a g9g8a9a9a9a9a9a4
复制代码
|