-2
私はパズルに取り組んでいますが、何らかの理由でこれが動作しません。移動タイルBATCH
各スライドはランダムな文字「a、b、c、d、e、f、g、h、i、j、k、l、m、n、o」です。これは解決できないパズルかもしれません(定数を除いてそれを避ける方法を知らないでください)
タイルは文字で数字ではないので動きの半分は解決できません。 (w = up、a = left、s = down、d = right)
最終的なことはこれ以上簡単で効果的ですか?
echo ____ ____ ____ ____
echo ^| ^| ^| ^| ^|
echo ^| %slide1% ^| %slide2% ^| %slide3% ^| %slide4% ^|
echo ^|____^|____^|____^|____^|
echo ^| ^| ^| ^| ^|
echo ^| %slide5% ^| %slide6% ^| %slide7% ^| %slide8% ^|
echo ^|____^|____^|____^|____^|
echo ^| ^| ^| ^| ^|
echo ^| %slide9% ^| %slide10% ^| %slide11% ^| %slide12% ^|
echo ^|____^|____^|____^|____^|
echo ^| ^| ^| ^| ^|
echo ^| %slide13% ^| %slide14% ^| %slide15% ^| %slide16% ^|
echo ^|____^|____^|____^|____^|
choice /c wasdr /n
if %errorlevel% == 1 goto movew
if %errorlevel% == 2 goto movea
if %errorlevel% == 3 goto moves
if %errorlevel% == 4 goto moved
if %errorlevel% == 5 goto reset
:movew
if %pos% GEQ 13 goto display
set /a helper=%pos% + 4
set /a slide%pos%=!slide%helper%!
set slide%helper%=%default%
set /a pos=%pos% + 4
:movea
if %pos% == 4 goto display
if %pos% == 8 goto display
if %pos% == 12 goto display
if %pos% == 16 goto display
set /a helper=%pos% + 1
set /a slide%pos%=!slide%helper%!
set slide%helper%=%default%
set /a pos=%pos% + 1
goto display
:moves
if %pos% LEQ 4 goto display
set /a helper=%pos% - 4
set /a slide%pos%=!slide%helper%!
set slide%helper%=%default%
set /a pos=%pos% - 4
goto display
:moved
if %pos% == 1 goto display
if %pos% == 5 goto display
if %pos% == 9 goto display
if %pos% == 13 goto display
set /a helper=%pos% - 1
set /a slide%pos%=!slide%helper%!
set slide%helper%=%default%
set /a pos=%pos% - 1
goto display
おかげで、あなたの質問に
が動いwensするのではなく、したがって、あなたはこれらの4つのタイルは、名前(文字)を持っているの下と空の角のいずれかの側に移動することができます唯一のタイルは、直接上記のものであることを検討しているとあなたはakehと言うことができます。 ... – Magoo
チェックの後、Rspace +/- 1と+/- 4を見て、 'choice'として表示する文字を選択します(左のRs %% 4 neq 1、 Rs%4 neq 0、Rs + 4 gtr 0 up Rs + 4 lss 17)、文字をピックアップして変数に入れ、運を止めるために 'q 'を追加し、' choice/c%varname%/n'。あなたは 'delayedexpansion'を理解していますので、'!varname:〜%errorlevel、1%! 'は文字の移動です(' varname'の先頭に文字を追加する必要があります)。 – Magoo
元のデザインでは、Rx(x = 1..16)の四角形の数字が使用されています。今あなたは手紙を使っています。 Rsがスペースの場合、s = 1の場合、右または下に移動することしかできません。 s = 4、L; D s = 5、R; U; Dなどのように '' s mod 4 not = 1'なら 's %% 4 neq 1 ')あなたはRなどを移動することができます。したがって、任意のSに対して、L、R、U、DのS-1、S + 1、S-4およびS + 4は、テスト(テストが失敗した場合、S-1(左)を除外する '' S %% 4 neq 1 'のような)テスト。だから、空間に移動できるタイルから(2-4)文字を拾い、 'q'をつけて... – Magoo