Mengacak Kartu dengan Algoritma Fisher-Yates

1var arrayKartu = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"];
2for(var i=0;i<arrayKartu.length;i++){
3   var ran = random(arrayKartu.length);
4   var temp = arrayKartu[i];
5   arrayKartu[i] = arrayKartu[ran];
6   arrayKartu[ran] = temp;
7}
Nah, dari sini akan kita buat implementasinya pada flash.
  • Pertama-tama kita membuat sebuah dokumen flash dengan ActionScript 3.0
  • Langkah awal adalah menggambar kartu-kartu seperti Ace, King, Queen, dan lainnya. Kartu As (Ace) kita letakkan pada awal frame, karena kita membuat 13 frame, maka A menempati frame 1, kartu 2 menempati frame 2, kartu J menempati frame 11, dan seterusnya.
  • Untuk itu, kita harus membuat sebuah kartu terlebih dahulu seperti bentuk berikut :
    kartu
    kartu
  • Pastikan dalam keadaan terpilih, klik kanan kartu tersebut dan ubah menjadi MovieClip. Pastikan Export for ActionScript terpilih dan ketik nama class-nya menjadi Kartu.
    Convert to Movieclip
    Convert to Movieclip
  • Sekarang MovieClip kartu sudah jadi, klik 2 kali kartu tersebut dan kita masuk ke dalam movieclip tersebut. Klik kanan pada frame 13 dan pilih Insert Frame.
    Insert Frame
    Insert Frame
  • Sekarang tambahkan sebuah layer baru, layer ini digunakan untuk tulisan A, 1, 2, J, Q, K. Sehingga layer tulisan ini berada di atas Layer 1.
  • Pilih frame 1 pada layer 2, kemudian klik kanan dan pilih Convert to Keyframe.
    Convert to Keyframe
    Convert to Keyframe
  • Sekarang kita isi satu persatu frame 2 yang masih kosong dengan label A, 1, 2, dst..
    Kartu Jadi
    Kartu Jadi
  • Oke, sudah jadi, tapi hanya kartunya saja. Kita kembali pada screen utama dengan klik 2 kali pada area kosong. Kemudian hapus semua movieclip pada stage, sehingga menjadi kosong.
  • Sekarang buat sebuah tombol sederhana dan berikan nama tombol_btn sebagai instance name-nya.
    tombol_btn
    tombol_btn
  • Sekarang kita beralih ke scripting, klik pada frame 1 layer 1, tekan F9. ketik script berikut :
    01import flash.events.MouseEvent;
    02 
    03//Memberikan Event Click
    04tombol_btn.addEventListener(MouseEvent.CLICK,onClick);
    05function onClick(e:MouseEvent)
    06{
    ;/tbody>
    07    //Urutan kartu awal
    08    var arrayKartu:Array = [1,2,3,4,5,6,7,8,9,10,11,12,13];
    09    //Melakukan pengacakan
    10    for (var i=0; i<6){
    11            kartu.x = i*90+50;
    12            kartu.y = 70;
    13        }else if(i<12){
    14            kartu.x = (i-6)*90+50;
    15            kartu.y = 200;
    16        }else{
    17            kartu.x = (i-12)*90+50;
    18            kartu.y = 330;
    19        }
    20        addChild(kartu);
    21        i++;
    22    }
    23    trace(arrayKartu);
    24}
  • Sekarang kita test movie :D
Algoritma ini bekerja dengan cara menukar sebuah kartu dengan kartu acak lainnya, dan penukaran ini dilakukan sebanyak jumlah kartu.

Mengacak Kartu dengan Algoritma Fisher-Yates Rating: 4.5 Diposkan Oleh: Catatanku