Esempio n. 1
0
bool GameScene::linkTemp(cocos2d::Vec2 v1, cocos2d::Vec2 v2)
{
    if (v1.equals(v2)) {
        return false;
    }

    
    // 判断点击的两个点是不是图案一致
    if (mMap[(int)v1.x][(int)v1.y] == mMap[(int)v2.x][(int)v2.y])
    {
        // 直连
        if (linkD(v1, v2)) {
            return true;
        }
        
        // 一个拐角,对角可直连
        auto p = Vec2(v1.x, v2.y);
        if (mMap[(int)p.x][(int)p.y] == 0) {
            if (linkD(v1, p) && linkD(p, v2)) {

                return true;
            }
        }
        
        // 一个拐角,对角可直连
        p = Vec2(v2.x, v1.y);
        if (mMap[(int)p.x][(int)p.y] == 0) {
            if (linkD(v1, p) && linkD(p, v2)) {

                return true;
            }
        }
        
        // X扩展,判断是否有可直连的点
        expandX(v1, p1E);
        expandX(v2, p2E);
        
        for (auto pt1 : p1E) {
            for (auto pt2 : p2E) {
                if (pt1.x == pt2.x) {
                    if (linkD(pt1, pt2)) {
                        return true;
                    }
                }
            }
        }
        
        // Y扩展,判断是否有可直连的点
        expandY(v1, p1E);
        expandY(v2, p2E);
        for (auto pt1 : p1E) {
            for (auto pt2 : p2E) {
                if (pt1.y == pt2.y) {
                    if (linkD(pt1, pt2)) {
                        return true;
                    }
                }
            }
        }
        
        
        return false;
    }
    
    
    return false;
}