lundi 1 juin 2015

Debugging a Texas HoldEm Card Dealing Program?

I am trying to code a simple program that will deal cards according the game Texas HoldEm for a set number of players. The problem I am having is that my program keeps dealing duplicates of the same cards. I am using an Array List to represent the deck and using deck.remove(); to remove the cards, but it still deals duplicates.

Here is my code:

import java.util.*;
import java.util.Random;
public class DrawCards {
public static void main(String[] args)
{
    System.out.println("How many players? (2-8)");
            Scanner scan = new Scanner(System.in);
            String s = scan.nextLine();
            int numplayers = Integer.valueOf(s);
            scan.close();
            List<Integer> deck = new ArrayList<>();
              for (int i = 0; i < 52; i++)
                {
                    deck.add(i);
                }
            for(int i=0; i<numplayers;i++)
            {
                String cardname = NameCard(drawCards(deck));
                String cardname2 = NameCard(drawCards(deck));
                if(i==0)
                {
                    System.out.println("Your hand: "+cardname+", "+cardname2);
                }
                else
                {
                System.out.println("Player " +(i)+"'s hand: "+cardname+", "+cardname2);
                }
            }
        }
        public static int drawCards(List<Integer> deck)
        {
            Random randomgenerator = new Random();
            int card = (randomgenerator.nextInt(deck.size()-1));
            deck.remove(card);
            return card;
        }
        public static String NameCard(int card)
        {
            String cardname = "";
            String[] numbers = new String[]{"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
            String[] suits = new String[]{"Clubs","Hearts","Spades","Diamods"};
            if(card<13)
            {
                cardname = numbers[card]+" of "+suits[0];
            }
            else
            {
                cardname = numbers[card%13]+" of "+suits[card/13];
            }
            return cardname;
        }
}

Any help is much appreciated.

Aucun commentaire:

Enregistrer un commentaire