做了俄羅斯方塊的小練習,總結一下其中用到的程式設計思想
一.物件導向的思想
1.封裝:
抓住格仔、方塊、牆幾個事物
方塊由四個格仔組成
牆由10*20的格仔組成(定義為二維陣列)
牆中的格仔開始是空的,方塊落下去,又堆疊起來,牆上才有格仔(給對應陣列元素的賦值),符合生活中人們對事物的認識
2.繼承:
把方塊的通用屬性和方法抽象為方塊的共同父類,不同型別的方塊都繼承這個類
類圖如下所示:
二.化繁為簡的思想
1.把複雜的功能拆分乙個乙個的小功能:比如把action主流程細分為在遊戲結束、遊戲暫停、遊戲進行中,
每一種又繼續細分對不同的按鍵做什麼反應
2.把整體的動作拆分為每乙個部分的動作:
比如,方塊的移動拆分為組成方塊的每個格仔的移動
3.先實現基礎的功能,再逐步完善
三.補償的思想
在對方塊的移動過程中,營造一種方塊碰到牆壁不能越界的效果
採用了補償的思想
以向左移為例。先試著向左移,如果會造成越界或者重合,那就再向右移一次
利用了計算機快速地運算速度,肉眼看起來就像方塊碰到了牆壁或障礙物就無法移動了一樣
四.數學分析的思想
在對方塊做不同形式的轉換的過程中,歸納每種方塊有幾種變化狀態,及從一種狀態到下一種狀態的時候每個格仔的座標的變化規律
再把狀態變化封裝成陣列,在父類中只是定義狀態陣列,沒有指定陣列的長度,在子類中根據子類的變化個數,再確定陣列的長度
五.簡單工廠的思想
方塊的父類有乙個靜態方法,用來隨機建立不同的子類物件
下圖為遊戲效果圖:
俄羅斯方塊高階 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...