我试图在课堂上解决这个问题。我有一个卡牌组,我必须制作一个方法来制作牌组,将其洗牌,然后将其交给双手。我不知道如何开始他们,有人可以帮助我吗?我是这个东西的磨砂膏。
public class Game
{
public static Card[] deck = new Card[52];
public static Card[] xHand, yHand;
public static Scanner in = new Scanner(System.in);
public static int numInHand, x=0,y=0;
public static void main(String[] args)
{
System.out.println("Press Enter to make a new deck.");
in.nextLine();
makeDeck();
System.out.println("A new deck.\n");
for(int i = 0; i < deck.length; i++)
System.out.println(deck[i]);
System.out.println("Press Enter to shuffle the deck.");
in.nextLine();
shuffle();
System.out.println("\nA shuffled deck.\n");
for(int i = 0; i < deck.length; i++)
System.out.println(deck[i]);
System.out.println("How many cards would should we deal to each player?");
numInHand = in.nextInt();
in.nextLine();
xHand = new Card[numInHand];
yHand = new Card[numInHand];
deal();
System.out.println("\nYour Hand.\n");
for(int i = 0; i < xHand.length; i++)
if(xHand[i]!=null) System.out.println(xHand[i]);
System.out.println("\nYour Opponent's Hand.\n");
for(int i = 0; i < yHand.length; i++)
if(xHand[i]!=null) System.out.println(yHand[i]);
play();
}
public static void makeDeck()
{
}
public static void shuffle()
{
}
public static void deal()
{
}
}
答案 0 :(得分:0)
牌组是阵列(或列表或其他有序集)的牌。你如何代表每张卡取决于你;可能只是一个int取模13的值和int除以4为西装,或者可能是一个对象。
Shuffling随机化了该数组或列表的顺序。最简单的shuffle可能是(伪代码,假设deck被声明为Card []):
for(int i=0;i<deck.size;++i)
{
int othercard=randomNumberFrom0To51();
Card swap=deck[i];
deck[i]=deck[othercard];
deck[othercard]=swap;
}
处理:从洗牌的牌组中拉出前N张牌。请记住,你已经这样做了,所以进一步的抽签继续推进通过洗牌的甲板。
可能需要根据游戏的需要定义更多细节,但这应该让你指向正确的方向。
答案 1 :(得分:0)
要补充Ajay的答案,请查看有关基本阵列操作的此文档。 Oracle Java Tutorials Page