【发布时间】:2012-11-25 05:12:35
【问题描述】:
我有一个关于如何洗牌的问题。 背景是:
编写一个记忆配对游戏,它使用 16 张卡片,排列在一个 4*4 的正方形中,并标有从 1 到 8 的数字对。
目前,我需要做的是初始化这些卡片并洗牌。
现在我能想到的是创建一个包含变量 Rank 从 1 到 8 的 Card 类,其次,命名一个新类(matchingGame)(随你喜欢)并编写一个新的静态方法:shuffle()。
但我被困在这一步。
我的第一个问题是如何初始化这16张卡片(8对)?
(我认为我的代码不是有效的方法)。
我的第二个问题是初始化后如何洗牌?
我的代码是:
public class Card
{
private int rank;
public Card(int iniRank)
{
switch (iniRank)
{
case 1:
rank =1;
break;
case 2:
rank =2;
break;
case 3:
rank =3;
break;
case 4:
rank =4;
break;
case 5:
rank =5;
break;
case 6:
rank =6;
break;
case 7:
rank =7;
break;
case 8:
rank =8;
break;
}
}
public int getRank()
{
return rank;
}
}
public static void initialize(Card[] cards)
{
for (int i=0;i<2;i++)
{
cards[i] = new Card(1);
}
for (int i=2;i<4;i++)
{
cards[i] = new Card(2);
}
....
}
感谢大家提出我之前的问题!
在同一背景下还有一个问题,作为您的好建议,您知道如何洗牌一维数组吗?
但是如何洗牌一个二维数组?显然,我不能使用
List<Card> newcards = Arrays.asList(cards)
现在转换为列表。
感谢您的帮助
【问题讨论】:
-
没有必要使用 switch 语句。您可以将排名设置为 iniRank 的值。要弄清楚如何随机播放,您需要了解如何创建随机数:docs.oracle.com/javase/6/docs/api/java/util/Random.html
标签: java playing-cards