Solusi Game Logika Family Crisis

Filed Under (Java, Programming Concept) by Coni on 03-05-2008

Family Crisis adalah sebuah game logika berbasis flash yg dikeluarkan oleh plastelina. Kita disuruh untuk menyeberangkan sebuah keluarga yg terdiri dari 5 orang dengan waktu yg dibutuhkan untuk menyeberang berbeda-beda. Aturannya adalah:

  1. Waktunya malam.

  2. Hanya ada satu lampu.

  3. Maksimal 2 orang yg dapat menyeberang pada satu waktu dan harus membawa lampu.

  4. Setiap orang menyeberang dengan waktu 1, 3, 6, 8, dan 12 detik.

  5. Satu pasang penyeberang bergerak dengan waktu orang yg paling lama.

  6. Lampu hanya cukup untuk 30 detik menyeberang.

Apakah anda sudah pernah memainkannya dan berhasil? Jika ya maka anda termasuk orang yg sangat cerdas. Saya sudah mencoba bertahun-tahun secara manual tetapi tidak bisa. Karena saya menyadari bahwa insting saya amat sedikit dan masih bodoh maka saya mulai mencari solusinya dengan membuat program dengan algoritma backtracking. Hasilnya lumayan. Ada 8 solusi yg didapat.

Mari kita telusuri masalahnya. Ketika mau menyeberang pertama kali, ada 5 orang yg belum menyeberang dan dibutuhkan 2 orang untuk menyeberang. Berarti ada kombinasi pasangan sejumlah 5 kombinasi 2 yg berarti 10 pasangan (Jadi ingat kalkulus yg dapet C). Setelah salah satu pasangan menyeberang, maka ada 2 kombinasi orang yg akan kembali membawa lampu. Setelah satu orang kembali, maka ada 4 orang yg belum menyeberang. Berarti ada kombinasi orang yg mau menyeberang sejumlah 4 kombinasi 2 (6 kombinasi pasangan). Teruskan sendiri iterasinya sampai semuanya telah menyeberang.

Ayo sekarang kita modelkan kelasnya. Saya hanya memakai 3 kelas. Kelas pertama yg bertujuan mencari solusi, kelas kedua yg merupakan pemodelan dari orang, dan kelas ketiga yg memodelkan pasangan penyeberang. Saya menggunakan bahasa Java untuk implementasinya. Jika ingin menggunakan kode programnya untuk kepentingan mengajar, harap jangan hapus komentar author saya. Lumayan membuat nama saya sedikit terkenal.

Output dari program saya adalah:

<= 1+2| 1 =>| <= 1+3| 1 =>| <= 4+5| 2 =>| <= 1+2| 29

<= 1+2| 1 =>| <= 1+3| 2 =>| <= 4+5| 1 =>| <= 1+2| 29

<= 1+2| 1 =>| <= 4+5| 2 =>| <= 1+2| 1 =>| <= 1+3| 29

<= 1+2| 1 =>| <= 4+5| 2 =>| <= 1+3| 1 =>| <= 1+2| 29

<= 1+2| 2 =>| <= 4+5| 1 =>| <= 1+2| 1 =>| <= 1+3| 29

<= 1+2| 2 =>| <= 4+5| 1 =>| <= 1+3| 1 =>| <= 1+2| 29

<= 1+3| 1 =>| <= 1+2| 1 =>| <= 4+5| 2 =>| <= 1+2| 29

<= 1+3| 1 =>| <= 1+2| 2 =>| <= 4+5| 1 =>| <= 1+2| 29

Angka 1,2,3,4,5,6 adalah menandakan orang keberapa dan terakhir waktu yg dibutuhkan. Dimulai dari orang ke-1 yg membutuhkan waktu 1 detik.

FamilyCrisis.java

Model View Controller (MVC)

Filed Under (Programming Concept) by Coni on 23-04-2008

Model View Controller biasa disingkat MVC. Sekarang kayaknya lagi agak ngetren nyambungin ke spring mvc. MVC adalah konsep programming yg udah sangat lama. Cuman saya baru tahu ada makanan kayak ginian. Di kuliah ga pernah diajarin. Design pattern aja lom ngerti aku. Penjelasan disini berdasarkan apa yg saya pahami sendiri. Anda harus mencari literatur lagi supaya lebih paham. OK mari kita langsung liat gambar.

Setelah gambarnya diliat pasti udah jelas ya. Dalam membuat sebuah aplikasi, kita akan membaginya menjadi 3 modul utama, yaitu Model View dan Controller (sesuai namanya ga pake yg aneh2). Dengan cara seperti ini maka manajemen pembagian tugas dan maintenance akan lebih mudah dan rapi tetapi penggunaan memori lebih besar karena semakin banyak objek yg digunakan. Tapi ga pa2 kok kan harga komputer semakin turun n performansi semakin meningkat (nyari alasan).

Model berisi bisnis proses. Inti dari sebuah aplikasi ada didalam ini. Jika ada pengaksesan kedatabase, maka modulnya ada didalam Model.

View bertugas untuk mengenerate tampilan ke User atau data output yg diinginkan dari sebuah Event. Data input biasanya berasal dari Model langsung atau bisa juga dari Model ke Controller baru ke View. Sesuai selera aja. Jika aplikasi didesain untuk menampilkan data yg sama dalam format WML, HTML dan XML maka kita cukup mengedit modul View saja atau juga sedikit Controller.

Controller sesuai namanya sebagai pengontrol. Misal ada sebuah Event atau Request baru terus ditangani oleh Controller. Dari Controller akan dicari ini apa maksudnya. Kemudian akan menghubungi Model untuk datanya diolah trus generate output pake View. Gitu deh simpelnya.

Kebanyakan orang kalau saya liat banyak ngubungin konsep MVC keaplikasi web pake PHP atau Java Servlet. Padahal konsep MVC ini kan dah amat sangat lama ada dan GUI awt dan swing Java sudah pake konsep ini. Misal sebuah obyek Button. Controllernya adalah method atau obyek yg menangani Event, contohnya yg mengimplementasikan ActionListener untuk menangani event Buttonnya. Setelah ada event maka akan menghubungi Model yg dpt berupa obyek lain atau method ini mau ngapain. Setelah itu modul View akan yg dpt berupa obyek Button itu sendiri atau lainnya untuk mengenerate tampilan data dari modul Model.

Sekian penjelasan saya. Sebenernya saya lemah dalam konsep2 seperti ini. IPK aja tiarap. Jika ada kesalahan mohon koreksinya.

Visit Yogyakarta / Jogja