- Home /
 
 
               Question by 
               Michael Boyd · Mar 28, 2012 at 07:36 PM · 
                array  
              
 
              implementing shuffle script
Hi, I'm just starting out on a card game and have been hunting around for a shuffle script here in unity answers.
I found a script (below) which performs the shuffle and prints the new order to the debug log but I'm confused as to how to then implement this in game. How do I apply this new order to a deck of cards which I have created and textured? Resulting in a newly shuffled deck of cards which can be interacted with; cards dealt, picked from the top of the pile etc?
Thanks for your help
 function Start () {
 
  InitiateDeck ();
  ShuffleDeck (2);
 }
 
 var deck : Array = new Array ();
  
 function InitiateDeck () {
   deck.Clear ();
     for (var valueCard : float = 1; valueCard <= 13; valueCard++) {
        for (var suitCard : float = 1; suitCard <= 4; suitCard++) {
            deck.Push (Vector2 (valueCard, suitCard));
        }
     }
    Debug.Log ("Deck initiated. Current size :"+deck.length+". Current content:"+deck);
 }
  
 function ShuffleDeck (times : int) {
     // Repeat the process as many times as specified.
     for (var i : int = 0; i < times; i++) {
     
         // Setting the first temporary deck, put all existing card of deck in deck 1.
         var tempDeck1 : Array = new Array ();
        for (var j : int = 0; j < deck.length; j++) {
             tempDeck1.Push (deck[j]);
         }
         
         // Shuffle by using random number and transfers in deck 2.
         var tempDeck2 : Array = new Array ();
        
                        var indexCard : int;
 
         while (0 < tempDeck1.length) {
             
             // Get a random card between minimum (inclusive) and maximum (exclusive).
             var minimum : int = 0;
             var maximum : int = tempDeck1.length;
             indexCard = Random.Range (minimum, maximum);
             
             // Add the card in the deck 2.
             tempDeck2.Push (tempDeck1 [indexCard]);
             
             // Remove the card at deck 1.
             tempDeck1.RemoveAt (indexCard);
         }
         
         // Shuffle done, but needs to set the new deck in the current deck.
         deck.Clear ();
         for (var k : int = 0; k < tempDeck2.length; k++) {
             deck.Push (tempDeck2[k]);
         }
         Debug.Log ("Deck shuffled. Current size :"+deck.length+". Current content:"+deck);
     }
 }``
 
              
               Comment
              
 
               
              Your answer