• Tidak ada hasil yang ditemukan

KONSEP INPUTKEYBOARD PADA GLUT-KEY BIASA DAN

Dalam dokumen KATA PENGANTAR Page i (Halaman 133-143)

1. KONSEP INPUT KEYBOARD (GENERAL BUTTON)

glutKeyboardFunc adalah suatu fungsi callback untuk digunakan sebagai masukan pada suatu jendela window. Konsepnya pada saat seorang user atau pengguna memberikan input yaitu menekan pada tombol keyboard, setiap tombol keyboard yang ditekan akan menghasilkan suatu karakter ASCII yang akan menghasilkan suatu callback keyboard yang telah didefinisikan berupa fungsi dengan 3 parameter.

Penggunaan input keyboard pada tombol-tombol biasa atau normal key (a-z, 1-0), dapat dilakukan dengan menggunakan callback function berupa

glutKeyboardFunc(myKeyboard) dengan

dideklarasikan terlebih dahulu suatu fungsi buatan untuk menampung semua perintah input yang akan digunakan oleh user. Fungsi buatan tersebut seperti contoh di bawah ini:

void myKeyboard(unsigned char key, int x,int y) {

// masukkan perintah disini

}

Fungsi tersebut berisi suatu perintah yang akan digunakan dalam pengoperasian program oleh user. Di dalam fungsi tersebut terdapat 3 parameter dan di dalamnya dideklarasikan suatu perintah yang nantinya akan digunakan.

void timer(int value){ glutPostRedisplay();

glutTimerFunc(100, timer, 0); }

void myKeyboard(unsigned char key, int x, int y) {

if(key == 'a') glTranslatef(0,5,0);

if(key == 'd') glTranslatef(0,-5,0); }

void renderScene(void){

glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.,0.,0.);

Draw(); glFlush(); }

Sintaks tersebut adalah sintak dasar yang digunakan, untuk bisa menggunakan input keyboard maka harus diberikan callback function untuk memanggilnya.

glutDisplayFunc(renderScene); glutKeyboardFunc(myKeyboard); glutTimerFunc(30,timer,0);

Sintaks tersebut harus disertakan pada fungsi main. Selain itu, pada keyboard juga terdapat method lain yang bisa digunakan dalam proses input ini, yaitu: Key Press, Key Up, dan Key Buffering.

a.

Key Press

Metode ini akan memberitahukan kita pada command line tombol apa yang sedang kita tekan. Method ini dapat dinamakan keyPressed dan pada GLUT akan terdapat 3 parameter, satu untuk tombol yang saat itu ditekan, dan dua untuk memberitahukan lokasi mouse ketika tombol ditekan.

