Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class ArrayUtilities
- {
- public static void Shift<T>(T[,] array, int x, int y)
- {
- ShiftHorizontal(array, x);
- ShiftVertical(array, y);
- }
- public static void ShiftHorizontal<T>(T[,] array, int x)
- {
- while (x != 0)
- {
- var a = Math.Sign(x);
- switch (a)
- {
- case -1:
- ShiftLeft(array);
- break;
- case 1:
- ShiftRight(array);
- break;
- }
- x -= a;
- }
- }
- public static void ShiftVertical<T>(T[,] array, int y)
- {
- while (y != 0)
- {
- var a = Math.Sign(y);
- switch (a)
- {
- case -1:
- ShiftUp(array);
- break;
- case 1:
- ShiftDown(array);
- break;
- }
- y -= a;
- }
- }
- public static void ShiftLeft<T>(T[,] array)
- {
- for (var y = 0; y < array.GetLength(1); y++)
- {
- var end = array[0, y];
- for (var x = 0; x < array.GetLength(0) - 1; x++)
- {
- array[x, y] = array[x + 1, y];
- }
- array[array.GetLength(0) - 1, y] = end;
- }
- }
- public static void ShiftRight<T>(T[,] array)
- {
- for (var y = 0; y < array.GetLength(1); y++)
- {
- var end = array[array.GetLength(0) - 1, y];
- for (var x = array.GetLength(0) - 1; x >= 1; x--)
- {
- array[x, y] = array[x - 1, y];
- }
- array[0, y] = end;
- }
- }
- public static void ShiftUp<T>(T[,] array)
- {
- for (var x = 0; x < array.GetLength(0); x++)
- {
- var end = array[x, 0];
- for (var y = 0; y < array.GetLength(1) - 1; y++)
- {
- array[x, y] = array[x, y + 1];
- }
- array[x, array.GetLength(1) - 1] = end;
- }
- }
- public static void ShiftDown<T>(T[,] array)
- {
- for (var x = 0; x < array.GetLength(0); x++)
- {
- var end = array[x, array.GetLength(1) - 1];
- for (var y = array.GetLength(1) - 1; y >= 1; y--)
- {
- array[x, y] = array[x, y - 1];
- }
- array[x, 0] = end;
- }
- }
- }
Add Comment
Please, Sign In to add comment