3
« en: Viernes 22 de Junio de 2007, 04:42 »
Hola, soy algo nuevo en programacion y estoy intentando crear un metodo para barajar cartas. El que estoy utilizando a mi parecer funciona logicamente, pero al correrlo el programa se cuelga ya que la computadora se tarda mucho en encontrar los valores aleatorios necesarios, aqui les dejo el codigo del metodo, supongo q debe haber una forma mas eficaz...
public void Barajar()
{
Random ram = new Random();
for (int j = 0; j != 52; j++)
{
aleatorio = ram.Next(1, 13);
aleatorio2 = ram.Next(1, 4);
for (int h = 0; h != j; h++)
{
if ((Mazo[h] == Espadas[aleatorio]) || (Mazo[h] == Treboles[aleatorio]) ||
(Mazo[h] == Corazones[aleatorio]) || (Mazo[h] == Cocos[aleatorio]))
{
a = false;
h = j - 1;
}
}
if (a == true)
{
switch (aleatorio2)
{
case 1: Mazo[j] = Espadas[aleatorio]; break;
case 2: Mazo[j] = Treboles[aleatorio]; break;
case 3: Mazo[j] = Corazones[aleatorio]; break;
case 4: Mazo[j] = Cocos[aleatorio]; break;
}
}
else
{
a = true;
j--;
}
}
}
Nota: Cada carta tiene primero el valor de la misma y luego el mazo al q pertenece, Espadas = 1, Treboles = 2, Corazones = 3, Cocos = 4. Por ejemplo, el diez de cocos seria: 104.