Dalam permainan kartu, Straight dan Royal Straight adalah dua jenis kartu yang memiliki nilai tertentu. Fungsi berikut ini akan membantu kita untuk membuat kartu-kartu tersebut.
Mengenal Kartu
Sebelum kita masuk ke fungsi, kita harus memahami bagaimana kartu-kartu diurutkan dan dibandingkan. Dalam permainan kartu, kartu-kartu dapat diurutkan berdasarkan warna (spade, clover, heart, diamond) dan nilai (2-14). Kita juga harus memahami apa itu Straight dan Royal Straight.
Fungsi IsContinuous
Fungsi IsContinuous digunakan untuk mengetahui apakah kartu-kartu yang kita miliki adalah kartu yang terurutkan secara kontinu. Fungsi ini akan membandingkan nilai kartu-kartu dan mengembalikan nilai boolean (true atau false) jika kartu-kartu tersebut terurutkan secara kontinu.
public boolean IsContinuous(ArrayList<Integer> fiveCard) {
for(int i=1;i<5;i++) {
if(fiveCard.contains(14) && fiveCard.contains(2)) {
return true;
}
if((Integer)fiveCard.get(i-1) != (Integer)fiveCard.get(i)-1) {
return false;
}
}
return true;
}
Fungsi GetStraightResult
Fungsi GetStraightResult digunakan untuk mengetahui apakah kartu-kartu yang kita miliki adalah kartu Straight atau Royal Straight. Fungsi ini akan membandingkan warna dan nilai kartu-kartu dan mengembalikan string yang menggambarkan tipe kartu.
public String GetStraightResult(ArrayList<Integer> fiveCard, String pattern) {
if ((fiveCard.size() >= 5) && (IsContinuous(fiveCard) == true)) {
for (int i = fiveCard.size(); i > fiveCard.size() - 5; i--) {
if ((Integer) fiveCard.get(i - 1) == 14 && fiveCard.contains((Integer)2)) {
return pattern + "_A" + "_RoyalStraight";
}
}
}
return pattern + "_" + (fiveCard.get(0)) + "_Straight";
}
Penggunaan Fungsi
Fungsi IsContinuous dan GetStraightResult dapat digunakan untuk membuat kartu Straight dan Royal Straight. Kita hanya perlu memanggil fungsi-fungsi tersebut dengan parameter yang sesuai, yaitu array list yang mengandung nilai kartu-kartu dan warna kartu.
ArrayList<Integer> card = new ArrayList<>();
// ... isi card ...
if (IsContinuous(card)) {
String result = GetStraightResult(card, "Spade");
System.out.println(result);
}
Dengan menggunakan fungsi-fungsi tersebut, kita dapat membuat kartu Straight dan Royal Straight dengan lebih mudah.