cards = new Card[52];
            for (int suitVal = 0; suitVal < 4; suitVal++)
            {
                for (int rankVal = 1; rankVal < 14; rankVal++)
                {
                    cards[suitVal * 13 + rankVal - 1] = new Card((Suit)suitVal, (Rank)rankVal);
这是一副扑克牌.suitVal是花式,rankVal是Ace到老K.13张牌.
cards[suitVal * 13 + rankVal - 1] = new Card((Suit)suitVal, (Rank)请问这句是什么意思啊.我不太理解.希望懂的朋友提点提点.小第不胜感激.

解决方案 »

  1.   

    一个Card的对象数组 就是一副扑克牌塞
      

  2.   

    我是自学C#的,刚学不久也没什么基础.
    cards[suitVal * 13 + rankVal - 1] = new Card((Suit)suitVal, (Rank)rankVal);
    这个式子我不理解他的意思.能解释下吗
      

  3.   

    首先cards = new Card[52];申明了一个Card的对象数组cards[suitVal * 13 + rankVal - 1] = new Card((Suit)suitVal, (Rank)rankVal);
    是将这个数组中的每一个对象都实例化 也就是说生成了一张张的扑克牌 可以这么理解
      

  4.   

    再简单点说
    我们定义一个类
    Class TestClass
    {}然后我们在实例化A的时候这样写TestClass clsA = new TestClass();//声明了一个TestClass的对象clsA并将其实例化你的问题只不过是说 他一次申明了TestClass[] ClsArr = new TestClass[52] 就是一个TestClass的数组 那么该数组中应该有52个TestClass对象 现在通过for循环来一个个的将其实例化而已
      

  5.   

    谢谢上面的大哥.不过小弟以前从没有学过编程.所以基础不是一般的差.
    我想知道比如suitVal * 13 + rankVal - 1.suitVal * 13 是花式生成13张牌.那么+rankVal-1是什么意思呢?
    我现在是suitVal * 13 + rankVal - 1式子没搞懂!
    小弟基础差.见笑了
      

  6.   

    这个是用来计算数组索引的
    由于数组的索引是从0开始 那么52张牌的索引是0~51 但是for循环中的值是从1~52 所以后面要-1
      

  7.   

    suitVal * 13 + rankVal - 1
    第一张牌是 cars[0]
    因为suitVal从0开始循环
    rankVal从1开始所以-1
    new Card((Suit)suitVal, (Rank)rankVal);
    调用两个参数的构造函数
      

  8.   

    rankVal从1开始所以-1
    之所以-1是因为要配合后面的赋值,因为牌的值没有0
      

  9.   

    我都不好意思问了,我想我是笨了点.不过不懂啊.只能硬着头皮上了.
    按照我的理解suitVal * 13是生成了1个花式的13张牌.比如黑陶A到老K.然后+rankVal就不懂了.
    我是4月份直接自学c#的.以前也没有学过编程所以比较木纳一点.希望各位前辈多多指点!
      

  10.   

    最好的方法 单步调试你跟一下那两个变量的值 就会很明白了 hoho不用不好意思 没有人生来就会
      

  11.   

    有点理解了,每次实例的是这个数组对应的下标对吗?
    每次实例1个.比如suitVal=0的时候.当rankVal从1开始循环到13.就实例到cards[12].
    然后suitVal=1.这个时候就从cards[13]实例到cards[25]
    suitVal=2.从cards[26]到cards[38]
    suitVal=3.从cards[39]到cards[51]
    是不是这样呢?