Algoritma shuffle sering digunakan untuk mengacak posisi dari element-element dari sebuah list atau array secara random. Jenis game yang biasa menggunakan algoritma ini biasanya game kartu seperti solitaire, black jack, dll untuk menginisiasi kartunya.
Ilustrasi sebuah array seperti berikut:
Kemudian menjadi seperti berikut setelah diacak dengan algoritma shuffle:
Untuk implementasinya pertama kita buat script dan beri nama dengan ShuffleItemManager.cs
using UnityEngine; using System.Collections; public static class ShuffleItemManager { public static T[] Shuffle<T>(T[] items) { int numberShuffle = 1000; T temp; int swapIndex; for(int i = 0; i < numberShuffle; i++) { swapIndex = Random.Range(0, items.Length); temp = items[0]; items[0] = items[swapIndex]; items[swapIndex] = temp; } return items; } }
Method shuffle ini dibuat method generic agar bisa diimplementasi pada berbagai tipe array.
Selanjutnya buat script untuk game object dan beri nama ShuffleSample.cs
using UnityEngine; using System.Collections; public class ShuffleSample : MonoBehaviour { public int[] IntList; private void Start() { Debug.Log("Before Shuffle : " + ToString(IntList)); Debug.Log("After Shuffle: " + ToString(ShuffleItemManager.Shuffle<int>(IntList))); } private string ToString(int[] intList) { string output = intList[0].ToString(); for(int i = 1; i < intList.Length; i++) { output += ", " + intList[i]; } return output; } }
Buat scene baru save as dan beri nama dengan ShuffleExample.unity. Kemudian tambahkan game object baru dan beri nama Shuffle.
Tambahkan component ShuffleSample pada game object Shuffle dan isi property Int List dengan value seperti berikut
Jalankan scene tersebut dan lihat hasilnya:
Urutan element dari array Int List berubah posisinya secara acak.
Leave a Reply