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