父類我們分析完了,現在來看看子類。父類裡有兩個抽象方法,以l型為例(其他型別同理,不僅7種型別)blockl子類:
4.1首先以0所在的小方塊為基礎朝北,順時針旋轉。用數字標記的小方塊相對位置不變。 (如圖)
code:
public
override
voidinit(directiondir)
else
if(dir==direction.east)
else
if(dir==direction.south)
else }
4.2 旋轉時首先記錄旋轉錢的位置和方向,然後判讀能否旋轉。不能旋轉則回到原來的狀態。旋轉是以圖標的0位置的小方塊為中轉動。參考**如下:
順時針旋轉
code:
public
override
voidratate()
hideblock();
if(direction==direction.north)
else
if(direction==direction.east)
else
if(direction==direction.south)
else
boolflag=true;
foreach(squaresinsquares)
flag&=game.isempty(s.location.y/game.side,s.location.x/game.side);
if(!flag)
showblock(); }
4.3 有些形狀如正方形,旋轉後都是一樣,無方向可言。長棍子4個方向就只有2種狀態,就只需要判斷2個方向。到現在為止已經實現方塊的移動、疊加、旋轉。接下來就是當小方塊滿行消層的問題。
俄羅斯方塊高階 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...