我正在努力完成一个我正在写的peg纸牌游戏的条件下的游戏。
我已经把所有的动作和片段都移除了。
每个工件作为椭圆UI元素保存在2d数组中,当获取工件时,它将替换为边界UI元素。
我已经开始使用从
Stackoverflow post
它扫描阵列元素周围的8个相邻正方形。
public static IEnumerable<T> AdjacentElements<T>(T[,] arr, int row, int column)
{
int rows = arr.GetLength(0);
int columns = arr.GetLength(1);
for (int j = row - 1; j <= row + 1; j++)
for (int i = column - 1; i <= column + 1; i++)
if (i >= 0 && j >= 0 && i < columns && j < rows && !(j == row && i == column))
yield return arr[j, i];
}
}
获取一个片段后调用的方法。
var results = AdjacentElements(grid, 3, 3);
foreach (var result in results)
Debug.WriteLine(result);
当它遇到一个椭圆时,它应该检查椭圆正上方、下方、左侧和右侧的正方形,目前是全部8个正方形,我只需要四个(顶部、底部、左侧和右侧)。
目前我正在使用网格参考3,3进行测试,它按预期打印出来,但所有8个方块都是如此。
如果四个正方形中的任何一个依次遇到椭圆,则直线上的下一个正方形应为边界,以便可能移动。
例如:
圆1是正在检查的椭圆。
下面、左侧和右侧的圆圈将被忽略。
当方块3为空时,选择圆环2。
这将产生一个有效的移动,因此游戏将继续。
如果没有找到有效的移动,游戏将结束。
我不知道如何继续,我想把方法调用放在一个嵌套的for循环中,遍历每个元素,但我认为这样做效率很低。
var results = AdjacentElements(grid, i, j);
foreach (var result in results)
//condition here