Cara Membuat Game Gunting Batu Kertas (GUBATA) Dengan Bahasa C++ - TechnoGen
Abdul Halim ZHR

Cara Membuat Game Gunting Batu Kertas (GUBATA) Dengan Bahasa C++


TechnoGen | Cara Membuat Game Gunting Batu Kertas (GUBATA) Dengan Bahasa C++ - Halo sobat ! udah lama saya gak nulis-nulis blog lagi nih. Nah kali ini saya akan bahas tentang Cara Membuat Game Gunting Batu Kertas (GUBATA) Dengan Bahasa C++. Bagaimana sih permainan Gunting Batu Kertas (GUBATA) itu? Gimana Source Code nya? Nah silahkan simak penjelasan dibawah ini.

Bagaimana sih permainan Gunting Batu Kertas (GUBATA) itu?

Cara Membuat Game Gunting Batu Kertas (GUBATA) Dengan Bahasa C++ - Sebagaimana yang saya kutip dari Wikipedia, Gunting Batu Kertas (GUBATA) adalah sebuah permainan tangan dua orang yang digunakan untuk pemilihan acak, seperti halnya pelemparan koin, dadu, dan lain-lain.


BatuGuntingKertas
Batu                   Gunting                       Kertas
Setiap isyarat mengalahkan satu dari dua isyarat lainnya. 
 Terdapat tiga isyarat tangan dalam permainan ini. Batu digambarkan oleh tangan mengepal, gunting digambarkan oleh jari telunjuk dan tengah, kertas digambarkan oleh tangan terbuka. Tujuan dari permainan adalah mengalahkan lawan bermain. Aturan standar adalah batu mengalahkan gunting, gunting mengalahkan kertas, dan kertas mengalahkan batu.

Jika kedua pemain mengeluarkan isyarat yang sama, maka permainan diulang. Kadangkala pemain menggunakan sistem berulang-ulang artinya sekali kemenangan tidak cukup untuk menghentikan permainan. Misalnya pemain yang menang 5 kali terlebih dahulu menjadi pemenang. (sumber wikipedia)

Nah dalam kesempatan kali ini saya akan menjelaskan Cara Membuat Game Gunting Batu Kertas (GUBATA) Dengan Bahasa C++ yangmana kita sebagai player bertanding dengan CPU atau PC sebagai lawan dengan rule siapa yang menang 5 kali, ialah yang menjadi juara.

Berikut source code yang saya buat dalam kesempatan kali ini :

Source Code Program Game Gunting Batu Kertas (GUBATA) Dengan Bahasa C++

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>           // digunakan untuk func getch()
#include <windows.h>        //digunakan untuk func Sleep() dan system(“cls”)
using namespace std;

#define SKORMENANG 5      //mendefinisikan variable skormenang, yang berarti jika poin sampai dengan 5, maka game berakhir.

