#include <conio.h>
#include <time.h>
#include <stdlib.h>
//prototype
void fungsiTombol_gerakBenda (int X1, int Y1, int X2, int Y2);
void gambar_kotak(int x1,int y1,int x2,int y2);
void baca_keyboard(int &ascii, int &scan);
void benda1(int X1,int Y1);
void benda3(int X1,int Y1);
void benda2(int X2,int Y2);
void benda4(int X2,int Y2);
void tunda(double detik);
void benda_keluar();
void main()
{
gotoxy(1, 25); cout << "Mulai";getch();
gambar_kotak(2,2,79,23);
}
void gambar_kotak(int x1,int y1,int x2,int y2)
{
int x, y;
for(x = x1+1; x<=x2-1; x++)
{
gotoxy(x,y1); cout << (char)196;
gotoxy(x,y2); cout << (char)196;
}
for(y = y1+1; y<=y2-1; y++)
{
gotoxy(x1,y); cout << (char)179;
gotoxy(x2,y); cout << (char)179;
}
gotoxy(x1,y1);cout << (char)218;
gotoxy(x2,y1);cout << (char)191;
gotoxy(x1,y2);cout << (char)192;
gotoxy(x2,y2);cout << (char)217;
benda_keluar();
}
void benda_keluar()
{
int X1, Y1, X2, Y2;
randomize();
X1 = 3 + random(76);
Y1 = 3 + random(20);
gotoxy(X1,Y1);cout << '0';
X2 = 3 + random(76);
Y2 = 3 + random(20);
gotoxy(X2,Y2);cout << 'Q';
fungsiTombol_gerakBenda(X1, Y1, X2, Y2);
}
void benda1(int X1,int Y1)
{
gotoxy(X1,Y1);cout << '0';
}
void benda2(int X2,int Y2)
{
gotoxy(X2,Y2);cout << 'Q';
}
void benda3(int X1,int Y1)
{
gotoxy(X1,Y1);cout << ' ';
}
void benda4(int X2,int Y2)
{
gotoxy(X2,Y2);cout << ' ';
}
void fungsiTombol_gerakBenda(int X1, int Y1, int X2, int Y2)
{
int pilihan_f;
int arah_benda1;int arah_benda2;
int kiriatas;int atas;int kananatas;int kiri;int kanan;
int kiribawah;int bawah;int kananbawah;
int scan ;int ascii;
int F1;int F2;int F3;int F4;
F1 = 1;F2 = 2;F3 = 3;F4 = 4;
kiriatas =5;atas =6;kananatas =7;kiri =8;kanan =9;
kiribawah =10;bawah =11;kananbawah =12;
do
{
baca_keyboard(ascii, scan);
switch(scan)
{
case 59:pilihan_f = F1;break; // benda 1 aktif
case 60:pilihan_f = F2;break; // benda 2 aktif
case 61:pilihan_f = F3;break; // benda1_2 aktif
case 62:pilihan_f = F4;break; // benda1_2 nonaktif
}
if(pilihan_f == F1 || pilihan_f == F3)
{
switch(scan)
{
case 71: arah_benda1 = kiriatas ; break; //home
case 72: arah_benda1 = atas; break; //up
case 73: arah_benda1 = kananatas ; break; //pageUp
case 75: arah_benda1 = kiri ; break; //left
case 77: arah_benda1 = kanan ; break; //right
case 79: arah_benda1 = kiribawah ; break; //end
case 80: arah_benda1 = bawah ; break; //down
case 81: arah_benda1 = kananbawah ; break; //pageDown
}
}
tunda (0.1);
if ( arah_benda1 == kiri && X1 > 3 )
{
benda3(X1,Y1);
X1--;
benda1(X1,Y1);
if(X1==3)
{
arah_benda1=kanan;
}
}
else if ( arah_benda1 == kanan && X1 < 78 )
{
benda3(X1,Y1);
X1++;
benda1(X1,Y1);
if(X1==78)
{
arah_benda1=kiri;
}
}
else if (arah_benda1 == atas && Y1 > 3 )
{
benda3(X1,Y1);
Y1--;
benda1(X1,Y1);
if(Y1==3)
{
arah_benda1=bawah;
}
}
else if ( arah_benda1 == bawah && Y1 < 22 )
{
benda3(X1,Y1);
Y1++;
benda1(X1,Y1);
if(Y1==22)
{
arah_benda1=atas;
}
}
else if (arah_benda1 == kananatas && Y1 > 3 && X1<78 )
{
benda3(X1,Y1);
Y1--; X1++;
benda1(X1,Y1);
if(X1 == 78 && Y1 == 3)
{
arah_benda1=kiribawah;
}
else if(Y1==3)
{
arah_benda1=kananbawah;
}
else if(X1==78)
{
arah_benda1=kiriatas;
}
}
else if (arah_benda1 == kananbawah && Y1 < 22 && X1<78)
{
benda3(X1,Y1);
Y1++; X1++;
benda1(X1,Y1);
if(X1==78 && Y1==22)
{
arah_benda1==kiriatas;
}
else if(X1==78)
{
arah_benda1=kiribawah;
}
else if(Y1==22)
{
arah_benda1=kananatas;
}
}
else if (arah_benda1 == kiriatas && Y1 > 3 && X1>3)
{
benda3(X1,Y1);
Y1--; X1--;
benda1(X1,Y1);
if(X1==3 && Y1 == 3)
{
arah_benda1=kananbawah;
}
else if(X1==4)
{
arah_benda1=kananatas;
}
else if(Y1==3)
{
arah_benda1=kiribawah;
}
}
else if (arah_benda1 == kiribawah && Y1 < 22 && X1>3)
{
benda3(X1,Y1);
Y1++; X1--;
benda1(X1,Y1);
if(X1==3 && Y1 == 22)
{
arah_benda1=kananatas;
}
else if(X1==3)
{
arah_benda1=kananbawah;
}
else if(Y1==22)
{
arah_benda1=kiriatas;
}
}
if(pilihan_f == F2 || pilihan_f == F3)
{
switch(scan)
{
case 71: arah_benda2 = kiriatas ; break; //home
case 72: arah_benda2 = atas; break; //up
case 73: arah_benda2 = kananatas ; break; //pageUp
case 75: arah_benda2 = kiri ; break; //left
case 77: arah_benda2 = kanan ; break; //right
case 79: arah_benda2 = kiribawah ; break; //end
case 80: arah_benda2 = bawah ; break; //down
case 81: arah_benda2 = kananbawah ; break; //pageDown
}
}
if (arah_benda2 == kiri && X2 > 3)
{
benda4(X2, Y2);
X2--;
benda2(X2, Y2);
if(X2==3)
{
arah_benda2=kanan;
}
}
else if (arah_benda2 == kanan && X2 < 78 )
{
benda4(X2, Y2);
X2++;
benda2(X2, Y2);
if(X2==78)
{
arah_benda2=kiri;
}
}
else if (arah_benda2 == atas && Y2 > 3 )
{
benda4(X2, Y2);
Y2--;
benda2(X2, Y2);
if(Y2==3)
{
arah_benda2=bawah;
}
}
else if (arah_benda2 == bawah && Y2 < 22 )
{
benda4(X2, Y2);
Y2++;
benda2(X2, Y2);
if(Y2==22)
{
arah_benda2=atas;
}
}
else if (arah_benda2 == kananatas && Y2 > 3 && X2<78 )
{
benda4(X2, Y2);
Y2--; X2++;
benda2(X2, Y2);
if(X2 == 78 && Y2 == 3)
{
arah_benda2 = kiribawah;
}
else if(Y2==3)
{
arah_benda2=kananbawah;
}
else if(X2==78)
{
arah_benda2=kiriatas;
}
}
else if (arah_benda2 == kananbawah && Y2 < 22 && X2<78)
{
benda4(X2, Y2);
Y2++; X2++;
benda2(X2, Y2);
if(X2==78 && Y2==22)
{
arah_benda2=kiriatas;
}
else if(X2==78)
{
arah_benda2=kiribawah;
}
else if(Y2==22)
{
arah_benda2=kananatas;
}
}
else if (arah_benda2 == kiriatas && Y2 > 3 && X2 > 3)
{
benda4(X2, Y2);
Y2--; X2--;
benda2(X2, Y2);
if(X2==3 && Y2 == 3)
{
arah_benda2=kananbawah;
}
else if(X2==3)
{
arah_benda2=kananatas;
}
else if(Y2==3)
{
arah_benda2=kiribawah;
}
}
else if (arah_benda2 == kiribawah && Y2 < 22 && X2>3)
{
benda4(X2, Y2);
Y2++; X2--;
benda2(X2, Y2);
if(X2==3 && Y2 == 22)
{
arah_benda2=kananatas;
}
else if(X2==3)
{
arah_benda2=kananbawah;
}
else if(Y2==22)
{
arah_benda2=kiriatas;
}
}
if(pilihan_f == F4)
{
arah_benda1 = 0;
arah_benda2 = 0;
gotoxy(1,25);
cout << "Silahkan dilanjutkan atau tekan Esc untuk keluar...";
}
}
while(ascii!=27);
}
void tunda(double detik)
{
clock_t target;
target = clock() + detik * CLK_TCK;
while(clock() < target);
}
void baca_keyboard(int &ascii, int &scan)
{
ascii=0;
scan=0;
if(kbhit() != 0)
{
ascii = getch();
if(ascii == 0) scan = getch();
else scan = 0;
}
}
Penjelasan dari bagian
– bagian penting yang terdapat pada animasi
- Include : Berfungsi menyisipkan file
header include yang digunakan ke progam yang bersangkutan. Sehingga seluruh
komponen dan anggota include tersebut dapat digunakan oleh progam yang
bersangkutan.
- Prototype : Berguna untuk memanggil void
yang berada di bawah Void main, prototype berhubungan dengan peritah – perintah
pada program yang di kerjakan sesuai urutan barisnya.
Void main : Merupakan perintah utama,
atau algoritma utama yang bertugas memangil sub – sub program yang akan
dijalankan. Untuk program yang di buat, main bertugas untuk menampilkan kata
“Mulai” pada koordinat x=1 dan y=25. Kemudian memanggil sub algo gambar_kotak
atau Void gambar_kotak.
- Viod gambar_kotak : Merupakan bagian
yang bertugas untuk membuat kotak. Void gambar_kotak nantinya akan di panggil
oleh main. Di dalam Void gambar_kotak akan di panggil Void benda_keluar atau
pengerjaan benda secara random.
- Void benda_keluar : Digunakan untuk
menampilkan karakter secara Acak / Random.
- Void benda1(int X1,int Y1) : Digunakan
untuk memanggil karakter 0 = ‘0‘ . dengan deklarasi X1 dan Y1.
- Void benda2(int X2,int Y2) : Digunakan
untuk memanggil karakter Q = ‘Q‘ . dengan deklarasi X2 dan Y2.
- Void benda3(int X1,int Y1) : Digunakan
untuk memanggil karakter sepasi = ‘ ‘ . dengan deklarasi X1 dan
-Void benda4(int X2,int Y2) : Digunakan
untuk memanggil karakter sepasi = ‘ ‘ . dengan deklarasi X2 dan Y2.
- Void
tunda : Digunakan untuk waktu tunda benda, yang digunakan sebagai efek karekter
bergerak secara alami / wajar.
- Void
baca_keyboard : Digunakan untuk mendateksi tombol keyboard yang di tekan, ini
berhubungan dengan fungsi – fungsi tombol yang akan digunakan nantinya.
- Void
fungsiTombol_gerakBenda(int X1, int Y1, int X2, int Y2): Di dalam Void ini
terdapat fungsi tombol F1, F2, F3, dan F4 untuk pemilihan karakter sekaliagus
dapat menghasilkan efek gerak dari karakter dengan menggunakan fungsi tombol Up,
PgDn, Left, PgUp, Down, End, Right, Home. Berikut uraian fungsi tombol tersebut
:
Perintah
fungsi tombol F1, F2, F3, dan F4 :
-
Jika F1 ditekan karakter 1 yang aktif
-
Jika F2 ditekan karakter 2 yang aktif
-
Jika F3 ditekan kedua karakter aktif
-
Jika F4 ditekan kedua karakter berhenti
bergerak di posisi akhir karakter
Perintah
fungsi tombol Up, PgDn, Left, PgUp, Down, End, Right, Home :
-
Jika Up maka menuju ke atas
-
Jika Page Down maka menuju ke kanan
bawah
-
Jika Left maka menuju ke kiri
-
Jika Page Up maka menuju ke kanan atas
-
Jika Down maka menuju ke bawah
-
Jika End maka menuju ke kiri bawah
-
Jika Right maka menuju ke kanan
-
Jika Home maka menuju ke kiri atas
Tidak ada komentar:
Posting Komentar