向数组添加2个单独的数字

时间:2016-12-07 22:46:12

标签: c#

对不起,这可能是一个愚蠢的问题,我正在学校学习c#,并想出了一个骰子滚动计划。 我遇到的问题不是收集滚动的2个骰子的总数,而是将它放入一个数组中,教师希望我们得到一对中每个骰子的数量,然后将它与第二对骰子进行比较。我已经设置了卷,但我不确定如何将每个数量的芯片放入阵列中。这是我到目前为止的代码。没有找到正确方向的答案。

这是我的代码(在Button的{​​{1}}点击事件处理程序中):

Form

2 个答案:

答案 0 :(得分:0)

由于您需要保留int数组,因此可以将int数组转换为类型为

的对象
public class Pair 
{
   public int FirstDie { get; set; }
   public int SecondDie { get; set; }
}

然后将每个玩家的数组转换为Pair类型的列表,如下所示:

public static List<Pair> ConvertToPairs(int[,] dieValues) 
{
   var query = from int item in dieValues
               select item;

   var p1Rolls = query.ToList();
   List<Pair> pairs = new List<Pair>( p1Rolls.Count );
   for( int i = 0; i < 4; i += 2 ) 
   {
      pairs.Add( new Pair() { FirstDie = p1Rolls[ i ], SecondDie = p1Rolls[ i + 1 ] } );
   }

   return pairs;
}

然后你可以使用Except来获得玩家1的滚动与玩家2的滚动来获得差异。以下是你将如何为玩家1这样做。我会让你找出玩家2.我在这个示例程序中有2个滚动。

class Program 
{
   static void Main(string[] args) 
   {

      int[,] dieValue1 = { { 1, 2 }, { 3, 4 } };
      int[,] dieValue2 = { { 1, 2 }, { 6, 4 } };



      var p1Rolls = ConvertToPairs( dieValue1 );
      var p2Rolls = ConvertToPairs( dieValue2 );

      foreach( var item in p1Rolls.Except( p2Rolls ) ) 
      {

         Console.WriteLine( "Player 1 has [{0}, {1}] which player 2 does not.", item.FirstDie, item.SecondDie );
      }

      var result = LoadComment( 1, null );
      Console.ReadKey();

   }

   public static List<Pair> ConvertToPairs(int[,] dieValues) 
   {
      var query = from int item in dieValues
                  select item;

      var p1Rolls = query.ToList();
      List<Pair> pairs = new List<Pair>( p1Rolls.Count );
      for( int i = 0; i < 4; i += 2 ) 
      {
         pairs.Add( new Pair() { FirstDie = p1Rolls[ i ], SecondDie = p1Rolls[ i + 1 ] } );
      }

      return pairs;
   }
}

请注意,您可以使用此Pair构造开始,每次滚动时,您都会为每个玩家创建其中一个。这样您就不需要所有这些阵列了。

答案 1 :(得分:-1)

将骰子卷存储为新对象。生成一个存储一对骰子的DiceRoll类,并具有ToString,Total的功能,并将一个DiceRoll与另一个DiceRoll进行比较。您甚至可以使用包含随机函数的默认构造函数,或者使用在其他位置生成的卷对的构造函数。将DiceRoll对象放入一个列表(IEnumerable)。

https://msdn.microsoft.com/en-us/library/ms173154.aspx https://msdn.microsoft.com/en-us/library/system.icomparable.compareto(v=vs.110).aspx