RPS Game (Random VS Roulette Wheel)

Nah, ini dia yang kita tunggu. Baru bisa kelar kemarin. Sesuai dengan saya janjikan di artikel sebelumnya RPS Game (User VS Random), bahwa saya akan membuat program RPS dengan strategi Random VS Roulette Wheel. Sebelumnya, saya akan memberikan sedikit penjelasan mengenai Roulette Wheel itu sendiri. Roulette Wheel itu sendiri merupakan roda yang digunakan dalam permainan undi, dimana kita akan melemparkan bola ke roda tersebut, kemudian jika bola tersebut berhenti tepat di nomor yang kita pesan saat roda berhenti berputar maka kitalah pemenangnya. Namun penggunaan konsep Roulette Wheel pada game RPS merupakan strategi dalam penentuan input yang akan digunakan diantara Rock Paper dan Sciccors itu sendiri. Jadi, Roulette Wheel pada RPS akan dibagi menjadi 3 bagian seperti pada gambar di bawah. Sehingga antara Rock Paper dan Scissors akan memiliki masing-masing bagian yang sama. Prinsip kerjanya adalah ketika mengeluarkan Rock kemudian ia kalah, maka presentasi untuk  Rock akan dikurangi, sehingga ke depannya, Rock akan tidak dikeluarkan. Begitu pula bagi Scissors dan Paper. Hal ini berlaku sebaliknya ketika mengalami kemenangan. Ketika Rock menang, maka presentasi untuk Rock akan ditambah. Begitu pula bagi Paper dan Scissors.
Sehingga presentasinya akan mengalami perubahan sesuai dengan fekuensi kemenangan yang diraih dan kekalahan yang didapatkan. Dan bentuk pada Roulette Wheel akan berubah pula. Perubahan ini akan memberi pengaruh kepada apa yang akan dikeluarkan pada putaran selanjutnya. Semakin tinggi presentasi kemengan yang didapat, maka semakin sering pula ia akan dikeluarkan.
Disini, saya membuatnya dalam program Java menggunakan NetBeans. Namun, ada sedikit perbedaan dalam penerapan prinsip Roulette Wheel. Dalam program ini, di awal saya menetapkan nilai masing-masing Gunting, Batu dan Kertas adalah 0. Kemudian, ketika kalah, maka yang kalah akan ditambahkan 1. Misalnya, saya mengunakan Gunting, kemudian saya kalah. Maka nilai Gunting akan bertambah 1. Sehingga pada putaran selanjutnya, saya tidak menggunakan Gunting lagi. Karena yang dikeluarkan adalah yang memiliki nilai yang paling kecil kekalahannya. Begitu seterusnya hingga akhir program. Disini, saya akan mencoba mengadu antara strategi Random VS Roulette Wheel pada 100 ronde. Di akhir, kita akan melihat skor menang dan kalah dari masing-masing strategi. Sehingga, kita bisa tau strategi mana yang paling ampuh untuk digunakan. Ini dia source codenya:
import java.util.Scanner;
import java.util.Random;
/**
 *
 * @Muh. Idil Haq Amir
 * www.idil810.blogspot.com
 */

public class Random_VS_Wheel{
    public static void main(String [] args){
        int skorKom = 0;
        int skorWheel = 0;
        int loseWheel = 0;
        int loseKom = 0;
        int Draw = 0;
        
        for(int i=1;i<=1000;i++){
        Random random = new Random();
        Scanner reader = new Scanner (System.in);                       
            
            int Kom = random.nextInt(3)+1;
                        
        switch (Kom){
            case 1: Kom = 1; break;
            case 2: Kom = 2; break;
            case 3: Kom = 3; break;
        }
        int Gunting=0;
        int Batu=0;
        int Kertas=0;
        int pilihan;
        
        if(Gunting<Batu && Gunting<Kertas){
            pilihan=Gunting;
        }else{
            if(Batu<Gunting && Batu<Kertas){
                pilihan=Batu;
            }else{
                pilihan=Kertas;
            }
        }
        int Wheel=pilihan;
        if(pilihan==Gunting){
            Wheel=1;
        }else{
            if(pilihan==Batu){
                Wheel=2;
            }else{
                Wheel=3;
            }
        }
        
        if (Kom == Wheel){
            Draw++;
        }else{
            if (Kom  == 2){
                if (Wheel == 3){                        
                    skorWheel++;
                    loseKom++;
                }
                if (Wheel == 1){
                    skorKom++;
                    loseWheel++;
                    Gunting++;
                }
            }
            if (Kom  == 3){
                if (Wheel == 2){
                    skorKom++;
                    loseWheel++;
                    Batu++;
                }
                if (Wheel == 1){
                    skorWheel++;
                    loseKom++;
                }            
            }
            if (Kom  == 1){
                if (Wheel == 2){
                    loseKom++;
                    skorWheel++;
                }
                if (Wheel == 3){
                    loseWheel++;
                    skorKom++;
                    Kertas++;
                }
            }
        }
        }
        
        System.out.print("\n");
        System.out.print("\n=>Skor Wheel:"
                + "\nMenang : "+skorWheel
                + "\nKalah  : "+loseWheel);
        System.out.print("\n=>Skor Komputer:"
                + "\nMenang : "+skorKom
                + "\nKalah  : "+loseKom);
        System.out.println("\n=>Draw : "+Draw);
    }
}
Mudah bukan?? Kode programnya tidak jauh berbeda dengan RPS Game (User VS Random) pada artikel sebelumnya. Selamat Mencoba! :)
Di postingan selanjutnya, saya akan mencoba membuat RPS yang mana programnya akan mengadu strategi antara Roulette Wheel dan Tit for Tat (CopyCat)...

0 comments: