bat版本:
if "%1" equ "para2" goto :para2
set "d-v=for %%a in (!str!) do set/a one=0x%%a,x=one/4+n,y=one%%4+m&(for %%b in ("r!x!.!y!") do if "!%%~b!" equ " " (set r!x!.!y!=■) else (set err=1))"
::函式d-v,把str中的圖示資料,放置到總座標空間中,如果有覆蓋,則err=1。呼叫方法:(%d-v%)
::變數使用:one x y
set "d-e=set aec=!cr!!cr! ┌───────────┐!cr!&(for /l %%a in (2,1,#) do for %%b in ("│!ebuf:@=%%a!│ !ebu%%a!") do set aec=!aec! %%~b!cr!)&cls&echo;!aec! └───────────┘"
::函式d-e,把總座標空間顯示出來,呼叫方法:(%d-e:#=行數%)
set ebu4=第!guan!關
set ebu6=總分:!fen!
set cr=^
::各種圖示定義
set ga1=0 1 5 6
set ga2=1 4 5 8
::■■
:: ■■
set gb1=1 2 4 5
set gb2=0 4 5 9
:: ■■
::■■
set za1=4 5 6 7
set za2=1 5 9 d
::■■■■
set qa1=1 5 9 8
set qa2=0 4 5 6
set qa3=0 1 4 8
set qa4=0 1 2 6
::■■
:: ■
:: ■
set qb1=0 4 8 9
set qb2=0 1 2 4
set qb3=0 1 5 9
set qb4=2 4 5 6
::■■
::■::■
set ta1=0 1 4 5
::■■
::■■
set sa1=0 1 2 5
set sa2=1 4 5 9
set sa3=1 4 5 6
set sa4=0 4 5 8
:: ■
::■■■
set tw1=0 1
set tw2=0 4
set on1=0
set on2=0
set sh1=1 4 5 6 9
set sh2=1 4 5 6 9
set ao1=0 1 2 4 6
set ao2=0 1 4 8 9
set ao3=0 4 5 6 2
set ao4=0 1 5 8 9
set tt1=0 1 2 5 9
set tt2=0 4 8 5 6
set tt3=1 5 8 9 a
set tt4=2 4 5 6 a
::cdef
::89ab
::4567
::0123
echo 0 2 >%~n0.tmp
start "aswd" %0 para2
::起動控制視窗
set k3=k%%=mx,k+
set k4=down
set k1=m-
set k2=m+
set k5=t+
::按鍵定義
setlocal enabledelayedexpansion
for /l %%a in (0,1,10) do (set "ebuf=!ebuf!^!r@.%%a^!")
for %%a in (sa_4 ta_1 qb_4 qa_4 za_2 ga_2 gb_2 tw_2 on_2 sh_2 ao_4 tt_4) do (
for /f "tokens=1,2 delims=_" %%b in ("%%a") do (
set _%%b=%%c
for /l %%d in (1,1,%%c) do set/a nx+=1&set ran!nx!=%%b%%d))
::定義各種圖型的可變型數,及單個圖的隨機號
:restart
for /l %%a in (0,1,18) do (for /l %%b in (0,1,10) do set r%%a.%%b= )
set/a fen=0,guan=1
::初始化座標空間18行,10列
:loop
set/a "m=4,t=2,n=1,down=450/(guan<<2),bti=0"
set/a r=!random!%%nx+1
set err=
set ttr=!_ttr!
set _ttr=!ran%r%!
::隨機取乙個圖示,
if not defined ttr goto :loop
set mx=!_%ttr:~,2%!
set k=%ttr:~2%
set str=!%ttr%!
set _str=!%_ttr%!
setlocal enabledelayedexpansion
for %%a in (!_str!) do set/a one=0x%%a,x=one/4+8,y=one%%4&set kk!x!.!y!=■
for /l %%a in (8,1,11) do for /l %%b in (0,1,3) do (
if defined kk%%a.%%b (set kk%%a=!kk%%a!!kk%%a.%%b!) else (set kk%%a=!kk%%a! )
)endlocal&set ebu8=%kk8%&set ebu9=%kk9%&set ebu10=%kk10%&set ebu11=%kk11%
::對預備圖示的處理
:cont
for /f "tokens=1,2" %%a in (%~n0.tmp) do (
if %%b geq 6 (call :error %%b&exit)
if %%a neq !test! (
set bs=!str!&set/a bm=m,bk=k
set/a !k%%b!=1
if "%%b" equ "3" (for %%b in ("!ttr:~,2!!k!") do set str=!%%~b!)
setlocal enabledelayedexpansion
(%d-v:#=3%)
rem 呼叫函式把圖標點放置到總座標空間
if defined err (
endlocal
set/a m=bm,k=bk
set str=!bs!
if "%%b" equ "4" goto :jmpout
) else (
(%d-e:#=18%)
rem 呼叫顯示函式
endlocal))
set test=%%a)
set ti=1!time:~7,1!!time:~9,2!
if !ti! lss !bti! (set /a tn=ti-bti+1000) else (set /a tn=ti-bti)
if !tn! gtr !down! (
set/a bti=ti,n+=1
setlocal enabledelayedexpansion
(%d-v:#=3%)
if defined err (
endlocal
goto :jmpout
) else (
(%d-e:#=18%)
endlocal))
goto :cont
:jmpout
set/a n-=1
(%d-v:#=3%)
set m=18
for /l %%a in (18,-1,2) do for %%b in ("!ebuf:@=%%a!") do if "%%~b" neq "■■■■■■■■■■■" (set e!m!=%%~b&set/a m-=1)
if !m! neq 1 (
for /l %%a in (!m!,-1,2) do set "e%%a= "
for /l %%a in (18,-1,2) do (
for /l %%b in (0,1,10) do set r%%a.%%b=!e%%a:~%%b,1!
)set/a "fen=fen+(m-1)*10,guan=fen/150+1")
if !n! leq 2 (
echo 遊戲結束!
ping -n 3 127.1 >nul
goto :restart
)goto :loop
:para2
mode con: cols=30 lines=2
echo a左 d右 w轉 s加速 q退出
:p_lp
set/a n=n%%10+1
choice /c adwsgq /n >nul
>%~n0.tmp echo;%n% %errorlevel%
if %errorlevel% geq 6 exit
goto :p_lp
:error
if %1 equ 6 echo 謝謝使用,再見。。。
if %1 gtr 6 echo 對不起!choice.exe 檔案不存在,不能執行。。。
ping -n 3 127.1 >nul
goto :eof
js版本:
俄羅斯方塊高階 AI俄羅斯方塊
前文回顧 致青春 python實現俄羅斯方塊 人工智慧大火的今天,如果還是自己玩俄羅斯方塊未免顯得太low,為什麼不對遊戲公升級,讓機器自己去玩俄羅斯方塊呢?有了這個想法之後利用週六週日兩天的時間去蒐集了大量的資料,在電腦宕機好多次之後終於將ai俄羅斯方塊實現了。所謂讓機器自己去玩俄羅斯方塊,就是讓...
俄羅斯方塊
俄羅斯方塊 tetris,俄文 是一款風靡全球的電視遊戲機 和掌上遊戲機遊戲,它由俄羅斯人阿列克謝 帕基特諾夫 發明,故得此名。俄羅斯方塊的基本規則是移動 旋轉和擺放遊戲自動輸出的各種方塊,使之排列成完整的一行或多行並且消除得分。由於上手簡單 老少皆宜,從而家喻戶曉,風靡世界。俄羅斯方塊的開發者是阿...
俄羅斯方塊
include include include include includeusing namespace std include include define mem a,b memset a,b,sizeof a const int sudu 40 const int dir 4 2 cons...