解释这部分代码,扑克牌组

时间:2013-07-19 18:23:06

标签: java project

我正在努力学习如何制作扑克游戏,所以我在网站上搜索扑克项目。

这是我找到的甲板课程。

这是代码中对我没有意义的部分。

   int index_1, index_2;


    for (int i = 0; i < 100; i++) {

        index_1 = generator.nextInt(cards.size() - 1);

        index_2 = generator.nextInt(cards.size() - 1);



        temp = cards.get(index_2);

        cards.set(index_2, cards.get(index_1));

        cards.set(index_1, temp);

    }

}

2 个答案:

答案 0 :(得分:1)

看起来像甲板的随机洗牌,随机挑选两张牌位。 nextInt(cards.size() - 1)将生成[0,cards.size() - 1)范围内的随机索引:

index_1 = generator.nextInt(cards.size() - 1);
index_2 = generator.nextInt(cards.size() - 1);

交换两张卡,因为您必须先替换其中一张卡而不想丢失该对象,代码会使用temp来保留要更换的第一张卡,{{1}将获得第一个卡片对象。

cards.get(index_2)

第一个temp = cards.get(index_2); 将替换set中的对象,index_2和第二个index_1中的对象将替换set中的对象我们之前存储的对象:

index_1

执行此过程cards.set(index_2, cards.get(index_1)); cards.set(index_1, temp); 次:

100

如果我们假设for (int i = 0; i < 100; i++) 是套牌中最后一张牌的索引,那么cards.size() - 1来电将跳过最后一张牌,很难知道这是否是故意的,没有更多的背景。

答案 1 :(得分:0)

这段代码正在做的是它在牌组中交换两张牌。它任意做100次。更好的方法是将卡随机分配到卡座中的位置。它现在的方式可能永远不会触及某些卡片组,并且您可能会以与以前相同的顺序在同一位置获得一堆卡片。另外,它只涉及52次移动而不是300次(card2 - &gt; temp,card1 - &gt; temp2,temp - &gt; card1)。