class Gubeka{
    private:
       char player, pc;   //Inisialisasi pilihan input player dan pc
        int poinpc;                                                   //Inisialisasi poin pc
        int poinplayer;                                           //Inisialisasi poin player
        int pemenang;
    public:
        Gubeka(){                                                   //konstruktor mendefinisikan value variable poinpc dan poinplayer
            poinpc=0;
            poinplayer=0;
        }
        int Process(char A, char B){                  //func process berfungsi sebagai pengoperasian jawaban dari PC dan player
            switch(A){
                case 'b':                                                //jika player memilih BATU, maka bandingkan dengan pilihan pc
                    if(B=='g') return 1;                       //jika pc memilih GUNTING maka player menang
                    else if(B=='k') return 2;              //jika pc memilih KERTAS maka pc menang
                    else return 0;                                 //jika sama. Maka DRAW
                case 'g':                                                //jika player memilih GUNTING, maka bandingkan dgn pilihan pc
                    if(B=='k') return 1;                       //jika pc memilih KERTAS maka player menang
                    else if(B=='b') return 2;             //jika pc memilih BATU maka pc menang
                    else return 0;                                 //jika sama. Maka DRAW
                case 'k':                                                //jika player memilih KERTAS, maka dibandingkan dengan pilihan pc
                    if(B=='b') return 1;                       //jika pc memilih BATU maka player menang
                    else if(B=='g') return 2;              //jika pc memilih GUNTING maka pc menang
                    else return 0;                                 //jika sama. Maka DRAW
                default:
                    return -1;
            }
        }
        char Randomizer () {
            char pilihan;
            srand(time(NULL));                             //inisialisasi generator bilangan acak
            int nilai = rand()%3;                             // ambil bilangan acak antara 0-2
            switch (nilai){
                case 0: pilihan='b'; break;             //jika terpilih angka 0, maka pc memilih batu
                case 1: pilihan='g'; break;              //jika terpilih angka 1, maka pc memilih gunting
                case 2: pilihan='k'; break;              //jika terpilih angka 2, maka pc memilih kertas
            }
            return pilihan;                                       //mengembalikan nilai pilihan dari pc
        }
        void PlayGame(){
            starts:                                                       //checkpoint jika player mau restart game
            do {
                cout << "Masukkan: g, b, atau k\n";
                cout << "Gunting(g),\nBatu(b), \nKertas(k)\n\t: ";
                cin >> player;                                                                                     //input pilihan dari player

                pc = Randomizer();                                                                          //mengambil value kembalian dari randomizer
                if (pc == 'g'){                                                                                       //Cukup Jelas
                    cout << "\nPC memilih Gunting\n";                                    
                }else if (pc == 'b'){                                                                            //---------------
                    cout << "\nPC memilih Batu\n";
                }else if (pc == 'k'){                                                                            //---------------
                    cout << "\nPC memilih Kertas\n";
                }
                pemenang = Process(player, pc);                                             //ambil value dari Process() dengan
memasukkan argument variable player dan pc. Lalu store ke variable pemenang
                if (pemenang == 0) cout << "Draw!\n";
                else if (pemenang == 1) {
                    cout << "Anda menang!\n";
                    poinplayer++;                                                                                //poin player bertambah 1 jika menang
                }
                else if (pemenang == 2) {
                    cout << "PC menang!\n";
                    poinpc++;                                                                                        //poin pcr bertambah 1 jika menang
                }
                else cout << "Maaf Anda memasukkan pilihan ilegal!\n";

                cout << "\nPoin Anda\t: " << poinplayer;                              //poin player ditampilkan
                cout << "\nPoin PC\t\t: " << poinpc;                                        //poin pc ditampilkan
                cout << "\nTekan enter untuk lanjut";
                getch();
                system("cls");
            }
            while (poinplayer < SKORMENANG && poinpc < SKORMENANG);
//jika skor sudah sampai 5 maka
game end
if (poinplayer > poinpc) {                                                              //jika poin player lebih dari pc, maka
player menang
     cout << "Anda menang untuk Game kali ini!\n";
                }
            else                                                                                                            //jika poin pc lebih dari player, maka
player menang
                {
                    cout << "PC menang untuk Game kali ini!\n";
                }
            int ask;
            ask_restart:
            cout << "\n\nRestart Game? 1=yes, 2=no,\n";                       //muncul opsi restart game atau tidak..
                cin>>ask;
                if (ask == 1){                                                                                       //jika input 1, maka restart game, semua
     poinpc =0;                                                                                          poin kembali ke value = 0
     poinplayer=0;                                                                              
                    system("cls");
                    goto starts;                                                                                     //kembali ke checkpoint starts
                }else if(ask == 2){                                                                             //jika input 2 maka Game selesai.
                    exit(0);                                                                                                             //exit Game
                }else{
                    goto ask_restart;                                                                                         //jika selain itu. Looping terhadap
                }                                                                                                                                 checkpoint ask_restart
            }
};

int main() {
    Gubeka Game;
    cout << "Initializing Randomizer...\n";
    Sleep(500);                                                                                                                     //delay setengah detik
    Game.Randomizer();                                                                                                 //init randomizer
    cout << "Initializing Game Process...\n";
    Sleep(500);                                                                                                                     //delay setengah detik
    cout << "Game Started...\n";
    Sleep(500);                                                                                                                     //delay setengah detik
    system("cls");
    Sleep(500);                                                                                                                     //delay setengah detik
    Game.PlayGame();                                                                                                     //Start Game

    return 0;
}



Fitur Initializing on Start Program

Input Pilihan Player

PC menginput pilihan random

Kondisi Player ketika menang

Kondisi ketika player kalah dan PC menang


Nah itulah  Cara Membuat Game Gunting Batu Kertas (GUBATA) Dengan Bahasa C++ . Jika Kalian punya source code yang lebih seru, silahkan coret-coret share di kolom komentar ya. Terima kasih :D