兩個位置的能否消除,有三種情況:
1.一條直線連線,這種也是最簡單的一種消除方法
bool linkinline(cpoint p1, cpoint p2)
} }else if (p1.x == p2.x) // 在同一列
}} else // 不在同一直線
return b;
}2.兩條直線消除,即經過乙個拐點。
兩個頂點經過兩條直線連線有兩種情況,即兩個拐點分兩種情況。
bool onecornerlink(cpoint p1, cpoint p2)
else
}for (int i = min_y + 1; i < max_y; i++)
}if (b)
}if (game->map[x2][y2] == 0) // 拐點2位置無
}for (int i = min_y + 1; i < max_y; i++)
}if (b)
}} return b;
}3.三條直線消除,即經過兩個拐點。
這是可以通過橫向掃瞄和縱向掃瞄,掃瞄的時候可以得到連個拐點,判斷兩個頂點經過這兩個拐點後是否能消除
bool twocornerlink(cpoint p1, cpoint p2)
}if (b)}}
if (b)}}
}if (b) // 如果存在路線,返回true
} }// 掃瞄行結束
for (int i = 0; i < max_x; i++) // 掃瞄列
}if (b)}}
if (b)}}
if (b) // 如果存在路線,返回true
}} // 掃瞄列結束
return b;
}完整原始碼已上傳至我的github
本文標題: mfc實現連連看遊戲之消子演算法
本文位址:
連連看演算法的實現
圖 0,0,0,0,0,0,0,0,0,0 0,8,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,0,0,...
連連看演算法的實現
連連看演算法的實現 收藏 圖 0,0,0,0,0,0,0,0 0,0 0,8,0,0,0,0,0,0 0,0 0,0,0,0,0,0,0,0 0,0 0,0,0,0,0,0,0,0 0,0 0,0,0,0,0,0,0,0 0,0 0,0,0,0,0,0,0,0 0,0 0,0,0,0,0,0,0,0...
JAVA之連連看演算法
連連看連線方式的型別 l 兩點直線法 l 三點直角折線法 l 四點方形折線法 l 四點梯形折線法 下面對上面四種型別進行細緻劃分講解 1 兩點直線法的連線型別包括 上,下,左,右 2 三點直角折線法包括 上左,上右,下左,下右,左上,右上,左下,右下 3 四點方形折線法包括 上左下,上右下,下左上,...