第一次寫俄羅斯方塊,完全是按照自己的想法做的。做完了很奇怪。
估計是按照相對坐標來算,好多的分支語句把自己都搞暈了。
所以決定放棄了,貼出來以祭奠。

設計的草稿是這樣的

棋子記錄狀態

棋盤根據棋子狀態進行判斷和繪制

主要檢測:

越界檢測:每次左移或者右移時檢測(在邊界內則移動否則不動)OK

觸底檢測:每次下降時檢測OK,也就是在時鐘記錄一次時探測

消行檢測:觸底觸發時檢測

旋轉檢測:能否旋轉

 

檢測時首先根據棋子種類再根據棋子狀態進行篩選。

 

全局棋盤只在觸底時更新(檢測消行后的狀態),上部分在數組部分不更新 僅僅根據狀態由畫刷畫出。

 

觸發事件:

觸底時觸發產生新的方塊設置high_pos變量。

 

已經實現的功能:

越界檢測觸底檢測

旋轉檢測旋轉檢測

 

代碼這里下載,我想沒人愿意去找錯誤所在的。呵呵相當繁瑣。
 
如果大家有什么想法或者好的設計方法告訴我哈。非常樂意重新寫。
我聽同學說存儲每個圖形做比較簡單。可以減少分支判斷。

哈哈,第二天醒來終于意識到問題了,是數組的坐標系和圖形的坐標系混淆了。以及數組和方塊的參照系獨立的原因。
可以修改了。


現在的問題只剩下旋轉的時候會插到墻壁里,應該是個小問題。也是因為單個點記錄造成對整體的把握性下降。

所以只能重新用新的方法去設計。

vczh跟我說他以前寫過這個代碼,我就打算參照他的腳本寫的代碼用C++寫一個。這個腳本還真牛叉: