Sabtu, 22 Oktober 2011

Komgraf Pertemuan ke-4 - Tugas Pra-UTS

Membuat Program Chekerboard OpenGL 2D  
(Dengan 3 Digit NRP Didalamnya) 

Tugas Komputer Grafik untuk pertemuan kali ini adalah membuat sebuah gambar papan catur (checkerboard) dengan tiga digit angka NRP mahasiswa yang terakhir. Dimana detail dan program papan catur dengan menggunakan OpenGL 2D bisa dilihat dibawah ini:

  1. Kotak bujur-sangkar dengan ukuran x,y (10,10) sejumlah = (9 baris x 9 kolom).
  2. Ukuran jendela (window size) = (800 × 800).
  3. Posisi jendela (Window_position) = (100 , 100).
  4. Caption = Tugas OpenGl 2D_NRP(lengkap).
  5. Isi bujur-sangkar dengan 3 digit terakhir dari NRP anda.
  6. Diantara 3 digit NRP dipisahkan dengan melukiskan gambar/simbol unik.
  7. Warna Background dari masing2 bujursangkar bergantian warna merah dan putih (baik baris maupun kolomnya).
  8. Angka NRP didalam kotak bujur-sangkar gunakan warna biru.
Didalam pembuatannya menggunakan "glvertex2f", dimana fungsinya adalah sebagai titik koordinat x dan y. Misalnya glvertex2f (4,5), dapat diatikan bahwa koordinat itu berada pada sumbu x titik ke-4 dan sumbu y titik ke-5. Dan berikut merupakan tampilan program dan codingnya.....

Tampilan Running Program

Tampilan Running Program (Effect Fullscreen atau Scretch)

Coding Program :

#include "GL/glut.h"
//#include ""

