我正在努力学习如何制作扑克游戏,所以我在网站上搜索扑克项目。
这是我找到的甲板课程。
这是代码中对我没有意义的部分。
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);
}
}
答案 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)。