【问题标题】:Matchmaking system N vs N from list配对系统 N vs N 来自列表
【发布时间】:2019-10-08 05:33:21
【问题描述】:

我正在尝试制作一个匹配系统... 它将如何工作?

已连接的用户将出现在列表中,稍后他们将随机选择,例如: 3 对 3 等等,取决于偶数玩家

我有类似的东西

昵称列表:

List<string> list = new List<string>() { "Bob", "Michael", "Adrian", "Daniel", "Denzel", "Peter" }; //etc

稍后我会尝试从列表中选择它们:

  foreach (var item in list.OrderBy(f => Guid.NewGuid()).Distinct().Take(list.Count() / 2 ))
    {
     Console.WriteLine(item);
    }

现在它会随机列出其中的 3 个,但我怎样才能列出下一个会输出如下内容的刻痕:

丹泽尔·迈克尔·彼得
对比
丹尼尔·鲍勃·阿德里安

【问题讨论】:

  • 你最好只是洗牌,然后选择第一个 N,然后是另一个 N,依此类推。将随机化与选择分开。就像一副纸牌。您将牌组洗牌,然后按照新的随机顺序播放它们。

标签: c# list unity3d arraylist foreach


【解决方案1】:

试试这个代码:

    List<string> list = new List<string>() { "Bob", "Michael", "Adrian", "Daniel", "Denzel", "Peter" }; //etc
    var milist = list.OrderBy(f => Guid.NewGuid()).Distinct().ToList();
    string firstTeam = "";
    foreach (var item in milist.Take(list.Count() / 2))
    {
        firstTeam += item + ", ";
    }
    firstTeam = firstTeam.Substring(0, firstTeam.Length - 2);
    string secondTeam = "";
    foreach (var item in milist.Skip(list.Count() / 2))
    {
        secondTeam += item + ", ";
    }
    secondTeam = secondTeam.Substring(0, secondTeam.Length - 2);
    Console.WriteLine(firstTeam + " vs " + secondTeam);
    Console.ReadKey();

只要确保玩家人数是偶数即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2013-11-27
    相关资源
    最近更新 更多