Java 52卡牌组制作甲板,洗牌,然后处理

时间:2014-02-24 23:45:55

标签: java

我试图在课堂上解决这个问题。我有一个卡牌组,我必须制作一个方法来制作牌组,将其洗牌,然后将其交给双手。我不知道如何开始他们,有人可以帮助我吗?我是这个东西的磨砂膏。

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()
{

}

}

2 个答案:

答案 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