Anda di halaman 1dari 11

3.

1 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.

Anda mungkin juga menyukai