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