Kamis, 29 November 2012

Mengacak Kartu dengan Algoritma Fisher-Yates [Actionscript 3.0]


mengacak kartu dengan algoritma Fisher-Yates. Kalo kita tulis ke flash kira2 seperti ini:
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_btnsebagai 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{
    07    //Urutan kartu awal
    08    var arrayKartu:Array = [1,2,3,4,5,6,7,8,9,10,11,12,13];
    09
    10    //Melakukan pengacakan
    11    for(var i=0;i<arrayKartu.length;i++){
    12       var ran = Math.floor(Math.random()*arrayKartu.length);
    13       var temp = arrayKartu[i];
    14       arrayKartu[i] = arrayKartu[ran];
    15       arrayKartu[ran] = temp;
    16    }
    17    //Menampilkan Kartu
    18    for (i=0; i<arrayKartu.length; i++){
    19        var kartu = new Kartu();
    20        kartu.gotoAndStop(arrayKartu[i]);
    21        if(i<6){
    22            kartu.x = i*90+50;
    23            kartu.y = 70;
    24        }else if(i<12){
    25            kartu.x = (i-6)*90+50;
    26            kartu.y = 200;
    27        }else{
    28            kartu.x = (i-12)*90+50;
    29            kartu.y = 330;
    30        }
    31        addChild(kartu);
    32    }
    33    trace(arrayKartu);
    34}
  • Sekarang kita test movie 
Algoritma ini bekerja dengan cara menukar sebuah kartu dengan kartu acak lainnya, dan penukaran ini dilakukan sebanyak jumlah kartu.

Tidak ada komentar:

Posting Komentar