Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按随机行和列排列对象_C#_List_Random - Fatal编程技术网

C# 按随机行和列排列对象

C# 按随机行和列排列对象,c#,list,random,C#,List,Random,8列6行 我有48个游戏对象,我希望它们在每次游戏开始时都以随机的行和列排列,但如何使用addPiece方法实现这一点?使用以下方法: private void InitialSetup() { AddPiece(whiteRook, white, 0, 0); AddPiece(whiteKnight, white,1,2); AddPiece(whiteBishop, white,2,0); AddPiece(w

8列6行

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

使用以下方法:

    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;
    }

Random rand=new Random();
//创建一个从0到47的数组,每个数字出现一次
int[]randomNumbers=可枚举范围(0,48)
.Select(x=>new{x=x,rand=rand.Next()})
.OrderBy(x=>x.rand)
.选择(x=>x.x)
.ToArray();
int[,]矩阵=新的int[6,8];
对于(int i=0;i<48;i++)
{
//行和列从索引0开始
int行=随机数[i]/8;
int col=随机数[i]%8;
矩阵[行,列]=i;
}

谢谢你的回答,我不明白如何使用你用add-Piece方法写的东西我没有写add-Piece方法。作为示例,我只编写了将随机数添加到矩阵中的代码。我更新了代码,将数字0到47随机放入一个数组中。随机数的第一个索引包含30。这意味着第一部分将进入第3行(30/8)和第6列(30%8),其中行和列从零开始。好的,非常感谢。。我需要为方法做更多的工作,因为您正在将行和列传递给方法,所以在调用该方法获取行和列之前,将使用我的代码。
           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;
            }