-2
我一直在拼圖,出於某種原因,這是行不通的。移動瓷磚BATCH
每張幻燈片都是隨機字母「a,b,c,d,e,f,g,h,i,j,k,l,m,n,o」我知道50%的時間這可能是一個難以解決的難題(不知道如何避免它,除了有常量)
除了它無法解決一半的時間運動不起作用,可能是因爲瓷磚是字母而不是數字?這些動作是由wasd鍵控制的(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的? ,你可以說移動。然後移動一個交換Rx和Rspace的問題... – Magoo
選擇通過從Rspace +/- 1和+/- 4查看來顯示爲「choice」的字母 - 檢查後(左Rs %% 4 neq 1, right Rs %% 4 neq 0,up Rs-4 gtr 0 down Rs + 4 lss 17),拿起字母,把它們放在一個變量中,加'q'退出運氣並使用'choice/c%varname%/N'。你明白'delayedexpansion'是這樣的!!varname:〜%errorlevel,1%!'是字母移動(當然,你必須在'varname'的開頭添加一個字符)。 – Magoo
您的原始設計使用正方形Rx(x = 1..16)中的數字。現在你正在使用字母。如果Rs是空格,那麼如果s = 1,則只能向右或向下移動。 s = 2,3,Left; Right; Down s = 4,L; D s = 5,R; U; D等等如果s mod 4不是= 1(編碼爲'if S %% 4 neq 1 ')你可以移動R等等。因此,對於任何S,可以選擇移動的瓦片是L,R,U,D的S-1,S + 1,S-4和S + 4,只要它們通過測試(如'如果S %% 4 neq 1',如果測試失敗則排除S-1(左側))。因此,從可以移動到空間中的瓦片中拾取(2-4)字母,添加「q」以退出... – Magoo