Proyek SilverLight Pertamaku: Game Memory Sederhana [Part 1]
Baru kemarin, saya blank total
masalah SilverLight. Pengen belajar, dan untuk saya cara tercepat untuk mengerti adalah dengan mencoba.
Setelah membaca-baca beberapa tutorial dasar SilverLight, saya putuskan mau mencoba membuat sebuah game memory sederhana. Temanya salah satu karakter manga favorit saya, Crayon ShinChan..
Ronde 1 : Layout Grafik dulu..
Layout dan grafik di silverlight menggunakan bahasa xaml, bahasa markup berbasis xml yang berfokus pada user interface. Cukup mudah dimengerti, saya cukup tahu tentang HTML dan XML, jadi konsep tidak ini begitu baru buat saya.
Dengan mengacu pada tutorial ini dan mengandalkan VS 2008, saya berniat untuk mengambil jalan purist, hanya mengandalkan kode. Go!
~~~~
Membuat komponen tidak begitu sulit, tapi usaha menempatkan posisi dan pernak-pernik-nya bikin saya frustasi
memakai grid masih terasa kaku, tapi kalau memakai margin lebih repot lagi. Yah, saya memang tidak begitu berpengalaman membuat grafis dari code saja sih.. kalau membuat html saja selalu pakai Dreamweaver. Setelah 2 jam berkutat berusaha meluruskan component dan mengatur
posisinya agar pas, saya memilih mencoba memakai MS Expression Blend

Memakai Blend ternyata jauh lebih mudah
. Sayang sekali WYSIWYG editor ini tidak menyatu dengan VS studio.
Oke, ini layout yang telah saya buat:

Walau art sense saya kampungan, kurasa ini tidak terlalu buruk... Coding Time.
Ronde 2 : C#, I Choose You!
Programming dalam Silverlight dapat menggunakan bahasa pemrograman .NET apa saja, tapi setelah menimbang-nimbang, saya memilih menggunakan C#.
Alasan?
1. Saya tidak pernah memakainya dan pengen belajar C#
2. Karena kebanyakan tutorial dan orang lain pake C#, biar lebih konek.
Saya belum tahu caranya menampilkan code diblog ini biar enak dibaca.. tapi seluruh source codenya bisa didownload disini : sincan.zip
Pengalaman ngoding-nya:
- Pertama-tama saya mau membuat collection untuk gambar-gambar yang akan diload dulu. Shock! di C# tidak disediakan kelas generik Vector! Aagh
, padahal Vector selalu menjadi kelas collection andalan saya di Java dan C++.. Oh well, untungnya kelas list di C# tidak begitu jauh beda.
- Lalu, saya mencari dulu algoritma yang cocok untuk "mengocok" gambarnya. Setelah konsultasi pada Syekh Google Al-Wikipedia, ketemu algoritma Fisher-yates Shuffle. Contoh di Wikipedia dalam Java, tapi mengubahnya ke C# hanya beberapa menit. Saya rasa coding di C# tidak jauh beda dengan Java.

- Membuat fungsi untuk loading image,menangani klik dari mouse, dll. Tidak bertemu masalah disini..
- Tapi saat di test, enggak jalan. Ugh. Setelah ditelusuri, masalahnya ternyata pada saat membandingkan 2 gambar. Di library C# ternyata tidak mempunyai fungsi untuk membandingkan 2 gambar, sama atau tidak. 1 jam saya stuck disini. Saya sudah coba fungsi standar equals(), getHashCode(), getValue(), Source.. semuanya gagal. Sebetulnya masalah ini dapat dihindari hanya dengan membuat kelas turunan baru dari Image dengan informasi tambahan, tapi berarti banyak yang perlu diedit ulang.
- Akhirnya saya membuat fungsi sendiri untuk membandingkan 2 Image berdasarkan hubungannya dengan List dari gambar. Alternatif lain yang lebih universal adalah mengecek per pixel, tapi kayaknya malah bakal ngelambatin untuk program ini.
Game Selesai! ... atau paling tidak, versi betanya, sih.. sampai disini dulu part 1. 
di Part 2, Insya Allah game ini akan saya tambahkan animasi, suara, timer, scoring system, tampilan "You Win!" yang bagusan, dll. 
Gambar Crayon ShinChan saya dapat dari sini: http://abnormalchild.deviantart.com/art/kureyon-shin-chan-122920030
Download Source Code-nya : sincan.zip
Diharapkan saran dan kritiknya..