x00_閑談
- 淺塘這款遊戲吧,。。。。。。,當時玩着還行,但是懶得動手去解,就開始了輔助開發之路。
- 在此之前,有過一次《資料結構》的課程設計,選的是八數位問題。利用了廣度優先搜尋,就是周遊所有可能,當然加入些許優化(如雙向搜尋)。沒有選擇深度搜尋,也是為了找出最優解。當然網上還是有很多其他解法。
- 鑒于塊的操作限制略高, 這裡我也就使用了廣度優先搜尋的思想(其他我也不會啊_(:з」∠)_ )純小白。
x01_淺塘遊戲規則簡介
- 下面圖中有很多橫着的豎着的塊,還有個紅色的魚塊,通過移動改變塊的位置,來使紅色的魚塊通過右邊出口就算通關。
- 淺塘目前有兩種遊戲模式,一種不限操作步數(滑動一次,距離無要求),另一種需要在要求步數内完成,但要求步數也不是最優步數來為難玩家,但使用了最少步數肯定還是會有獎勵的ヽ(・ω・´メ)。那麼這個部落格就是來求最優解的。
x02_實作目标
- 搜尋最優解,并自動移動快,來通關。如下圖
[外鍊圖檔轉存失敗(img-4UWlV3PQ-1568031279830)(https://img-blog.csdn.net/20170630013048453?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzcyOTkyNDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
x03_開發前的功能實作分析
- 安卓端實作懸浮窗操作
- 安卓截屏實作
- 使用資料結構表示正方形内所有魚塊資訊------------封裝成類
- 解析遊戲螢幕所有塊的資訊---------包裝成類對象
- 伺服器端的搜尋算法
- 搜尋過的解存放進資料庫
- 用戶端與伺服器端的通信 ---------- 解析完成後,發送至伺服器搜尋并将結果傳回至用戶端
- 安卓端模拟滑動操作
ps:為什麼選擇C/S模式,在開發安卓端前已使用C++寫過這個算法,步數很多也能輕易解出,此時還不是最優解,最優解在開發伺服器端後加的。本想直接移植到安卓本機運作,卻發現運作效率不能滿足需求,步數少還可以,多了就撒手不幹解不出了。利用這次機會,先練練手。
x04_功能具體實作
- 實作懸浮窗
- 安卓截屏實作
- 資料結構表示
- 解析遊戲魚塊布局
- 搜尋算法
- C/S通信
- 安卓模拟螢幕操作
GitHub:
- Client:PondPlug
- Server:PondPlugServer
停更 -------- 17.7.1