RadarURL Siskom Black 4rt: Game Tembak Bebek

Kamis, 05 April 2012

Game Tembak Bebek

Source code ini saya dapatkan dari blog tetangga (teman sekelas)...saya posting aja buat nambah nambah isi blog.

source code :

#include<iostream>//digunakan karena menggunakan fungsi cout
#include<windows.h>
using namespace std;

//variabel global untuk menyimpan informasi
//tombol yang ditekan
INPUT_RECORD InRec;



//fungsi delay(), digunakan untuk menunda proses eksekusi
//selama beberapa millisecond
#define delay Sleep

//fungsi gotoxy(), digunakan untuk menempatkan kursor
//pada posisi KOLOM dan BARIS
void gotoxy(unsigned int kolom, unsigned int baris)
{
    COORD posisi = {kolom,baris};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), posisi);
}

//fungsi kbhit(), digunakan untuk mendeteksi terjadinya
//penekanan tombol.  Jika terdapat tombol yang ditekan maka fungsi ini
//akan mengembalikan nilai TRUE sebaliknya FALSE
bool kbhit()
{
    bool result = false;
    DWORD EventCount,NumRead;   
    GetNumberOfConsoleInputEvents(GetStdHandle(STD_INPUT_HANDLE), &EventCount);
    if(EventCount>0)
    {
        ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &InRec, 1, &NumRead);
        result = InRec.EventType == KEY_EVENT;
    }
    return result;
}

//fungsi getch(), digunakan untuk mengambil informasi tombol yang
//terakhir kali ditekan.
unsigned int getch(bool kodeAscii=true)
{
    if(kodeAscii==true)
        return InRec.Event.KeyEvent.uChar.AsciiChar;
    else
        return InRec.Event.KeyEvent.wVirtualKeyCode;
}

// DAFTAR TOMBOL
//daftar ini akan berlaku jika kita memanggil fungsi getch()
//seperti berikut : getch(false);
const unsigned int PANAH_KIRI  = 37;
const unsigned int PANAH_KANAN = 39;
const unsigned int PANAH_ATAS  = 38;
const unsigned int PANAH_BAWAH = 40;
const unsigned int SPASI = 32;

//huruf A atau a mempunyai kode yang sama.  Aturan yang sama berlaku
//untuk huruf yang lain.
//huruf A ... Z dimulai dari 65 .. 90
//angka 0 ... 9 dimulai dari 48 .. 57
const unsigned int HURUF_X     = 88;

