Penggunaan Bilangan Random Matlab dalam Aplikasi Permainan “Ular Tangga”

Bilangan random menggunakan fungsi rand pada Matlab. Fungsi yang membangkitkan sembarang bilangan dengan jangkauan nol hingga satu (pecahan) banyak diterapkan, salah satunya dalam optimisasi menggunakan algoritma genetika (GA).

Menghasilkan Output yang Tidak bisa Diprediksi

Kehidupan sehari-hari memang tidak bisa diprediksi, sehingga aplikasi permainan pun selayaknya mampu mensimulasikan kehidupan sehari-hari. Misalnya dalam game sepakbola, walaupun akurasi C. Ronaldo tinggi, tetapi karena adanya faktor ketidakpastian, maka belum tentu ketika pinalti selalu menghasilkan gol. Justru kalau gol terus, game tersebut tidak menyerupai aslinya. Sebagai contoh dalam postingan ini adalah permainan ular tangga sederhana.

Misal dua dadu dilempar beberapa kali dan harapannya tepat di titik finish (bernilai 10). Jika terlewat maka dihitung kekiri lebihannya. Mudah saja, kode berikut menggambarkan algoritmanya.

  • clc
  • sisa = 10;
  • step=0
  • history=[0 0 0 ];
  • while sisa ~= 0
    • random=2+floor(rand*10)
    • if sisa >= random
    • sisanew=sisa-random;
    • else
      • sisanew=abs(sisa-random);
    • end
    • sisa=sisanew
    • pause
    • clc
    • step=step+1
    • posisi=10-sisa
    • history=[history;[step random posisi]]
  • end
  • msgbox(‘FINISH’)

Fungsi di atas berisi pembangkitan bilangan random, melangkah dan mendeteksi apakah sudah mencapai FINISH. Offset “2” pada variabel random karena dua dadu minimal berharga “2”. Perulangan diterapkan dengan menggunakan instruksi while apakah sudah tepat di posisi 10. Berikut hasil runningnya:

Kolom tengah adalah bilangan random dan kolom ketiga menunjukan posisi terkini. Di akhir baris, yaitu lemparan ke-6, posisi tepat di angka 10 yang artinya FINISH.

Membuat Ular dan Tangga

Berikutnya ada dua lokasi ular, yaitu angka “4” yang akan memaksa balik ke nol, serta tangga pada angka “6” yang memaksa loncat ke “8”. Berikut tambahan kodenya:

  • clc
  • sisa = 10;
  • step=0
  • history=[0 0 0 ];
  • while sisa ~= 0
    • random=2+floor(rand*10)
    • if sisa >= random
    • sisanew=sisa-random;
    • else
      • sisanew=abs(sisa-random);
    • end
    • sisa=sisanew
    • pause
    • clc
    • step=step+1
    • posisi=10-sisa
    • if posisi==4
      • posisi=0;
      • sisa=10;
    • end
    • if posisi==6
      • posisi=8;
      • sisa=2;
    • end
    • history=[history;[step random posisi]]
  • end
  • msgbox(‘FINISH’)

Ada dua buah if-then untuk mengecek apakah tepat berada di titik ular atau tangga. Jika tepat maka diarahkan ke berturut-turut nol dan delapan. Hasil running di bawah tampak tidak ada angka 4 dan 6 karena akan diarahkan ke nol dan delapan. Sekian, semoga bermanfaat.

Tinggalkan komentar

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.