《俄羅斯方塊》高手心得

發佈日期

首先我們在腦海中應該有一個最基本的遊戲介面。我們把這個介面畫在草稿紙上:

一 抽象出類

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。

(詳細見程式碼)

相關攻略文章

最新攻略