1 Teknik-Teknik Animasi
Sesuai dengan apa yang telah dibahas, animasi gambar di dalam bahasa Pascal dapat dilakukan dengan
teknik-teknik sebagai berikut :
2. menghapus gambar
Pada bagian ini teknik animasi yang dibahas adalah teknik menghapus gambar dan teknik menyimpan
memori gambar.
Teknik animasi gambar/grafik ini dilakukan dengan cara menghapus tampilan gambar yang sudah ada,
dan kemudian ditampilkan lagi pada koordinat tertentu (sesuai dengan gerakannya). Jika pekerjaan ini
dilakukan berulang-ulang maka akan didapatkan tampilan gambar yang hidup, baik yang berkedip-
kedip pada tempatnya atau yang bergerak sesuai dengan pola gerakannya.
Karena teknik ini dilakukan dengan cara manghapus gambar yang sedang ditayangkan, maka Anda
harus mengetahui cara-cara menghapus dengan mempergunakan prosedur-prosedur berikut ini :
1. Prosedur ClearDevice
2. ProsedurClearViewPort
Dengan mempergunakan prosedurj ClearDevice, maka seluruh tampilan gambar pada monitor akan
dihapus dengan warna latar belakangnya, dan mempersiapkan kembali layar monitor untuk tampilan
gambar yang lain pada posisi koordinat (0,0). Prosedur ini biasanya ditempatkan pada bagian akhir
pernitah pembuatan gambar.
Progarm hapus_device;
Uses
Graph,crt;
Var
Xmax,ymax,
Begin
ClrScr;
Gd := CGA;
Gm := CGAHi;
InitGraph(gd,gm,’’);
Xmax := GetMaxX;
Ymax := GetMaxY;
Rectangle(0,0, xmax,ymax);
Randomize;
Repeat
X := random(xmax);
Y := random(ymax);
LineTo(x,y);
Until KeyPressed;
ClearDevice;
MoveTo(5*x,5*y);
MoveTo(5*x,9*y);
OutText(‘Tekan Enter’);
Readln;
CloseGraph;
End.
Dengan mempergunakan prosedur ClearViewPort, maka tidak semua tampilan gambar pada monitor
akan dihapus. Gambar yang dihapus hanya yang berada di dalam jendela tampilan yang telah
ditentukan sebelumnya, sedangkan yang berada di luarnya tidak dihapus. Penghapusan dilakukan
dengan warna latar belakannya dan mempersiapkan kembali layar monitor untuk tampilan gambar
yang lain pada posisi koordinat (0,0). Prosedur ini biasanya ditempatkan pada bagian akhir perintah
pembuatan gambar yang akan dihapus.
SetViewPort(x1,y1, x2,y2,ClipOn);
Program hapus_viewport;
Uses
Graph,crt;
Var
Xmax,ymax,
gd, gm, x, y : integer;
Begin
ClrScr;
Gd := CGA;
Gm := CGAHi;
InitGraph(gd,gm,’’);
Xmax := GetMaxX;
Ymax := GetMaxY;
Rectangle(10,10, xmax-1,ymax-1);
Randomize;
Repeat
X := random(xmax);
Y := random(ymax);
LineTo(x,y);
Until KeyPressed;
ClearViewPort;
MoveTo(5*x,5*y);
MoveTo(5*x,9*y);
OutText(‘Tekan Enter’);
Readln;
CloseGraph;
End.
Berikut adalah beberapa contoh program animasi yang dibuat berdasarkan teknik menghapus gambar.
Program tulisan_berkedip;
Uses
Graph,crt;
Var
Xmax,ymax,
Begin
ClrScr;
Gd := CGA;
Gm := CGAHi;
InitGraph(gd,gm,’’);
Xmax := GetMaxX;
Ymax := GetMaxY;
Repeat
SetTextJustify(CenterText,CenterText);
OutText(‘TULISAN BERKEDIP’);
Delay(500);
ClearDevice;
Delay(500);
Until KeyPressed;
CloseGraph;
End.
Program animasi_hapus;
Uses
Graph,crt;
Var
Xmax,ymax,
Begin
ClrScr;
Gd := CGA;
Gm := CGAHi;
InitGraph(gd,gm,’’);
Xmax := GetMaxX;
Ymax := GetMaxY;
X := xmax div 10;
Repeat
Rectangle(0,0, xmax,ymax);
Delay(100);
ClearDevice;
Inc(x,10);
CloseGraph;
End.
Program animasi_hapus;
Uses
Graph,crt;
Var
Xmax,ymax,
Begin
ClrScr;
Gd := CGA;
Gm := CGAHi;
InitGraph(gd,gm,’’);
Xmax := GetMaxX;
Ymax := GetMaxY;
Rectangle(0,0, xmax,ymax);
SetViewPort(5,5, xmax-5,ymax-5,ClipOn);
Repeat
Delay(100);
Inc(x,10);
ClearViewPort;
CloseGraph;
End.
Teknik animasi yang dilakukan dengan cara menghapus gambar ternyata menghasilkan animasi kurang
baik, karena setiap kali harus membuat gambar baru. Untuk mengatasi kekurangan itu, Anda dapat
melakukan dengan teknik menyimpan memori. Degnan cara ini gambar cukup dibuat satu kali dan
kemudian gambar disimpan dalam memori shingga pada saat memerlukannya tinggal memanggilnya.
Cara ini akan memberikan hasil tampilan animasi yang lebih cepat dan baik.
Pada dasarnya teknik animasi dengan cara ini dilakukan dengan beberapa tahap, yaitu :
Untuk menentukan ukuran gambar dipergunakan fungsi ImageSize. Fungsi ImageSize akan
menyimpan jumlah memori seluas segiempat. Oleh karena itu gambar yang akan disimpan jumlah
memorinya dinyatakan sebagai segiempat. Penentuan jumlah memori gambar biasanya dapat dibantu
dengan prosedur rectangle. Setelah didapatkan ukuran yang cocok, koordinat-koordinat rectangle itu
digunakan untuk jumlah memori gambar.
Cara menuliskannya adalah :
Langkah kedua adalah membuat variabel dinamis. Variabel ini dideklarasikan sebagai pointer.
Prosedur yang digunakan untuk membuatnya adalah prosedur GetMem.
GetMem(nama,ukuran);
Yang dimaksud dengan nama adalah kode yang diberikan untuk variabel dinamis. Misalnya geser,
kedip, puter dan sebagainya. Disarankan untuk memakai nama yang ada kaitannya dengan gerakan
gambarnya, sehingga memudahkan untuk diingat. Ukuran sama dengan ukuran jumlah memori
gambarnya, sesuai dengan apa yang telah ditentukan pada langkah pertama.
Setelah menentukan ukuran gambar dan membuat variabel dinamisnya, langkah selanjutnya adalah
menyimpan jumlah memorinya di dalam penyangga (buffer) memori. Prosedur yang digunakan untuk
menyimpannya adalah prosedur GetImage.
Perhatikan bahwa koordinat-koordinatnya adalah sesuai dengan koordinat yang telah ditentukan pada
ukuran jumlah memori. Selain itu, nama variabel dinamis harus diberi topi (^).
Sampai pada langkah ketiga Anda sudah memiliki suatu gamabr yang siap untuk digerakkan dengan
gerakan-gerakan tertentu. Gerakan tersebut pada dasarnya diperoleh dengan cara menempatkan ukuran
memori gambar, yang telah disimpan dalam buffer, pada koordinat-koordinat tertentu. Penempatan
ukuran memori gambar tersebut dilakukan dengan mempergunakan prosedur PutImage.
PutImage(x,y, nama^,NormalPut);
Atau
PutImage(x,y, nama^,XorPut);
Di sini x dan y berfungsi sebagai pengendali gerakan. Jika x merupakan suatu konstanta sedangkan y
merupakan suatu vaaariabel pangkat satu, maka gerakan yang diperoleh adalah gerak lurus demikian
pula sebaliknya untuk y sama dengan konstanta tetapi x-nya variabel pangkat satu. Dengan demikian
dapat disimpulkan bahwa gerakn gamabr akan mengikuti perubahan harga x dan y.
Program animasi_simpanmemori;
Uses
Crt, graph;
Var
Xmax,ymax,
geser : Pointer;
size : word
Begin
Gd : CGA;
Gm := CGAHi;
InitGraph(gd,gm,’’);
Xmax : GetMaxX;
Ymax := GetMaxY;
Y := ymax div 2;
Rectangle(0,0, xmax,ymax);
End.