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