java 实现 连连看的算法

前几天要写一程序 连连看 。上网查了很多。总结一下。

算法大致分为2种。

(1)  图的广度搜索算法(这边就不讲了)

 (2)当连接两张图片的线条拐点不超过 2个的时候,此时分为3种情况。没有拐点,只有一个拐点,有两个拐点。

 

 

      我们可以把连连看中的图片坐标看做是一个2维坐标,就用(x,y)坐标。红色的字体就是放图片的位置。黑色的就相当于那个边框。

 

 (1)当图片之间没有拐点的时候,只要检测之间有咩有其他图片

  (2)当有1个拐点的时候,假设两张图片的位置是(x01,y01)(x02,y02),只要找出那个拐点的坐标就可以了 (x01,y02)或(x02,y01)看看这个点是否存在

  (3)当有2个拐点的时候,只要找出两个拐点的坐标就可以了。以(x01,y01)为标准,分别以这个点的左右上下方向寻找 。下面是用java 实现的代码,这个是我从程序中摘的,可能里面会有与算法无关的东西。

package com.play;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;

public class alg {

 /**
  * @param args
  */
 
 public static int[][]  map;
 private  int numCol,numRow;
 
 //路线图
 private Point   point1,point2,point3,point4;
 private int pointX=0,pointY=0;
 
 Point push01=new Point();
 Point push02=new Point();
 
 private  int countPoint=-1;
 alg(int col,int row)
 {
  numCol=col+2;
  numRow=row+2;
  map=new int[numRow][numCol];
  int i,j;
  for(i=0;i<numRow;i++)
   for(j=0;j<numCol;j++)
    map[i][j]=1;
  for(i=0;i<numCol;i++)
  { map[0][i]=0;
     map[numRow-1][i]=0;
  }
  
  for(i=0;i<numRow;i++)
  {
   map[i][0]=0;
   map[i][numCol-1]=0;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值