A. Membuat Class untuk Operasi Layar
pada Modus Teks
Setelah memahami cara menggunakan
fungsi int86 atau teknik inline assembly untuk melakukan operasi pada
layar monitor, maka kita dapat membuat sebuah class tersendiri untuk melakukan
operasi pada layar monitor. Class yang akan kita buat akan mengenkapsulasi
fungsi-fungsi setMode, getMode, writeChar, writeString, setCursorPos,
getCursorPos dan getCharAttr. Namun, agar class yang dibuat dalam proses
eksekusi program (runtime) bekerja lebih optimal maka semua fungsi
anggota (method) yang pada pembahasan sebelumnya dibuat menggunakan
fungsi standar int86, kali ini akan ditulis ulang menggunakan teknik inline
assembly.
Dalam
pembuatan class dapat dilakukan tanpa membuat project terlebih dahulu, jadi
cukup dilakukan dengan memilih menu File kemudian pilih submenu New lalu
pilih Text Edit dari IDE Borland C++ 5.02. Class yang akan dibuat
bernama Screen dan simpan kode program berikut ini dengan nama screen.cpp.
screen.cpp:
/*
screen.cpp
*/
#define UCHAR unsigned char
#define VIDEO_INT 0x10
class Screen
{
private:
UCHAR mode, row, col;
UCHAR rownum, colnum;
UCHAR active_page, visual_page;
UCHAR attribute;
public:
Screen(void); // Konstruktor default
Screen(UCHAR mode);
Kode
program screen.cpp diatas bukanlah suatu program untuk dikompilasi dan
dijalankan, namun sebuah pustaka class (class library) yang fungsinya
hampir sama dengan penggunaan file header (.h). Pada kode program screen.cpp
terdapat beberapa fungsi anggota dari class Screen yang sebelumnya tidak
dibahas, yaitu setAttribute, setActivePage, getActivePage, setVisualPage,
getVisualPage dan cls.
Fungsi anggota setAttribute
digunakan untuk menentukan warna huruf dan warna latar (background color).
Fungsi ini mengirimkan parameter bertipe unsigned character yang menunjukan
warna huruf dan latar yang akan ditampilkan. Sedangkan untuk menentukan halaman
halaman aktif digunakan fungsi setActivePage. Apa maksudnya halaman aktif?
Halaman aktif adalah halaman memori video dimana proses operasi pada layar
dilakukan, seperti memindahkan posisi kursor, menampilkan karakter,
membersihkan layar dan sebagainya.
Pada mode layar teks 80 baris 25 kolom
terdapat delapan halaman memori video (halaman layar), yaitu halaman 0 sampai
dengan halaman 7. Fungsi setActivePage digunakan untuk memilih nomor halaman
tersebut dengan cara mengirimkan angka 0, 1, 2 sampai dengan 7 sebagai
parameter. Umumnya pada saat pertama kali dijalankan program akan menggunakan
halaman layar pertama (halaman 0) sebagai halaman visual (halaman dimana output
program ditampilkan). Untuk mengetahui nomor halaman aktif digunakan fungsi
anggota getActivePage yang mengembalikan nomor halaman aktif yang sedang
digunakan.
Selain fungsi setActivePage dan
getActivePage untuk menangani nomor halaman layar, class Screen juga memiliki
fungsi anggota untuk mengatur halaman visual. Apa maksudnya halaman visual?
Halaman visual adalah nomor halaman dimana output program ditampilkan dan dapat
terlihat oleh pengguna. Lalu apakah perbedaan antara halaman aktif dengan
halaman visual? Suatu program dapat saja menyembunyikan proses penampilan
output dengan cara menuliskan karakter-karakter pada halaman layar pertama
(halaman 0) tetapi halaman visual yang ditampilkan adalah halaman kedua
(halaman 1). Karakter-karakter 28
yang
dituliskan pada halaman 0 tersebut tidak akan benar-benar muncul dilayar
monitor sampai pengguna memrogram untuk memilih halaman 0 sebagai halaman
visual. Jika tidak, maka halaman 1 tetap akan ditampilkan walaupun halaman 1
kosong. Untuk memilih halaman visual digunakan fungsi setVisualPage dan untuk
mengetahui nomor halaman yang sedang dijadikan halaman visual digunakan fungsi
getVisualPage.
Kegunaan fungsi
anggota cls sendiri dapat diketahui dari namanya, yaitu untuk membersihkan
tampilan layar (clear screen) dan memposisikan kursor pada baris 0 kolom
0 (baris pertama kolom pertama). Project contoh10.ide berikut ini adalah
demonstrasi penggunaan pustaka screen.cpp. Maksud dari programnya adalah untuk
memberikan contoh penggunaan fungsi anggota setActivePage dan setVisualPage
yang merupakan fungsi anggota dari objek Screen. Agar project contoh10.ide ini
berjalan maka salinlah file screen.cpp dalam direktori yang sama tempat Anda menyimpan
project.
Contoh 10:
#include <dos.h>
#include <stdlib.h>
#include "screen.cpp" // Header screen.cpp
int main(void)
{
UCHAR i, j;
Screen *layar = new Screen();
layar->setAttribute(0x9f);
layar->setActivePage(0);
layar->writeString("Halaman pertama");
layar->setAttribute(0xcf);
layar->setActivePage(1);
layar->writeString("Halaman ke dua");
for (i = 1; i < 11; i++)
{
j = i % 2;
layar->setVisualPage(j);
delay(3000);
}
delete layar;
return EXIT_SUCCESS;
}
Ketika program diatas dijalankan maka muncul tulisan “Halaman
pertama” dan “Halaman ke dua” secara bergantian dengan jeda waktu selama tiga
detik. Tulisan ”Halaman pertama” ditampilkan pada halaman 0 sedangkan “Halaman
ke dua” pada halaman 1.




Tidak ada komentar:
Posting Komentar