疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

android开发—连连看开发技巧(13)


 

android开发—连连看开发技巧(13)

定义获取通道的工具方法

        这里所谓的通道,指的是一个方块上、下、左、右四个方向上空白方块,图18.10显示了一个方块四周的通道:
图18.10 方块四周的通道
        下面是获取某个坐标点四周通道的四个方法:
程序清单:codesLinksrcorgcrazyitlinkoardimplGameServiceImpl.java
/**
 * 给一个Point对象,返回它的左边通道
 * @param p
 * @param pieceWidth piece图片的宽
 * @param min 向左遍历时最小的界限
 * @return 给定Point左边的通道
 */
private List getLeftChanel(Point p, int min, int pieceWidth)
{
List result = new ArrayList ();
// 获取向左通道, 由一个点向左遍历, 步长为Piece图片的宽
for (int i = p.x - pieceWidth; i >= min; i = i - pieceWidth)
{
// 遇到障碍, 表示通道已经到尽头, 直接返回
if (hasPiece(i, p.y))
{
return result;
}
result.add(new Point(i, p.y));
}
return result;
}
 /**
 * 给一个Point对象, 返回它的右边通道
 * @param p
 * @param pieceWidth
 * @param max 向右时的最右界限
 * @return 给定Point右边的通道
 */
private List getRightChanel(Point p, int max, int pieceWidth)
{
List result = new ArrayList ();
 // 获取向右通道, 由一个点向右遍历, 步长为Piece图片的宽
for (int i = p.x + pieceWidth; i <= max; i = i + pieceWidth)
{
// 遇到障碍, 表示通道已经到尽头, 直接返回
if (hasPiece(i, p.y))
{
return result;
}
result.add(new Point(i, p.y));
}
return result;
}
/**
 * 给一个Point对象, 返回它的上面通道
 * @param p
 * @param min 向上遍历时最小的界限
 * @param pieceHeight
 * @return 给定Point上面的通道
 */
private List getUpChanel(Point p, int min, int pieceHeight)
{
List result = new ArrayList ();
// 获取向上通道, 由一个点向右遍历, 步长为Piece图片的高
for (int i = p.y - pieceHeight; i >= min; i = i - pieceHeight)
{
// 遇到障碍, 表示通道已经到尽头, 直接返回
if (hasPiece(p.x, i))
{
// 如果遇到障碍, 直接返回
return result;
}
result.add(new Point(p.x, i));
}
return result;
/**
 * 给一个Point对象, 返回它的下面通道
 * @param p
 * @param max 向上遍历时的最大界限
 * @return 给定Point下面的通道
 */
private List getDownChanel(Point p, int max, int pieceHeight)
{
 List result = new ArrayList ();
// 获取向下通道, 由一个点向右遍历, 步长为Piece图片的高
for (int i = p.y + pieceHeight; i <= max; i = i + pieceHeight)
{
// 遇到障碍, 表示通道已经到尽头, 直接返回
if (hasPiece(p.x, i))
{
// 如果遇到障碍, 直接返回
return result;
}
result.add(new Point(p.x, i));
}
return result;
}(未完.摘自[疯狂android讲义].李刚)