x00_闲谈
浅塘这款游戏吧,是在大学时一个高中心仪女生推荐的,当时玩着还行,但是懒得动手去解,就开始了辅助开发之路。
在此之前,有过一次《数据结构》的课程设计,选的是八数码问题。利用了广度优先搜索,就是遍历所有可能,当然加入些许优化(如双向搜索)。没有选择深度搜索,也是为了找出最优解。当然网上还是有很多其他解法。
- 鉴于块的操作限制略高, 这里我也就使用了广度优先搜索的思想(其他我也不会啊(:з」∠) )纯小白。
x01_浅塘游戏规则简介
下面图中有很多横着的竖着的块,还有个红色的鱼块,通过移动改变块的位置,来使红色的鱼块通过右边出口就算通关。
浅塘目前有两种游戏模式,一种不限操作步数(滑动一次,距离无要求),另一种需要在要求步数内完成,但要求步数也不是最优步数来为难玩家,但使用了最少步数肯定还是会有奖励的ヽ(・ω・´メ)。那么这个博客就是来求最优解的。
x02_实现目标
- 搜索最优解,并自动移动快,来通关。如下图
x03_开发前的功能实现分析
- 安卓端实现悬浮窗操作
- 安卓截屏实现
- 使用数据结构表示正方形内所有鱼块信息————封装成类
- 解析游戏屏幕所有块的信息———包装成类对象
- 服务器端的搜索算法
- 搜索过的解存放进数据库
- 客户端与服务器端的通信 ———- 解析完成后,发送至服务器搜索并将结果返回至客户端
- 安卓端模拟滑动操作
ps:为什么选择C/S模式,在开发安卓端前已使用C++写过这个算法,步数很多也能轻易解出,此时还不是最优解,最优解在开发服务器端后加的。本想直接移植到安卓本机运行,却发现运行效率不能满足需求,步数少还可以,多了就撒手不干解不出了。利用这次机会,先练练手。
x04_功能具体实现
- 实现悬浮窗
- 安卓截屏实现
- 数据结构表示
- 解析游戏鱼块布局
- 搜索算法
- C/S通信
- 安卓模拟屏幕操作
GitHub:
- Client:PondPlug
- Server:PondPlugServer
停更 ——– 17.7.1