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
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