gpt4 book ai didi

c# - 如何切换二维数组中元素的位置?

转载 作者:行者123 更新时间:2023-11-30 21:30:41 24 4
gpt4 key购买 nike

所以我对 C# 比较陌生,我正在尝试制作一个图片拼图游戏,其中图像被分成 block 。我遇到的麻烦是找到一种方法让 2D 数组的元素改变位置,这是为了让我可以为游戏添加随机洗牌和玩家控制。例如,左上角是 0,右下角是 9,我希望它们交换位置。

int[,] grid = new int[4, 4];

for (int y = 0; y < 4; y++)
{
Console.WriteLine("*********************");

for (int x = 0; x < 4; x++)
{
grid[x, y] = x * y;

Console.Write("|" + grid[x, y] + "| ");
}

Console.WriteLine();
}

Console.WriteLine("*********************");

Console.ReadKey();

到目前为止,我已将其工作到可以创建数组值网格的地步,我对如何让值切换位置的想法感到困惑。

最佳答案

我们可以为此制作一个辅助函数。它的工作方式是我们将一个位置的值存储在一个临时变量中,这样它就不会丢失,然后用另一个位置替换那个位置。然后我们将临时变量的值插入另一个位置。

我们将 int[,] 作为 ref 传入,这样当您在网格上调用 Swap 时,实际的网格会发生变化在函数之外。

    public static void Swap(int x1, int y1, int x2, int y2, ref int[,] grid)
{
int temp = grid[x1, y1]; // store the value we're about to replace
grid[x1, y1] = grid[x2, y2]; // replace the value
grid[x2, y2] = temp; // push the stored value into the other spot
}

使用示例:

        int[,] grid = new int[4, 4];
grid[0, 0] = 5;
grid[1, 1] = 7;
Console.WriteLine(" " + grid[0, 0] + " | " + grid[1, 1]);
Swap(0, 0, 1, 1, ref grid);
Console.WriteLine(" " + grid[0, 0] + " | " + grid[1, 1]);

给予:

 5 | 7
7 | 5

关于c# - 如何切换二维数组中元素的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54040836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com