我希望能够在扫雷应用程序中存储代表地雷邻居的坐标对(x,y)。 HW Instructions
我设置了一个if语句来检查是否首先存在地雷。我开始创建邻居坐标列表。
private List<Tuple<int,int>> getneighbors(int x, int y)
{
if (isMinePresent(x,y) == true)
{
List<Tuple<int, int>> neighbors = new List<Tuple<int, int>> () {x+1,y},{x+1,y+1} //etc;
{
}
}
}
}
我想列出几对坐标的列表-每个坐标代表一个邻居。不幸的是,我遇到一个错误:“ C#不包含带有2个参数的构造函数。”
答案 0 :(得分:0)
此方法获取坐标并返回所有有效的相邻坐标。
这里需要回答的问题是如何确定有效邻居是什么?为此,需要一点逻辑-正方形在其行,前一行和下一行具有邻居。可能最多可能有8个邻居。
看看这个Stackblitz并试一试。我用TypeScript编写的,但是这些概念直接适用于C#。
如果邻居的坐标在起始坐标之一之内但不超出范围,则将其定义为“有效”。
getNeighbors(inX: number, inY: number) {
// Get proper bounds
var lowerX = Math.max(0, inX-1);
var upperX = Math.min(inX+1, this.size);
var lowerY = Math.max(0, inY-1);
var upperY = Math.min(inY+1, this.size);
var xCoords = Enumerable.rangeTo(lowerX, upperX);
var yCoords = Enumerable.rangeTo(lowerY, upperY);
var result = new Array<Coordinate>();
xCoords.forEach(x => {
yCoords.forEach(y => {
if (x !== inX || y !== inY) {
result.push({x, y});
}
});
});
return result;
}