領(lǐng)導(dǎo)最近在玩泡泡龍,我也想不通為什么突然又對這么古老的游戲感興趣了。昨晚在地鐵上,她問我這種游戲能做嗎?我不加思考回答道:當(dāng)然,超簡單。今天從深大地鐵站出來,這個問題突然冒了出來,到公司的路上花了幾分鐘思考了下實(shí)現(xiàn)細(xì)節(jié)。從最簡單的玩法開始:相同顏色的泡泡三個以上可以消除。
核心數(shù)據(jù)結(jié)構(gòu)我采用鏈表數(shù)組,將相同顏色且鄰接的泡泡串成一個鏈表。采用這種數(shù)據(jù)結(jié)構(gòu),是基于下面考慮:1)通過顏色劃分縮小搜索區(qū)域;2)沒有排序,沒有中間插入節(jié)點(diǎn)的需求;3)節(jié)省內(nèi)存。當(dāng)然,游戲界面中的泡泡還是把它對應(yīng)到一個二維數(shù)組中,每個元素存儲一個泡泡對象的指針,該對象中至少包含:顏色、坐標(biāo),分值。如下圖所示:
剩下需要考慮的是發(fā)射泡泡顏色如何產(chǎn)生?如果從空關(guān)卡開始,前面可以用隨機(jī),后面就要使用統(tǒng)計(jì)信息了。在每個鏈表頭可以統(tǒng)計(jì)該堆泡泡開閉性、數(shù)量等,利用這些信息可以決定發(fā)射泡泡的顏色。