我目前正在創建一個2d數組來表示一個網格上要放置的遊戲元素。我希望能夠總結特定的元素塊,但似乎無法讓我的函數正常工作,並且我懷疑有更簡單的方法來完成此操作。陣列的二維數組中選定的元素的總和(框形?)
例子:
int[6,6] myArray = {{2,1,4,3,1,2,5}
,{4,2,3,3,1,2,4}
,{3,4,9,1,2,7,5}
,{1,6,2,1,3,4,2}
,{2,1,4,6,2,1,0}
,{6,2,8,1,6,5,7}
,{7,6,10,3,9,7,2}};
目前代碼:
int BoxSum(int x, int y, int x1, int y1, int [,] arrayM) {
int Results = 0;
int xmod = (x1 - x)/Mathf.Abs (x1 - x);
int ymod = (y1 - y)/Mathf.Abs (y1 - y);
if (x1 > x & y1 > y) {
for (int ix = x; ix <= x1; ix ++) {
for (int iy = y; iy <= y1; iy++) {
Results += arrayM [ix, iy];
}
}
}
if (x1 > x & y1 < y) {
for (int ix = x; ix <= x1; ix ++) {
for (int iy = y; iy <= y1; iy--) {
Results += arrayM [ix, iy];
}
}
}
if (x1 < x & y1 < y) {
for (int ix = x; ix <= x1; ix --) {
for (int iy = y; iy <= y1; iy--) {
Results += arrayM [ix, iy];
}
}
}
if (x1 < x & y1 > y) {
for (int ix = x; ix <= x1; ix ++) {
for (int iy = y; iy <= y1; iy--) {
Results += arrayM [ix, iy];
}
}
}
return Results;
}
所以,如果我進入:
(BoxSum(1,1,5,5,myArray));
或
(BoxSum(5,5,1,1,myArray));
我想爲兩者都獲得86(獨立於我是否在命令中輸入x,y或x1,y1)。現在他們給我不同的結果,86和0.
謝謝你的幫助!
很好的答案。我會使用Math.Min和Math.Max。 – phoog
工作完美!謝謝! – user3470214