【问题标题】:Arranging objects in random rows and columns在随机行和列中排列对象
【发布时间】:2021-03-01 08:19:03
【问题描述】:
    private void InitialSetup()
    {
        AddPiece(whiteRook, white, 0, 0);
        AddPiece(whiteKnight, white,1,2);
        AddPiece(whiteBishop, white,2,0);
        AddPiece(whiteQueen, white, 3,4);
        AddPiece(whiteKing, white, 4, 6);
        AddPiece(whiteBishop, white,5,0);
        AddPiece(whiteKnight, white,6,3);
        AddPiece(whiteRook, white, 7, 6);
    }
 
    public void AddPiece(GameObject prefab, Player player, int col, int row)
    {
        GameObject pieceObject = board.AddPiece(prefab, col, row);

        player.pieces.Add(pieceObject);
        pieces[col, row] = pieceObject;
    }

8 列 6 行

我有 48 个游戏对象,我希望它们在每次游戏开始时随机排列成行和列,但是如何使用 addPiece 方法做到这一点?

【问题讨论】:

    标签: c# list random


    【解决方案1】:

    使用以下:

               Random rand = new Random();
                //create an array from 0 to 47 with each number occurring once
                int[] randomNumbers = Enumerable.Range(0, 48)
                    .Select(x => new { x = x, rand = rand.Next() })
                    .OrderBy(x => x.rand)
                    .Select(x=> x.x)
                    .ToArray();
                int[,] matrix = new int[6,8];
                for (int i = 0; i < 48; i++)
                {
                    //rows and columns start at index zero
                    int row = randomNumbers[i] / 8;
                    int col = randomNumbers[i] % 8;
                    matrix[row, col] = i;
                }
    

    【讨论】:

    • 谢谢你的回答,我不明白你写的怎么用add Piece方法
    • 加片方法不是我写的。我只编写了将随机数添加到矩阵的代码作为示例。我更新了将数字 0 到 47 并随机放入数组中的代码。 randomNumber 的第一个索引包含 30。这意味着第一个片段将进入第 3 行 (30/8) 和第 6 列 (30 % 8),其中行和列从零开始。
    • 好的,非常感谢..我需要为这个方法做更多的工作
    • 您将行和列传递给方法,因此在您调用方法获取行和列之前将使用我的代码。
    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 2019-02-14
    • 2021-07-10
    • 2012-09-09
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多