功能分类:休闲益智
支持平台:Android
运行环境:Android
开发语言:Java
开发工具:Ecppse
源码大小:5.43MB
源码下载地址:http://down.51cto.com/data/1975239
源码简介
一款过去比较流行的五子消除游戏源码。早期研究过,希望有兴趣的朋友们可以一起研究+探讨一下。
源码运行截图
游戏Splash界面
游戏初始双方对阵
游戏成功时,计分,并且控件消失
源码片段:
- //游戏涉及到的部分算法片段
- /**
- * 宽度优先搜索方法
- * @param from 开始点
- * @param to 结束点
- * @param beads 珠子二维数组
- * @return
- */
- private boolean isLink(Point from, final Point to, Bead[][] beads) {
- // 第一步:记录走过的点
- invalidPoints.add(from);
- // 第二步:获取上、右、左、下四个点。
- Point[] points = {
- new Point(from.x, from.y - 1),
- new Point(from.x, from.y + 1),
- new Point(from.x - 1, from.y),
- new Point(from.x + 1, from.y)
- };
- // 第三步:判断四个点是否有效或者是目的点。
- List<point> temp = new ArrayList<point>();
- for (Point p : points){
- // 是不是到了目地点
- if (p.equals(to)){
- pathPoints.add(p);
- return true;
- }
- if (isCheck(p, beads)){
- temp.add(p);
- }
- }
- // 第四步:判断有效点是否全部占完。
- if (temp.isEmpty()) return false;
- // 第五步:对有效点进按最短路径排序。
- Collections.sort(temp, new Comparator<point>() {
- @Override
- public int compare(Point p1, Point p2) {
- double r1 = Math.sqrt((p1.x - to.x) * (p1.x - to.x) + (p1.y - to.y) * (p1.y - to.y));
- double r2 = Math.sqrt((p2.x - to.x) * (p2.x - to.x) + (p2.y - to.y) * (p2.y - to.y));
- return r1 < r2 ? -1 : 0;
- }
- });
- // 第六步:递归找出有效点及到搜索到目的点或有效点全部搜索完毕。
- for (Point p : temp){
- boolean flag = isLink(p, to, beads);
- if (flag){
- pathPoints.add(p);
- return true;
- }
- }
- return false;
- }</point></point></point>