第一次寫(xiě)俄羅斯方塊,完全是按照自己的想法做的。做完了很奇怪。
估計(jì)是按照相對(duì)坐標(biāo)來(lái)算,好多的分支語(yǔ)句把自己都搞暈了。
所以決定放棄了,貼出來(lái)以祭奠。

設(shè)計(jì)的草稿是這樣的

棋子記錄狀態(tài)

棋盤(pán)根據(jù)棋子狀態(tài)進(jìn)行判斷和繪制

主要檢測(cè):

越界檢測(cè):每次左移或者右移時(shí)檢測(cè)(在邊界內(nèi)則移動(dòng)否則不動(dòng))OK

觸底檢測(cè):每次下降時(shí)檢測(cè)OK,也就是在時(shí)鐘記錄一次時(shí)探測(cè)

消行檢測(cè):觸底觸發(fā)時(shí)檢測(cè)

旋轉(zhuǎn)檢測(cè):能否旋轉(zhuǎn)

 

檢測(cè)時(shí)首先根據(jù)棋子種類(lèi)再根據(jù)棋子狀態(tài)進(jìn)行篩選。

 

全局棋盤(pán)只在觸底時(shí)更新(檢測(cè)消行后的狀態(tài)),上部分在數(shù)組部分不更新 僅僅根據(jù)狀態(tài)由畫(huà)刷畫(huà)出。

 

觸發(fā)事件:

觸底時(shí)觸發(fā)產(chǎn)生新的方塊設(shè)置high_pos變量。

 

已經(jīng)實(shí)現(xiàn)的功能:

越界檢測(cè)觸底檢測(cè)

旋轉(zhuǎn)檢測(cè)旋轉(zhuǎn)檢測(cè)

 

代碼這里下載,我想沒(méi)人愿意去找錯(cuò)誤所在的。呵呵相當(dāng)繁瑣。
 
如果大家有什么想法或者好的設(shè)計(jì)方法告訴我哈。非常樂(lè)意重新寫(xiě)。
我聽(tīng)同學(xué)說(shuō)存儲(chǔ)每個(gè)圖形做比較簡(jiǎn)單。可以減少分支判斷。

哈哈,第二天醒來(lái)終于意識(shí)到問(wèn)題了,是數(shù)組的坐標(biāo)系和圖形的坐標(biāo)系混淆了。以及數(shù)組和方塊的參照系獨(dú)立的原因。
可以修改了。


現(xiàn)在的問(wèn)題只剩下旋轉(zhuǎn)的時(shí)候會(huì)插到墻壁里,應(yīng)該是個(gè)小問(wèn)題。也是因?yàn)閱蝹€(gè)點(diǎn)記錄造成對(duì)整體的把握性下降。

所以只能重新用新的方法去設(shè)計(jì)。

vczh跟我說(shuō)他以前寫(xiě)過(guò)這個(gè)代碼,我就打算參照他的腳本寫(xiě)的代碼用C++寫(xiě)一個(gè)。這個(gè)腳本還真牛叉: