《俄羅斯方塊》高手心得
發佈日期 2013-09-17 09:23:00
首先我們在腦海中應該有一個最基本的遊戲介面。我們把這個介面畫在草稿紙上:
一 抽象出類
1】從圖中我們可以分離出一些物件。
2個顯示區
3個資訊提示
一些方塊例項
2】現在我們來設計遊戲需要的類
1。首先實現需要顯示的類
gamefield類: 2個顯示區。因為他們有太多相同,除了顯示面積的大小之外。
2。資訊提示這些我們使用textfield
3。每一個大塊是由4個小方塊組成 所有我們可以定義一個塊類,和一個小方塊類
square類:小方塊類
block 類:每個block由4個小方塊組成一個圖形。
blocktype類:圖形分類 比如 L型 I型 Z型。(詳見程式碼)
OK,現在看的見的東西我們都已經抽象出來了。
二 實現
這裡我們使用事件機制+MVC(控制顯示分離)顯示物件只負責顯示,其他的所有操作交給control。 進一步抽象出2個類
gameEvent類:如圖形移動,遊戲開始,變形等。
control類:對block例項進行控制,以及遊戲狀態的控制等。
三 關鍵演演算法
地圖陣列 map[maingamefield的高][maingamefield的寬] 為什麼不是map[maingamefield的寬][maingamefield的高] ? 自己體會。
方塊變形 座標旋轉公式(s,t)旋轉後得到的座標,此處採用逆時針旋90度
s = x cos(b) – y sin(b)
t = x sin(b) + y cos(b)
方塊消除
1. 從最底層開始檢查是否有有滿的行 也就是檢查map陣列的是否有滿的行。根據儲存的小方塊例項的name來刪除對應的顯示物件。
2. 消除方塊後下移 從最底層開始檢查,有空的行 row++ 當前行有小方塊,所有小方塊的y座標增加row個數量級(row*方塊的高)。地圖座標的行索引增加row。
(詳細見程式碼)
相關攻略文章
2024年的遊戲刻板印象 英國新聞主持人嘲笑《俄羅斯方塊》破紀錄少年引熱議
美國13歲少年首次通關《俄羅斯方塊》:上限為157關
13歲少年在NES版《俄羅斯方塊》發行34年後 首次“打穿”遊戲
《俄羅斯方塊》電影被指控抄襲 現實與劇情如出一轍
電影《俄羅斯方塊》被控抄襲 故事情節變成現實
電影《俄羅斯方塊》首支預告片 3月31日上線Apple TV+
電影《俄羅斯方塊》新預告 聚焦俄羅斯方塊法律糾紛 3月31日登陸Apple+
電影《俄羅斯方塊》曝預告 一個你編造不出的故事!
電影《俄羅斯方塊》釋出預告 3月31日登陸Apple TV+
《俄羅斯方塊》將遭西方制裁?貌似和事實有出入
技術高玩改造遠古GB掌機 實現《俄羅斯方塊》線上多人遊戲
IGN公佈史上最暢銷的十款遊戲 《俄羅斯方塊》力壓群雄