Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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#_Arrays_Jagged Arrays - Fatal编程技术网

C# 如何处理一副牌?

C# 如何处理一副牌?,c#,arrays,jagged-arrays,C#,Arrays,Jagged Arrays,我正在尝试创建一个应用程序来处理一副牌。我已经制作了牌组,也洗牌了牌组,但是我在处理给x号玩家时遇到了麻烦 这是我到目前为止所拥有的 class Dealer { private string[] suffeledDeck = new string[52]; private static string[] playerOne = new string[26]; private static string[] playerTwo = new string[26];

我正在尝试创建一个应用程序来处理一副牌。我已经制作了牌组,也洗牌了牌组,但是我在处理给x号玩家时遇到了麻烦 这是我到目前为止所拥有的

class Dealer
{
    private string[] suffeledDeck = new string[52];
    private static string[] playerOne = new string[26];
    private static string[] playerTwo = new string[26];
    private static string[] playerThree = new string[26];
    private static string[] playerFour = new string[26];
    private static string[] playerFive = new string[26];
    private static string[] playerSix = new string[26];
    private static string[][] allplayers = new string[][] { playerOne, playerTwo,playerThree,playerFour,playerFive,playerSix };

    private int counter = 0;
    private int playerCount = 6;

    public Dealer(string[] deck)
    { 
        suffeledDeck = deck;
    }

    private void deal()
    {
        for (int i = 0; i < suffeledDeck.Length; i++)
        {
            allplayers[counter][0] = suffeledDeck[i];
            counter++;
            if (counter == playerCount)
            {
                counter = 0;
            }
        }
    }
}
class经销商
{
私有字符串[]suffeledDeck=新字符串[52];
私有静态字符串[]playerOne=新字符串[26];
私有静态字符串[]playerTwo=新字符串[26];
私有静态字符串[]playerThree=新字符串[26];
私有静态字符串[]playerFour=新字符串[26];
私有静态字符串[]playerFive=新字符串[26];
私有静态字符串[]playerSix=新字符串[26];
私有静态字符串[][]allplayers=新字符串[][{playerOne,playerTwo,playerTree,playerFour,playerFive,playerSix};
专用整数计数器=0;
专用整数播放计数=6;
公共交易商(字符串[]甲板)
{ 
萨福克甲板=甲板;
}
私人无效交易
{
for(int i=0;i

}使用
列表
而不是
字符串[]
这里有一种方法,但正如Selman22建议的那样,我可能会使用
列表

var sourceIndex = 0;
var handCount = 0;
while (sourceIndex < shuffledDeck.Length)
{
    for (var playerIndex = 0; playerIndex < allplayers.Length; playerIndex++)
    {
        allplayers[playerIndex][handCount] = shuffledDeck[sourceIndex++];
        if (sourceIndex == shuffledDeck.Length)
            break;
    }
    handCount++;
}

似乎你总是只给每个玩家一张牌
allplayers[counter][0]=suffeledDeck[i]
始终覆盖到最后一张为止的第一张牌deck@X.Li谢谢你改进帖子。但请只做实质性的修改。在您的更改获得批准之前,至少需要3个人对其进行审查。这需要审稿人的时间。值得一试,并将次要编辑留给有足够代表性的用户进行编辑,无需批准。谢谢。@Taifun谢谢你告诉我这个。我不知道编辑背后的机制,直到我检查了我被捆扎的原因。一旦我有足够的代表,我将继续修复小错误。谢谢大家的时间。你不是指
列表[]
?你是指
列表
?你是指包含
列表的
列表
?你能给我一个例子,让我们列出一个列表吗?有没有一个简单的方法可以让我在1-6名玩家之间进行选择,并根据玩家数量进行交易selcted@user2552211当然使用上一个代码示例中的初始化代码,并将playerCount设置为介于1和6之间的不同值。如果您想从用户那里获取数字,那么这是一个完全不同的主题,因为它取决于这是什么类型的应用程序(控制台、web、winforms、wpf等)。
class Dealer
{
    private List<string> shuffledDeck= new List<string>();
    private static List<string> playerOne = new List<string>();
    private static List<string> playerTwo = new List<string>();
    private static List<string> playerThree = new List<string>();
    private static List<string> playerFour = new List<string>();
    private static List<string> playerFive = new List<string>();
    private static List<string> playerSix = new List<string>();
    private static List<List<string>> allplayers = new List<List<string>> { playerOne, playerTwo,playerThree,playerFour,playerFive,playerSix };

    private int counter = 0;
    private int playerCount = allplayers.Count;
    public Dealer(string[] deck)
    { 
        shuffledDeck= deck;
    }
    private void deal()
    {
        while (shuffledDeck.Count > 0)
        {
            foreach (var player in allplayers)
            {
                player.Add(shuffledDeck[shuffledDeck.Length - 1];
                shuffledDeck.RemoveAt(shuffledDeck.Length - 1];
                if (shuffledDeck.Length == 0)
                    break;
            }
        }
    }
}
private static int playerCount = 6;
private static List<List<string>> allplayers =
    Enumerable.Range(0, playerCount).Select(i => new List<string());