Embaralhando cartas

ae galera, ja vi varios topicos sobre embaralhamento de cartas abaixo, vi uma questao no deitel 6 edição… vejam ae!!

public class Card
{
	private String face;
	private String suit;

	
	//contrutor que receber os valores das cartas
	public Card(String carFace, String carSuit)
	{
	
	face = carFace;
	suit = carSuit;
	}

	public String toString()
	{
	return face + " e " + suit;
	}
}
import java.util.Random;

public class Deckcard
{

	private Card deck[];
	private int currentcard;
	private final int number = 52;
	private Random randomnum;

	//construtor que preenche as cartas
	
	public Deckcard ()
	{
	
		 String faces[] = { "Ace", "Deuce", "Three", "Four", "Five", "Six",
         "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };    
	      	
		String suits[] = { "Hearts", "Diamonds", "Clubs", "Spades" }; 

	deck = new Card[number];
	currentcard =0;
	
	randomnum = new Random();
	
	
	for (int cont = 0; cont < deck.length; cont++)
		deck[cont] = new Card(faces[cont % 13], suits[cont / 13]);

	}


	public void shufle()
	{
	currentcard = 0;

	for (int fis = 0; fis < deck.length; fis++)
	{
	
	int sec = randomnum.nextInt(number);

	Card temp = deck[fis];
	deck[fis] = deck[sec];
	deck[sec] = temp;
	
	}
	
	}

	public Card dealCard()
	{
	
	if (currentcard < deck.length)
	
		return deck[currentcard++];
	else
		return null;
	}
}

classe index

public class Decktest
{
	public static void main(String args[])
	{
	Deckcard cartas = new Deckcard();
	
	cartas.shufle();

	for(int i = 0; i< 13; i++)
	{
	System.out.printf("%-20s%-20s%-20s%-20s\n", cartas.dealCard(),cartas.dealCard(),
	cartas.dealCard(), cartas.dealCard());
	}
	}
}

eu, particularmente, gosto de embaralhar várias vezes, aí faço assim:

[code]public void shufle(int vezes) {
int fis, sec;
currentcard = 0;

for (int i = 0; i < deck.length * vezes; i++) {
	fis = randomnum.nextInt(number);
	do {
		sec = randomnum.nextInt(number);
	} while (fis == sec);

	Card temp = deck[fis];
	deck[fis] = deck[sec];
	deck[sec] = temp;
}

}[/code]

flw

[quote=camilolopes]ae galera, ja vi varios topicos sobre embaralhamento de cartas abaixo, vi uma questao no deitel 6 edição… vejam ae!!

public class Card
{
	private String face;
	private String suit;

	
	//contrutor que receber os valores das cartas
	public Card(String carFace, String carSuit)
	{
	
	face = carFace;
	suit = carSuit;
	}

	public String toString()
	{
	return face + " e " + suit;
	}
}
import java.util.Random;

public class Deckcard
{

	private Card deck[];
	private int currentcard;
	private final int number = 52;
	private Random randomnum;

	//construtor que preenche as cartas
	
	public Deckcard ()
	{
	
		 String faces[] = { "Ace", "Deuce", "Three", "Four", "Five", "Six",
         "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };    
	      	
		String suits[] = { "Hearts", "Diamonds", "Clubs", "Spades" }; 

	deck = new Card[number];
	currentcard =0;
	
	randomnum = new Random();
	
	
	for (int cont = 0; cont < deck.length; cont++)
		deck[cont] = new Card(faces[cont % 13], suits[cont / 13]);

	}


	public void shufle()
	{
	currentcard = 0;

	for (int fis = 0; fis < deck.length; fis++)
	{
	
	int sec = randomnum.nextInt(number);

	Card temp = deck[fis];
	deck[fis] = deck[sec];
	deck[sec] = temp;
	
	}
	
	}

	public Card dealCard()
	{
	
	if (currentcard < deck.length)
	
		return deck[currentcard++];
	else
		return null;
	}
}

classe index

public class Decktest
{
	public static void main(String args[])
	{
	Deckcard cartas = new Deckcard();
	
	cartas.shufle();

	for(int i = 0; i< 13; i++)
	{
	System.out.printf("%-20s%-20s%-20s%-20s\n", cartas.dealCard(),cartas.dealCard(),
	cartas.dealCard(), cartas.dealCard());
	}
	}
}
  1. [/quote]

Legal camilo! gostei da aplicação!! eu modificaria e colocaria o que o amigo sujeriu! de colocar 1 numero de vezes de embaralhar…
Você poderia mais para frente usar enuns…:smiley: ficaria legal também!:smiley:
um abraço!