Make your own free website on Tripod.com

Grafik dan Animasi

for fs01.05

 

back
3.1 Teknik-Teknik Animasi
Grafik dan Animasi -> Kreasi Animasi Grafik -> Teknik_Teknik Animasi

Sesuai dengan apa yang telah dibahas, animasi gambar di dalam bahasa Pascal dapat dilakukan dengan teknik-teknik sebagai berikut :

1.        mengatur warna gambar

2.        menghapus gambar

3.        menyimpan memori gambar

Pada bagian ini teknik animasi yang dibahas adalah teknik menghapus gambar dan teknik menyimpan memori gambar.

 

3.1.1 TEKNIK MENGHAPUS 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

 

3.1.2 Teknik ClearDevice

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.

 

Contoh Program 3.1.2

Progarm hapus_device;

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(0,0, xmax,ymax);

 

Randomize;

 

Repeat

X := random(xmax);

Y := random(ymax);

LineTo(x,y);

Until KeyPressed;

 

ClearDevice;

 

X := xmax div 10;

Y := ymax div 10;

 

SetTextJustify(CenterText,CenterText);

MoveTo(5*x,5*y);

OutText(‘GAMBAR SUDAH DIHAPUS’);

 

MoveTo(5*x,9*y);

OutText(‘Tekan Enter’);

Readln;

CloseGraph;

End.

 

3.1.3 Teknik ClearViewPort

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.

Unutk menentukan jendela tampilan dilakukan dengan mempergunakan prosedur SetViewPort.

 

Cara menuliskannya adalah :  

SetViewPort(x1,y1, x2,y2,ClipOn);

 

Contoh program 3.1.3:

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);

 

SetViewPort(11,11, xmax-2,ymax-2, ClipOn);

 

Randomize;

Repeat

X := random(xmax);

Y := random(ymax);

LineTo(x,y);

Until KeyPressed;

 

ClearViewPort;

 

X := xmax div 10;

Y := ymax div 10;

 

SetTextJustify(CenterText,CenterText);

MoveTo(5*x,5*y);

OutText(‘GAMBAR SUDAH DIHAPUS’);

 

MoveTo(5*x,9*y);

OutText(‘Tekan Enter’);

 

Readln;

CloseGraph;

End.

Berikut adalah beberapa contoh program animasi yang dibuat berdasarkan teknik menghapus gambar.

 

Contoh program 3.1.3a:

Program tulisan_berkedip;

Uses

Graph,crt;

Var

Xmax,ymax,

gd, gm, x,  y : integer;

Begin

ClrScr;

Gd := CGA;

Gm := CGAHi;

InitGraph(gd,gm,’’);

Xmax := GetMaxX;

Ymax := GetMaxY;

Repeat

SetTextJustify(CenterText,CenterText);

MoveTo(xmax div 2,ymax div 2);

OutText(‘TULISAN BERKEDIP’);

Delay(500);

ClearDevice;

Delay(500);

Until KeyPressed;

CloseGraph;

End.

 

Contoh program 3.1.3b

Program animasi_hapus;

Uses

Graph,crt;

Var

Xmax,ymax,

gd, gm, x,  y : integer;

Begin

ClrScr;

Gd := CGA;

Gm := CGAHi;

InitGraph(gd,gm,’’);

 

Xmax := GetMaxX;

Ymax := GetMaxY;

 

X := xmax div 10;

Repeat

Rectangle(0,0, xmax,ymax);

Circle(x,ymax div 2, 20);

Delay(100);

ClearDevice;

Inc(x,10);

Until x > xmax

 

CloseGraph;

End.

 

Contoh program 3.1.3c

Program animasi_hapus;

Uses

Graph,crt;

Var

Xmax,ymax,

gd, gm, x,  dx : integer;

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);

 

X := xmax div 10;

Repeat

PieSlice(x,ymax div 2, 0,360, 20);

Delay(100);

Inc(x,10);

ClearViewPort;

Until x > xmax;

CloseGraph;

End.

3.1.4 TEKNIK MENYIMPAN MEMORI GAMBAR

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 :

1.        Menentukan ukurran memori gambar

2.        Membuat variabel dinamis

3.        Menyimpan ukuran memori gambar

4.        Menempatkan ukuran memori gambar

 

3.1.5 Menentukan Ukuran Gambar

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 : 

Ukuran := ImageSize(x1,y1, x2,y2);

Ukuran dideklarasikan sebagai word dan x1,y1,x2,y2 dideklarasikan sebagai integer.

 

3.1.6 Membuat Variabel Dinamis

Langkah kedua adalah membuat variabel dinamis. Variabel ini dideklarasikan sebagai pointer. Prosedur yang digunakan untuk membuatnya adalah prosedur GetMem.

Cara menuliskannya adalah :

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.

 

3.1.7 Menyimpan Ukuran Memori Gambar

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.

Cara menuliskannya adalah :

GetImage(x1,y1, x2,y2, nama^);  

Perhatikan bahwa koordinat-koordinatnya adalah sesuai dengan koordinat yang telah ditentukan pada ukuran jumlah memori. Selain itu, nama variabel dinamis harus diberi topi (^).

3.1.8 Menempatkan Ukuran Memori Gambar

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.

Cara menuliskannya adalah :

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.

 

Contoh Program 3.1.8

Program animasi_simpanmemori;

Uses

Crt, graph;

Var

Xmax,ymax,

gd, gm, n, x, y : integer;

geser : Pointer;

size : word

Begin

Gd : CGA;

Gm := CGAHi;

InitGraph(gd,gm,’’);

Xmax : GetMaxX;

Ymax := GetMaxY;

 

X := xmax div 10;

Y := ymax div 2;

 

Rectangle(0,0, xmax,ymax);

PieSlice(x,y, 0,360, 20);

 

PieSlice(x,y, 0,360, 20);

Size := ImageSize(x-21,y-9, x+21,y+9, geser^);

 

For n := 1 to 8*x do PutImage(x - 21 + n,y – 9, geser^,NormalPut);

 

Repeat until KeyPressed;

End.

 

last change: 2005-01-22 , Fendi Sudianto
n_fendi_s@yahoo.com