C++: Game – Gunting, Batu, Kertas

February 15, 2010

Pernah main gunting-batu-kertas? Permainan suit yang dilakukan oleh 2 orang, dengan aturan sebagai berikut:

A gunting, B kertas => A menang
A gunting, B batu => B menang
A gunting, B gunting => draw

..dst.


Sederhananya, gunting selalu menang dari kertas. Kertas selalu menang dari batu. Dan batu selalu memang dari gunting.

Kali ini, Anda akan bermain melawan PC(Personal Computer a.k.a komputer) :D Anda akan suit/memilih terlebih dahulu, kemudian disusul oleh PC. Permainan akan berakhir jika salah satu dari pemain sudah mengumpulkan 3 poin kemenangan.

Baik, langsung saja, berikut kodenya:

#include <iostream.h>
#include <stdlib.h>
#include <time.h>

#define SKORMENANG 3

char AmbilPilihanAcak (void);
int FungsiMenang(char A, char B);

int main() {
    char kamu, aku;
    int poinku = 0;
    int poinmu = 0;
    int pemenang;

    do {
        cout << "\n\nMasukkan: g, b, atau k";
        cout << "\ngunting(g), batu(b), kertas(k): ";
        cin >> kamu;

        aku = AmbilPilihanAcak();
        cout << "PC memilih " << aku << "\n";

        pemenang = FungsiMenang(kamu, aku);

        if (pemenang == 0) cout << "Draw!\n";
        else if (pemenang == 1) {
            cout << "Anda menang!\n";
            poinmu++;
        }
        else if (pemenang == 2) {
            cout << "PC menang!\n";
            poinku++;
        }
        else cout << "Maaf Anda memasukkan pilihan ilegal!\n";

        cout << "Poin Anda: " << poinmu;
        cout << " Poin PC: " << poinku;
    }
    while (poinmu < SKORMENANG && poinku < SKORMENANG);

    if (poinmu > poinku)
        cout << "\nAnda menang untuk kompetisi ini!\n";
    else
        cout << "\nPC menang untuk kompetisi ini!\n";
    return 0;
}

char AmbilPilihanAcak (void) {
    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;
        case 1: pilihan='g'; break;
        case 2: pilihan='k'; break;
    }
    return pilihan;
}

int FungsiMenang(char A, char B){
    switch(A){
        case 'b':
            if(B=='g') return 1;
            else if(B=='k') return 2;
            else return 0;
        case 'g':
            if(B=='k') return 1;
            else if(B=='b') return 2;
            else return 0;
        case 'k':
            if(B=='b') return 1;
            else if(B=='g') return 2;
            else return 0;
        default:
            return -1;
    }
}

jika dijalankan, hasilnya kurang lebih seperti ini:

Klik Untuk Memperbesar

null

5 Responses to “C++: Game – Gunting, Batu, Kertas”

  1. cymuh Says:

    hm……
    lumayan juga…..

    COBA AHh……..

  2. cici Says:

    bgus bgt progrm’x, bole mnt pnjlsan s.code’x yg detail biar tw gmn jln’x

  3. Rio Says:

    Mantap gan…

  4. hussen Says:

    thanks….n sedap games nie…. sambil tu dapat jugak back up mini pojet kawe….tq boh…..


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.