Ok, a little confession.. I know minggu ini saya seharusnya melanjutkan bagian 3 dari seri Blackberry Game Development Tutorial, hanya saja minggu ini saya masih relatif sibuk sehingga belum sempat menyelesaikan artikelnya (itu, dan karena ngejar ngabisin nonton The Big Bang Theory season 2
). So instead, untuk minggu ini saya akan menulis mini-article tentang bitwise state setting sebagai gantinya. Teori ini sebenarnya bisa diaplikasikan ke berbagai macam programming language, namun karena Java adalah bahasa yang paling saya kuasai, maka sample-sample yang saya berikan akan saya tulis dengan Java juga. Okay, on to the topic..
Asumsikan kita dihadapkan pada problem berikut: Kita akan membuat sebuah game rock-paper-scissors. Pada model yang sederhana, rule-nya adalah sebagai berikut:
- Rock beats scissors
- Scissors beats paper
- Paper beats rock
Untuk kasus ini, kita bisa membuat method sederhana untuk mengecek pemenang:
private static final int ROCK = 1;
private static final int PAPER = 2;
private static final int SCISSORS = 3;
public String checkWin(int myHand, int enemyHand) {
//bila sama, maka seri
if (enemyHand == myHand)
return "It's a Tie!";
switch(myHand) {
case PAPER:
if (enemyHand == ROCK)
return "You Win!";
break;
case ROCK:
if (enemyHand == SCISSORS)
return "You Win!";
break;
case SCISSORS:
if (enemyHand == PAPER)
return "You Win!";
break;
}
//pemain kalah
return "You Lose!"
}
Namun bagaimana bila melakukan perhitungan yang lebih kompleks, seperti perbandingan elemen? Katakanlah kita memiliki sebuah kasus sbb: kita ingin membuat game seperti rock-paper-scissors, namun ketimbang menggunakan gunting, batu dan kertas kita ingin membuatnya lebih kompleks dengan menggunakan elemen-elemen seperti air, api dan tanah sebagai pembandingnya. Rule-nya adalah sebagai berikut:
- Water defeats Fire
- Fire defeats earth
- Earth defeats Water
- Wind defeats Earth and Fire, but loses to Water
- Thunder defeats Earth, Wind and Water, but loses to Fire
(Note: bukan contoh yang paling realistis memang, but please bear with me

)
Untuk kasus ini, kita bisa menyelesaikannya dengan menggunakan beberapa if-then-else statement, namun kita bisa membuatnya lebih sederhana dengan menggunakan bitwise operation. Sebelumnya, mari kita bahas beberapa bitwise operation yang bisa kita gunakan.
BhimZ adalah seorang Mobile Development Manager di salah satu perusahaan swasta di Jakarta, membantu mengembangkan berbagai macam aplikasi mobile khususnya untuk platform smartphone. Bersama rekan-rekannya sesama hobbyist, BhimZ juga membentuk Pokkon Studio sebagai project after office dan memulai mengembangkan beberapa game baik web-based maupun mobile, beberapa di antaranya sedang dirilis untuk Blackberry AppWorld dan Android Market.