【问题标题】:How to change the values in two dimension array如何更改二维数组中的值
【发布时间】:2018-04-17 16:30:46
【问题描述】:

我被这个使用 c# 的 Unity 框架编码的二维数组所困扰。我正在尝试使用智能代理创建 Checker 游戏。所以我试图得到所有的碎片并传递给Alpha Beta算法并获得最大数量的对手方。但为了做到这一点,我必须检查我板上的每一块。我在我的游戏中使用 8by8 板。所以我用了

Piece[,] pieces = new Pieces[8,8];

代码以存储片段。现在我想换一件并取回这些碎片。 我尝试了多种方法并进行了实验,但我找不到任何方法来获取此数组并更改一个通用对象并检索更改后的列表。

请帮我解决这个问题。提前致谢。

我在这里写下了我的实验。关于这件事有什么建议还是我做错了什么?....

internal static void TryMoveInImaginaryWay(Piece[,] piece)
{
    int x = 0;
    int y =2;
    int x1 = 1;
    int y1 = 3;

    Moves move = new Moves();
    move.X = x;
    move.Y = y;
    move.X1 = x1;
    move.Y1 = y1;

    // Copping the pieces state
    Piece p = piece[x, y];

    //I am creating a list with those pieces
    List<Piece> temppiecelist = new List<Piece>();

    foreach (Piece pi in piece)
    {
        if (pi == p)
        {
            piece[x1, y1] = p;
            temppiecelist.Add(null);
        }
        else
        {
            temppiecelist.Add(pi);
        }
    }

    Piece[,] piek = temppiecelist; // can't convert it says Cannot Implicitly convert type "System.Collection.Generic.List<Piece>' to Piece[*,*]'"

    // I know i can't convert like this, but any ideas.
    //Piece[,] piek = new Piece[8, 8];

我在问,有没有办法改变 Piece[,] 数组列表值。我想要与输出相同的格式。

【问题讨论】:

  • java 标签已移除。请不要使用与您的问题或代码没有直接关系的标签。这可能会给您的问题带来负面关注,因为它会惹恼那些关注错误放置标签的人。
  • UnityScript标签也是如此,这是C#。
  • 感谢您通知我。 :)
  • 现在格式错误已经解决了,我还是不太明白你在问什么。
  • 你为什么要使用列表?我们无法弄清楚您在做什么或为什么要这样做,因此很难告诉您正确的做法是什么。

标签: c# arrays multidimensional-array


【解决方案1】:

看起来你正在尝试做的是复制棋盘,然后在棋盘上移动。

为什么你会得到一个我无法弄清楚的列表;是什么让您相信 List 是正确的解决方案?我有兴趣知道;通过了解人们为什么会对程序编写得出错误的结论,我可以帮助他们编写更好的程序。

要制作板的变异副本,只需复制板变异副本

internal static void TryMoveInImaginaryWay(Piece[,] original)
{
    int x0 = 0;
    int y0 = 2;
    int x1 = 1;
    int y1 = 3;
    Piece[,] copy = (Piece[,])original.Clone();
    copy[x1,y1] = copy[x0,y0];
    copy[x0,y0] = null;

你已经完成了。

【讨论】:

  • 你是对的。谢谢。是的,我只是一个开始,我的代码标准不是很好。谢谢@Eric
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 2018-08-29
  • 2020-07-29
相关资源
最近更新 更多