void tampil_semua(int x, int j, int i){
    if(x==1||x==5||x==9||x==11||x==15||x==21||x==25||
        x==31||x==35||x==37||x==41||x==45||x==47||x==51||
        x==57||x==61||x==67||x==71||x==73||x==77||x==81 )
    {glColor3f(1.0,1.0,1.0); //MEMBUAT ANGKA SATU
    glBegin(GL_QUADS);
        glVertex2d(0+10*i,0+10*j);
        glVertex2d(10+10*i,0+10*j);
        glVertex2d(10+10*i,10+10*j);
        glVertex2d(0+10*i,10+10*j);
    glEnd();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 1) bagian tegak
        glVertex2d (3+10*i,8+10*j);
        glVertex2d (3+10*i,2+10*j);
        glVertex2d (7+10*i,2+10*j);
        glVertex2d (7+10*i,9+10*j);
        glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 1) bagian titik
        glVertex2d (2+10*i,7.5+10*j);
        glVertex2d (2+10*i,6.5+10*j);
        glVertex2d (3+10*i,6.5+10*j);
        glVertex2d (3+10*i,7.5+10*j);
        glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 1) bagian bawah
        glVertex2d (1.5+10*i,2+10*j);
        glVertex2d (1.5+10*i,1+10*j);
        glVertex2d (8.5+10*i,1+10*j);
        glVertex2d (8.5+10*i,2+10*j);  
        glEnd ();
    glFlush();
    }
    else if (x==4||x==8||x==10||x==14||x==18||x==20||x==24||x==30||
        x==34||x==40||x==44||x==46||x==50||x==54||x==56||x==60||x==66||
        x==70||x==76||x==80)
        {glColor3f(1.0,0.0,0.0); //MEMBUAT ANGKA DUA
        glBegin(GL_QUADS);
        glVertex2d(0+10*i,0+10*j);
        glVertex2d(10+10*i,0+10*j);
        glVertex2d(10+10*i,10+10*j);
        glVertex2d(0+10*i,10+10*j);
    glEnd();                  
    glFlush();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian atas
        glVertex2d (2+10*i,9+10*j);
        glVertex2d (2+10*i,8+10*j);
        glVertex2d (5+10*i,8+10*j);
        glVertex2d (5+10*i,9+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian miring atas
        glVertex2d (4+10*i,9+10*j);
        glVertex2d (5.5+10*i,5+10*j);
        glVertex2d (9+10*i,5+10*j);
        glVertex2d (7.5+10*i,9+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian miring bawah
        glVertex2d (2+10*i,6+10*j);
        glVertex2d (1+10*i,2+10*j);
        glVertex2d (5+10*i,2+10*j);
        glVertex2d (6+10*i,6+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian bawah
        glVertex2d (1+10*i,2+10*j);
        glVertex2d (1+10*i,1+10*j);
        glVertex2d (9+10*i,1+10*j);
        glVertex2d (9+10*i,2+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 2) bagian ujung bawah
        glVertex2d (7.5+10*i,3+10*j);
        glVertex2d (7.5+10*i,2+10*j);
        glVertex2d (9+10*i,2+10*j);
        glVertex2d (9+10*i,3+10*j);
    glEnd ();
    glFlush();}
    else if (x==3||x==7||x==13||x==17||x==19||x==23||x==27||
        x==29||x==33||x==39||x==43||x==49||x==53||x==55||x==59||x==63||
        x==65||x==69||x==75||x==79)
        {glColor3f(1.0,1.0,1.0); //MEMBUAT ANGKA 5
        glBegin (GL_QUADS);
        glVertex2d(0+10*i,0+10*j);
        glVertex2d(10+10*i,0+10*j);
        glVertex2d(10+10*i,10+10*j);
        glVertex2d(0+10*i,10+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) bagian atas
        glVertex2d (1+10*i,9+10*j);
        glVertex2d (1+10*i,8+10*j);
        glVertex2d (9+10*i,8+10*j);
        glVertex2d (9+10*i,9+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) tegak atas
        glVertex2d (1+10*i,8+10*j);
        glVertex2d (1+10*i,5+10*j);
        glVertex2d (4+10*i,5+10*j);
        glVertex2d (4+10*i,8+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) pembatas tegak dan miring
        glVertex2d (3+10*i,6+10*j);
        glVertex2d (3+10*i,5+10*j);
        glVertex2d (6+10*i,5+10*j);
        glVertex2d (6+10*i,6+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) bagian miring bawah
        glVertex2d (4+10*i,6+10*j);
        glVertex2d (5+10*i,2+10*j);
        glVertex2d (9+10*i,2+10*j);
        glVertex2d (8+10*i,6+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) bagian bawah
        glVertex2d (1+10*i,2+10*j);
        glVertex2d (1+10*i,1+10*j);
        glVertex2d (9+10*i,1+10*j);
        glVertex2d (9+10*i,2+10*j);
    glEnd ();
    glColor3f (0.0, 0.0, 1.0);
    glBegin (GL_POLYGON); //membuat kotak (ANGKA 5) bagian ujung bawah
        glVertex2d (1+10*i,3+10*j);
        glVertex2d (1+10*i,2+10*j);
        glVertex2d (2.5+10*i,2+10*j);
        glVertex2d (2.5+10*i,3+10*j);
    glEnd ();
    glFlush();
    }
    else {glColor3f(1.0,0.0,0.0);
    glBegin(GL_QUADS); // SIMBOL
        glVertex2d(0+10*i,0+10*j);
        glVertex2d(10+10*i,0+10*j);
        glVertex2d(10+10*i,10+10*j);
        glVertex2d(0+10*i,10+10*j);
    glEnd();
    glFlush();
    glBegin(GL_QUADS);
        glVertex2d(0+10*i,0+10*j);
        glVertex2d(10+10*i,0+10*j);
        glVertex2d(10+10*i,10+10*j);
        glVertex2d(0+10*i,10+10*j);
    glEnd();
    glFlush();
    glColor3f (1,1,0);
    glBegin (GL_LINE_LOOP); //Pelindung Bintang (Segilima Diluar)
        glVertex2d (3.3+10*i,6.7+10*j);
        glVertex2d (1.8+10*i,3.7+10*j);
        glVertex2d (5+10*i,1.3+10*j);
        glVertex2d (8.1+10*i,3.7+10*j);
        glVertex2d (6.8+10*i,6.7+10*j);
    glEnd ();
    glColor3f (1,1,0);
    glBegin (GL_LINE_LOOP); //Pelindung Bintang (Segilima Didalam)
        glVertex2d (3.5+10*i,6+10*j);
        glVertex2d (2.5+10*i,3.8+10*j);
        glVertex2d (5+10*i,2+10*j);
        glVertex2d (7.5+10*i,3.8+10*j);
        glVertex2d (6.5+10*i,6+10*j);
    glEnd ();
    glColor3f (1.0, 1.0, 0.0);
    glBegin (GL_POLYGON); //Gambar Bintang Bagian Kiri
        glVertex2d (5+10*i,8+10*j);
        glVertex2d (2+10*i,1+10*j);
        glVertex2d (5+10*i,3+10*j);
    glEnd();
    glColor3f (1.0, 1.0, 0.0);
    glBegin (GL_POLYGON); //Gambar Bintang Bagian Kanan
        glVertex2d (5+10*i,8+10*j);
        glVertex2d (5+10*i,3+10*j);
        glVertex2d (8+10*i,1+10*j);
    glEnd();
    glColor3f (1.0, 1.0, 0.0);
    glBegin (GL_POLYGON); //Gambar Bintang Bagian Tengah
        glVertex2d (1+10*i,5.5+10*j);
        glVertex2d (5+10*i,3+10*j);
        glVertex2d (9+10*i,5.5+10*j);
    glEnd();
        glColor3f (0.0, 1.0,0.0);
glBegin (GL_LINE_LOOP); //membuat bintang kiri atas
        glVertex2d (2+10    *i,9+10*j);
        glVertex2d (1.8+10    *i,8.5+10*j);
        glVertex2d (1.3+10    *i,8.5+10*j);
        glVertex2d (1.7+10    *i,8.2+10*j);
        glVertex2d (1.5+10    *i,7.7+10*j);
        glVertex2d (2+10    *i,8+10*j);
        glVertex2d (2.5+10    *i,7.7+10*j);
        glVertex2d (2.3+10    *i,8.2+10*j);
        glVertex2d (2.7+10    *i,8.5+10*j);
        glVertex2d (2.2+10    *i,8.5+10*j);
glEnd ();  
glColor3f (0.0, 1.0, 0.0);
glBegin (GL_LINE_LOOP); //membuat bintang kanan atas
        glVertex2d (7.8+10   *i,9+10*j);
        glVertex2d (7.6+10 *i,8.5+10*j);
        glVertex2d (7.1+10 *i,8.5+10*j);
        glVertex2d (7.5+10 *i,8.2+10*j);
        glVertex2d (7.3+10 *i,7.7+10*j);
        glVertex2d (7.8+10   *i,8+10*j);
        glVertex2d (8.3+10 *i,7.7+10*j);
        glVertex2d (8.1+10 *i,8.2+10*j);
        glVertex2d (8.5+10 *i,8.5+10*j);
        glVertex2d (8.0+10 *i,8.5+10*j);
glEnd ();  
glColor3f (1.0, 0.0, 0.0);
glBegin (GL_LINE_LOOP); //membuat angka 1 (DALAM BINTANG)
        glVertex2d (4.1+10*i,4.9+10*j);
        glVertex2d (4.1+10*i,3.6+10*j);
        glVertex2d (4.2+10*i,3.6+10*j);
        glVertex2d (4.2+10*i,4.9+10*j);
glEnd ();  
glColor3f (1.0, 0.0, 0.0);
glBegin (GL_LINE_LOOP); //membuat angka 2 (DALAM BINTANG)
        glVertex2d (4.5+10    *i,4.9+10*j);
        glVertex2d (4.5+10    *i,4.8+10*j);
        glVertex2d (5.0+10    *i,4.8+10*j);
        glVertex2d (5.0+10    *i,4.4+10*j);
        glVertex2d (4.5+10    *i,4.4+10*j);
        glVertex2d (4.5+10    *i,3.6+10*j);
        glVertex2d (5.2+10    *i,3.6+10*j);
        glVertex2d (5.2+10    *i,3.7+10*j);
        glVertex2d (4.6+10    *i,3.7+10*j);
        glVertex2d (4.6+10    *i,4.3+10*j);
        glVertex2d (5.2+10    *i,4.3+10*j);
        glVertex2d (5.2+10    *i,4.9+10*j);
glEnd ();  
glColor3f (1.0, 0.0, 0.0);
glBegin (GL_LINE_LOOP); //membuat angka 5 (DALAM BINTANG)
        glVertex2d (5.5+10  *i,4.9+10*j);
        glVertex2d (5.5+10  *i,4.2+10*j);
        glVertex2d (6.1+10    *i,4.2+10*j);
        glVertex2d (6.1+10    *i,3.7+10*j);
        glVertex2d (5.5+10  *i,3.7+10*j);
        glVertex2d (5.5+10  *i,3.6+10*j);
        glVertex2d (6.2+10    *i,3.6+10*j);
        glVertex2d (6.2+10    *i,4.4+10*j);
        glVertex2d (5.6+10    *i,4.4+10*j);
        glVertex2d (5.6+10    *i,4.8+10*j);
        glVertex2d (6.2+10    *i,4.8+10*j);
        glVertex2d (6.2+10    *i,4.9+10*j);
glEnd ();  
glColor3f (0,1,0);
glBegin (GL_LINE_LOOP); //membuat huruf "F"
        glVertex2d (1.1+10*i,3+10*j);
        glVertex2d (1.1+10*i,1.8+10*j);
        glVertex2d (1.6+10*i,1.8+10*j);
        glVertex2d (1.6+10*i,2.3+10*j);
        glVertex2d (2.1+10*i,2.3+10*j);
        glVertex2d (2.1+10*i,2.5+10*j);
        glVertex2d (1.6+10*i,2.5+10*j);
        glVertex2d (1.6+10*i,2.8+10*j);
        glVertex2d (2.3+10*i,2.8+10*j);
        glVertex2d (2.3+10*i,3+10*j);
glEnd ();  
glColor3f (0,1,0);
glBegin (GL_LINE_LOOP); //membuat huruf "e"
        glVertex2d (3.3+10*i,1.5+10*j);
        glVertex2d (3.3+10*i,0.5+10*j);
        glVertex2d (4.3+10*i,0.5+10*j);
        glVertex2d (4.3+10*i,0.7+10*j);
        glVertex2d (3.8+10    *i,0.7+10*j);
        glVertex2d (3.8+10   *i,0.9+10*j);
        glVertex2d (4.3+10*i,0.9+10*j);
        glVertex2d (4.3+10*i,1.5+10*j);
glEnd ();  
glColor3f (0,1,0);
glBegin (GL_LINE_LOOP); //membuat kotak dalam huruf "e"
        glVertex2d (3.8+10    *i,1.3+10*j);
        glVertex2d (3.8+10    *i,1.1+10*j);
        glVertex2d (4.1+10*i,1.1+10*j);
        glVertex2d (4.1+10*i,1.3+10*j);
glEnd ();  
glColor3f (0,1,0);
glBegin (GL_LINE_LOOP); //membuat kotak dalam huruf "r"
        glVertex2d (5.9+10    *i,1.5+10*j);
        glVertex2d (5.9+10    *i,0.5+10*j);
        glVertex2d (6.4+10    *i,0.5+10*j);
        glVertex2d (6.4+10    *i,1.3+10*j);
        glVertex2d (6.9+10*i,1.3+10*j);
        glVertex2d (6.9+10*i,1.5+10*j);
glEnd ();  
glColor3f (0,1,0);
glBegin (GL_LINE_LOOP); //membuat kotak dalam huruf "x"
        glVertex2d (8.3+10    *i,3.0+10*j);
        glVertex2d (8.7+10    *i,2.4+10*j);
        glVertex2d (8.3+10    *i,2.0+10*j);
        glVertex2d (8.6+10    *i,2.0+10*j);
        glVertex2d (8.9+10*i,2.3+10*j);
        glVertex2d (9.1+10*i,2.0+10*j);
        glVertex2d (9.6+10    *i,2.0+10*j);
        glVertex2d (9.2+10    *i,2.6+10*j);
        glVertex2d (9.6+10*i,3.0+10*j);
        glVertex2d (9.3+10*i,3.0+10*j);  
        glVertex2d (9.0+10*i,2.7+10*j);
        glVertex2d (8.8+10*i,3.0+10*j);
glEnd ();  

    glFlush();
    }
    /*else {glColor3f(0.0,0.0,1.0);glBegin(GL_QUADS);
        glVertex2d(0,0);
        glVertex2d(10,0);
        glVertex2d(10,10);
        glVertex2d(0,10);
    glEnd();
    glFlush();
    }*/
    }

void myInit(void) {
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0, 90.0, 0.0, 90.0); // menset ukuran kotak
    //gluOrtho2D(0.0, 10.0, 0.0, 10.0); // menset ukuran kotak
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

void tampilsemua(){
    int x=0;
    for(int i=0;i<9;i++){
        for(int j=0;j<9;j++){
            x++;
            //glViewport(i*89, j*89, 89, 89);
            //glViewport(i*78, j*78, 78,78);
            tampil_semua(x,j,i);
        }
    }
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(730, 730);
    //glutInitWindowPosition (100,100);
    glutCreateWindow("OpenGl 2D_09.04.111.00125_Fitriansyah_Perdana_Putra");
    glutDisplayFunc(tampilsemua);
    myInit();
    glutMainLoop();
}

 
ket : karena program yang telah didemokan kemarin belum sempurna (effect fullscreen tidak berjalan dengan sesuai), oleh karena itu mungkin postingan ini bisa menambah nilai perbaikan untuk saya pribadi. Terima kasih.....

1 komentar: