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 <<" ";
}
}
}
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 <<" ";
}
}
}