我正在尝试完成一个游戏,因为我正在写一个peg纸牌游戏。
我把所有的动作和碎片都移除了。 每件作为Ellipse UI Ellement保存在2d阵列中,当拍摄一件时,它将被替换为边框Ui Element。
我已经开始使用从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是正在检查的椭圆。 下方,左侧和右侧的圆圈将被忽略。 选择Cirle 2为Square 3为空。 这将产生有效的移动,因此游戏将继续。 如果没有找到有效的移动,游戏将结束。
我不知道如何继续这个,我想把方法调用放在一个嵌套的for循环中来遍历每个元素,但我认为它效率很低。
var results = AdjacentElements(grid, i, j);
foreach (var result in results)
//condition here
答案 0 :(得分:2)
我认为我真的不明白你想做什么。但是,是的,你可以做嵌套循环。但有时它更容易戳它
给定一些数组x,y
var x = 23;
var y = 3;
<强>〔实施例强>
var checks = List<Point>();
checks.Add(new Point(x+1,y));
checks.Add(new Point(x-1,y));
checks.Add(new Point(x,y+1));
checks.Add(new Point(x,y-1));
foreach(var check in checks)
//If Bounds check
//do what you need to do