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; }