void keyPressed(unsigned char key, int x, int

y){

If(key == ‘a’){ // saat tombol ‘a’ ditekan // aksi yang diberikan saat tombol ‘a’ ditekan }}

Dan fungsi tersebut akan dipanggil pada fungsi main, namun callback function-nya sedikit berbeda dari callback function yang sebelumnya.

glutKeyboardFunc(keyPressed); // memberitahukan pada GLUT untuk menggunakan method "keyPressed" untuk tombol yang ditekan

b.

Key Up

Fungsi Key Up ini adalah fungsi register yang menyimpan nilai masukan sampai ketika tombol keyboard dilepaskan. Hal ini bisa berguna untuk pengaturan beberapa nilai ketika suatu tombol pertama kali ditekan, dan tetap menjaga nilai tersebut sampai tombol tersebut dilapaskan. Method sama seperti method Key Press tadi yaitu memiliki 3 parameter yang

memiliki fungsi yang sama, hanya berbeda pada penamaannya yaitu, keyUp.

void keyUp(unsigned char key, int x, int y){ If(key == ‘a’){ // saat tombol ‘a’ ditekan // aksi yang diberikan saat tombol ‘a’ ditekan

} }

Dan fungsi tersebut akan dipanggil pada fungsi main, namun callback function-nya sedikit berbeda dari callback function yang sebelumnya.

glutKeyboardFunc(keyUp); // memberitahukan pada GLUT untuk menggunakan method "keyUp" untuk tombol yang dilepas

c.

Key Buffering

Method ini memungkinkan untuk penanganan terhadap tombol yang ditekan dalam jumlah banyak dalam proyek-proyek OpenGL. Seperti yang diketahui tipe data char sama dengan byte dan dapat mengambila nilai integer dari 0 sampai 255. Ini dikarenakan tipe data char memiliki ukuran 28 atau 256. Hal ini memungkinkan kita untuk menangani hingga 256 tombol berbeda pada keyboard, atau seluruh set karakter ASCII.

Pertama dimulai dengan pendeklarasian sebuah array dari nilai Boolean yang akan menangani masing-masing method keyboard, true untuk tombol yang ditekan, dan false saat tombol dilepaskan.

bool* keyStates = new bool[256]; // membuat array dari nilai boolean dengan ukuran 256 (0-255)

kemudian dilanjutkan dengan pendeklarasian masing-masing method.

keyStates[key] = true; }

void keyUp(unsigned char key, int x, int y){ keyStates[key] = false;

}

void keyOperations(void){

if(keyStates['a']){ // saat tombol ‘a’ ditekan

// aksi yang diberikan saat tombol ‘a’ ditekan

} }

Sama seperti sebelumnya fungsi-fungsi tersebut akan dipanggil pada fungsi main dengan callback function berikut:

void display (void){ keyOperations();

glClearColor(1.0f, 0.0f, 0.0f, 1.0f); // menjadikan background menjadi warna merah

}

2. KONSEP INPUT KEYBOARD SPECIAL KEY

GlutSpecialFunc merupakan suatu fungsi callback pada opengl yang digunakan untuk mengaktifkan tombol-tombol khusus pada keyboard sehingga dapat digunakan untuk berinteraksi antara user dengan objek yang ada di dalam display opengl. Pendeklarasiannya adalah :

void glutSpecialFunc (void (* func) (int key, int x, int y));

callback keyboard khusus dipicu ketika keyboard fungsi atau tombol special yang dideklarasikan ditekan. Parameter callback kunci adalah GLUT_KEY_tombol khusus.. Parameter x dan y mengindikasikan koordinat relatif jendela ketika tombol ditekan. Ketika jendela baru dibuat, tidak ada callback khusus awalnya terdaftar dan stroke kunci khusus di jendela diabaikan. Melewati NULL untuk glutSpecialFunc Menonaktifkan generasi callback khusus. Selama callback khusus, glutGetModifiers dapat dipanggil untuk menentukan keadaan tombol pengubah ketika keystroke menghasilkan callback terjadi. Nilai-nilai yang tersedia GLUT_KEY_ * adalah:

GLUT_KEY_F1 F1 function key

GLUT_KEY_F2 F2 function key

GLUT_KEY_F3 F3 function key

GLUT_KEY_F4 F4 function key

GLUT_KEY_F5 F5 function key

GLUT_KEY_F6 F6 function key

GLUT_KEY_F7 F7 function key

GLUT_KEY_F8 F8 function key

GLUT_KEY_F9 F9 function key

GLUT_KEY_F10 F10 function key

GLUT_KEY_F11 F11 function key

GLUT_KEY_LEFT Left function key

GLUT_KEY_RIGHT Right function key

GLUT_KEY_UP Up function key

GLUT_KEY_DOWN Down function key

GLUT_KEY_PAGE_UP Page Up function key GLUT_KEY_PAGE_DOWN PageDown function key

GLUT_KEY_HOME Home function key

GLUT_KEY_END End function key

GLUT_KEY_INSERT Insert function key

Tombol-tombol diatas dapat diaktifkan dengan membuat sebuah fungsi callback yang akan dipanggil oleh glutSpecialFunc ke dalam fungsi main program, sehingga user dapat berinteraksi dengan objek yang ada dengan menekan tombol-tombol special keyboard yang telah di deklarasikan ke dalam fungsi callback tersebut. contoh pembuatan fungsi callback untuk tombol special keyboard :

void mySpecialKeyboard(int key, int x, int y){

switch(key){

case GLUT_KEY_LEFT : c+=-4; d+=0; break;

case GLUT_KEY_RIGHT : c+=4; d+=0; break;

case GLUT_KEY_UP : c+=0; d+=4; break;

} }

Selanjutnya fungsi tersebut akan dipanggil oleh glutDisplayFunc ke dalam fungsi main, berikut script nya :

glutSpecialFunc(mySpecialKeyboard);

Selain fungsi callback yang mendeklarasikan tombol special keyboard, untuk dapat berinteraksi fungsi tersebut harus memiliki fungsi callback lain yang akan dipanggil kedalam fungsi glutDisplayfunc dan fungsi glutTimerFunc didalam fungsi main program tersebut. fungsi callback di dalam fungsi glutDisplayFunk merupakan fungsi yang mendklarasikan objek yang akan berinteraksi dengan tombol keyborad, Sedangkan fungsi glutTimerFunc berfungsi agar tombol keyboard dapat terus terdeteksi oleh glut. Contoh program interaksi keyboard lengkap : #include <stdlib.h> #include <glut.h> int c,d; void triAngles(){ glBegin(GL_TRIANGLES); glVertex2i(280,0); glVertex2i(250,60); glVertex2i(220,0); glEnd();}

void mySpecialKeyboard(int key, int x, int y){

switch(key){

case GLUT_KEY_LEFT : c+=-4; d+=0; break;

case GLUT_KEY_RIGHT : c+=4; d+=0; break;

case GLUT_KEY_UP : c+=0; d+=4; break;

case GLUT_KEY_DOWN : c+=0; d+=-4; break; }}

void timer(int value){ glutPostRedisplay();

glutTimerFunc(50,timer,0);}

void renderScene(void){

glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glTranslatef(c,d,0); triAngles(); glPopMatrix(); glFlush(); }

void main (int argc, char **argv){ glutInit(&argc, argv);

glutInitWindowPosition(100,100); glutInitWindowSize(640,480);

glutCreateWindow("ANJAR DWI R & DWI PANGLIPURINGTIAS"); gluOrtho2D(-320.,320.,-240.,240.); glutTimerFunc(50,timer,0); glutDisplayFunc(renderScene); glutSpecialFunc(mySpecialKeyboard); glutMainLoop(); }

Panah merah mengindikasikan pergerakan objek ketika tombol arah (up, down. Left, dan right) pada keyborad ditekan oleh user. Sesuai dengan program dimana setiap tombol arah akan memiliki nilai variabel c dan d yang berbeda-beda yang akan mengakibatkan gambar akan bergeser dengan arah yang sesuai nilai variabel tersebut ketika tombol khusus arah (up, down, left dan right) ditekan.

BAB 7

INTERAKSI OBJEK 2D (MOUSE FUNCTION)

Mouse merupakan peralatan masukan/ inputan selain keyboard pada computer. Mouse adalah

alat/perangkat yang digunakan untuk mengatir perpindahan kursor secara cepat atau digunakan untuk memberikan perintah secara praktis dan cepat pula. Didalam mouse terdapat bola kecil yang jika digerakkan akan menyebabkan sinyal listrik terkirim kkomputer sesuai dengan pergerakan mouse

Mouse merupakan salah satu perlengkapan computer meskipun apabila tidak ada juga computer masih bisa

beroperasi, akan tetapi dengan menggunakan mouse maka kerja kita akan menjadi lebih cepat dan menghemat waktu, lebih cepat dan efisien. Maka ridak ada salahnya jika kita sedikit melihat sejarah perkembangan mouse itu sendiri.

Dalam dokumen KATA PENGANTAR Page i (Halaman 133-143)

Dokumen terkait