Friday, January 15, 2010

swap rule dalam permainan

misalkan ada 2 orang ingin membagi 2 sebuah pie. dan hanya salah satu orang yang diizinkan untuk memotong kue tersebut, bagaimana caranya agar kedua orang tersebut mendapat pie yang sama besarnya?

caranya adalah dengan mengizinkan orang yang tidak memotong untuk memilih bagian mana yang diinginkan. hal ini akan membuat orang yang memotong kue akan berusaha untuk seadil-adilnya dalam memotong. karena kalau dia memotong tidak adil tentu orang kedua yang akan memilih pie yang lebih besar.

hal ini dapat diterapkan pada permainan dimana pemain yang melangkah lebih dahulu sangat diuntungkan. jadi cara kerjanya adalah pemain pertama melangkah lalu pemain kedua diberi pilihan apakah ingin bertukar sisi (swap) atau tidak.

hal ini akan menyebabkan pemain pertama tidak melangkah ke tempat yang tidak terlalu bagus dan juga tidak terlalu jelek untuk dia (seimbang).

Sunday, January 10, 2010

full control of your process

saya pernah membuat sebuah program simulasi, dan dalam pembuatan program tersebut ada banyak proses yang berjalan. misalkan untuk simulasi antrian kendaraan di jalan tol. mada masing-masing mobil yang masuk ke jalan tol dapat dianggap satu proses tersendiri yang pergerakannya dalam dunia nyata memang berjalan masing-masing tapi dalam simulasi pergerakannya dibuat dengan menganggap seolah-olah mobil tersebut memang berjalan sendiri-sendiri padahal sebenarnya proses yang berjalan hanya satu dan setiap mobil akan patuh terhadap perintah dari satu proses itu.

pendekatan untuk ini biasanya dengan menggunakan thread. setiap mobil akan dianggap 1 thread. dan setiap thread akan berjalan masing-masing sesuai dengan pembagian waktu yang dilakukan oleh komputer terhadap masing-masing thread tersebut.

kelemahan dari hal ini adalah saya tidak punya full control terhadap thread-thread tersebut. karena proses penjatahan thread sangat tergantung dengan keadaan prosesor atau kalau membuat programnya dengan java maka akan tergantung dengan jvm nya. dan kontrol penuh ini menjadi penting saat saya benar-benar ingin mengetahui setiap hal yang terjadi dengan yang disimulasikan.

maka untuk menyelesaikan ini saya menggunakan konsep 1 thread yang digunakan sebagai clock atau timer tunggal dari segala hal yang disimulasikan. dan setiap proses dalam program saya akan ada method seperti jalankanWaktu().

sebagai contoh saat saya ingin mensimulasikan jalannya mobil maka di mobil akan ada method maju() yang jika dipanggil akan memajukan waktu di mobil sehingga akan menyebabkan posisi mobil berubah.

dengan cara ini saya akan mendapatkan full control dari segala hal yang ada di simulasi yang saya buat.

oh iya sebagai tambahan saya juga menggunakan trik yang sama pada pembuatan uibooth yaitu pada modul untuk komunikasi dengan smartcard device. mudah2-an cara ini dapat membuat uibooth e-access menjadi lebih stabil dan tidak gampang hang