我正在构建一个类似于奥赛罗的益智游戏,并且我想构建一个帮助玩家学习游戏的教程模式。为此,我需要检测连续值的水平线、垂直线和对角线(在本例中为白色或黑色),以向玩家展示他们可以做出的下一步可能的动作......
我正在用 C++ 构建它,但我真的只对可以使用 2D 矩阵(或 1D 数组,如果它可以简化事情)检测线条的一般策略感兴趣。
我目前的策略非常简单,这让我怀疑这是最慢的方法......
for y = 0 to 7
for x = 0 to 7
cell = find the first unoccupied cell (no color)
inspect the 8 surrounding cells to see if they contain a color
if so, trace the cells in that direction to see if it forms a line of at least 3 contiguous colors
if so, store the coords of those cells in a list of detected lines
其他想法?
提前感谢您的智慧!