int main()
{
    system( "color F9");// untuk merubah warna latar dan tullisan 
    gotoxy(10,4); cout << "===================================";
    gotoxy(11,5); cout << "{{       TEMBAK SASARAN        ))";
    gotoxy(10,6); cout << "(((       DIAN PANGESTU         )))";
    gotoxy(11,7); cout << "((         K11111021           ))";
    gotoxy(10,8); cout << "===================================";

    gotoxy(10,19); cout << "     ARAH SENJATA =             ";
    gotoxy(10,20); cout << "     TEMBAK       = TIDAK       ";
    gotoxy(10,21); cout << "     KENA         = 0           ";
    gotoxy(10,22); cout << "   [ Tekan 'x' Untuk Keluar ] ";

    unsigned int tekan='w';

    //kontrol arah gerak tulisan
    //kalau TRUE tulisan akan bergerak ke KANAN (MAJU)
    //kalau FALSE tulisan akan bergerak ke KIRI (MUNDUR)
    bool maju = true;

    //kalau tombol SPASI ditekan,
    //variable ini akan di set TRUE
    bool tembak = false;

    //area animasi
    unsigned int BATASKANAN = 45;
    unsigned int BATASKIRI  = 10;
    unsigned int BATASATAS  = 10; //Batas atas dari jalannya PELURU
    unsigned int kolom      = 10;
    unsigned int baris      = 10; //kolom dari TARGET
    unsigned int kolom1     = 20; //baris dari TARGET
    unsigned int baris1     = 18; //kolom dari SENJATA
    unsigned int kolom2     = 20; //baris dari SENJATA
    unsigned int baris2     = 17; //kolom dari PELURU
    unsigned int kena       = 0;  //baris dari PELURU

    //teks yang akan dicetak
    string target = "..'0-0'..";
    string senjata = "Y";
    string peluru = "^";

    //perulangan ini akan diulang selama tekan TIDAK SAMA dengan 'x'
    while(tekan!=HURUF_X)
    {

        //kontrol posisi
        if(maju==true)
        {
            if (kolom>=BATASKANAN-target.length())
            {
                maju=false;
            } else
            {
                kolom++;
            }
        } else
        {
            if (kolom<=BATASKIRI)
            {
                maju=true;
            } else
            {
                kolom--;
            }
        }

        //kontrol senjata
        if(tekan == PANAH_KANAN)
        {
            //reset tombol tekan
            tekan=0;

            if (kolom1<BATASKANAN-senjata.length())
            {
                kolom1++;
                kolom2 = kolom1;
            }

            gotoxy(30,19);cout<<"KANAN";

        } else
        if(tekan==PANAH_KIRI)
        {
            //reset tombol tekan
            tekan=0;

            if (kolom1>BATASKIRI)
            {
                kolom1--;
                kolom2 = kolom1;
            }

            gotoxy(30,19);cout<<"KIRI ";

        } else           
        if(tekan==SPASI)
        {
            tembak = true;
            tekan=0;
            baris2 = 17;
        }

        //kontrol peluru
        if(tembak==true)
        {           
            if (baris2>BATASATAS)
            {
                //peluru selalu bergerak ke atas.
                //ini berarti baris harus dikurangi
                baris2--;

                gotoxy(30,20);cout << " IYA ";
            } else
            {
                //ketika posisi peluru sudah mencapai BATASATAS
                //kita bisa tembak lagi.
                tembak=false;

                //deteksi tabrakan PELURU & teks CPP
                if(kolom2>=kolom && kolom2<=kolom+target.length()-1)
                {
                    kena++;
                    gotoxy(30,21);cout << kena;
                }
                //ketika teks telah tertembak 3 kali maka dinyatakan menang
                if (kena==3)
                {
                            gotoxy (15,24);cout<<"(SELAMAT ANDA MENANG)";
                            }
                           

                gotoxy(30,20);cout << "TIDAK";


            }
        }

        //TULIS teks
        gotoxy(kolom,baris); cout<< target;

        //menampilkan senjata
        gotoxy(kolom1,baris1); cout << senjata;

        //menampilkan peluru
        //hanya dilakukan jika kita menembak
        if(tembak==true)
        {
            gotoxy(kolom2,baris2); cout << peluru;
        }

        //mengecek apakah terjadi penekanan tombol,
        //jika 'ya', mennyimpan tombol tersebut pada variabel TEKAN
        if(kbhit()) tekan = getch(false);

        //cout << " " <<tekan<<" "; //Cek kode tombol yang ditekan, aktifkan baris ini.

        delay(50);

        //HAPUS teks
        cout.width(target.length());

        //untuk menghilangkan jejak geraknya teks
        cout.fill(' ');

        //Diantara tanda kutip berikut, akan diisi dengan KARAKATER
        //yang ditentukan lewat fungsi cout.fill(KARAKATER) diatas
        gotoxy(kolom,baris); cout<<"";

        //hapus posisi lama senjata
        gotoxy(kolom1,baris1); cout <<" ";

        //hapus posisi lama peluru
        if(tembak==true)
        {
            gotoxy(kolom2,baris2); cout <<" ";
        }
    }

}
Related Posts Plugin for WordPress, Blogger...
Coming Soon !!! System Computer Grand Event ( Screen ) Yang Akan Diselenggarakan Oleh Prodi Sistem Komputer Universitas Tanjungpura, Info Selanjutnya Akan Diposting Di Website Ini ... Ikuti Terus Berita - Berita SiskomBlack4rt ||||||| Presented By @ArMy