Kalau sebelumnya saya pernah memposting membuat Titik Potong sederhana dan pada postingan kali ini kita coba membuat yang lebih sedikit berbeda walaupun sebenarnya masih sangat-sangat simple, okay tidak perlu berlama-lama silahkan dicoba coding dibawah ini untuk tahu jelanya jalannya coding, goodluck. :)
Berikut adalah output dari coding diatas:
#include //Header buat fungsi random
#include //Header buat bikin Windows
#include
#include
int letak=0;
int warnaKapal=0; //variable bwt cek warna kapal dan pena yang dipake
void initial(void) //inisialisasi nilai awal
{
glClearColor(1.0, 1.0, 1.0, 1.0); //warna background pertama kali
glMatrixMode(GL_PROJECTION); //mode bentuk koordinat
glPointSize(4.0); //setting besarnya dari point sekali buat
glLoadIdentity(); //
gluOrtho2D(-400.0,400.0,-200.0,400.0); //meletakkan koordinat awal yang tampil di layar
}
void gantibackground(int background) //fungsi bwt ganti warna background
{
if(background%7==0)
{
glClearColor(1.0,0.0,0.0,0.0);
}
else if(background%7==1)
{
glClearColor(0.0,1.0,0.0,0.0);
}
else if(background%7==2)
{
glClearColor(0.0,0.0,1.0,0.0);
}
else if(background%7==3)
{
glClearColor(0.5,1.0,0.5,0.0);
}
else if(background%7==4)
{
glClearColor(0.5,0.5,0.5,0.0);
}
else if(background%7==5)
{
glClearColor(0.2,0.5,0.8,0.0);
}
else{
glClearColor(1.0,1.0,1.0,0.0);
}
}
void gantiWarnaKapal(int warnanya) //fungsi bwt ganti warna kapal
{
if(warnanya%7==0)
{
glColor3f(1.0,0.0,0.0);
}
else if(warnanya%7==1)
{
glColor3f(0.0,1.0,0.0);
}
else if(warnanya%7==2)
{
glColor3f(0.0,0.0,1.0);
}
else if(warnanya%7==3)
{
glColor3f(0.5,1.0,0.5);
}
else if(warnanya%7==4)
{
glColor3f(0.5,0.5,0.5);
}
else if(warnanya%7==5)
{
glColor3f(0.2,0.5,0.8);
}
else{
glColor3f(1.0,1.0,1.0);
}
}
void kapal(void) //fungsi buat gambar kapal
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,0.0); //BODY KAPAL
glBegin(GL_LINE_LOOP);
glVertex2i(-200,100);
glVertex2i(200,100);
glVertex2i(150,0);
glVertex2i(-150,0);
glEnd(); //TIANG BENDERA
glBegin(GL_LINE_STRIP);
glVertex2i(-20,280);
glVertex2i(-20,50);
glEnd(); //BENDERA
//glColor3f(0.9,0.7,0.0);
glBegin(GL_LINE_LOOP);
glVertex2i(-19,280);
glVertex2i(-19,150);
glVertex2i(50,230);
glEnd(); //AIR
glColor3f(0.3,0.3,0.7);
glBegin(GL_LINES);
glVertex2i(-100,-10);
glVertex2i(100,-10);
glVertex2i(-130,-20);
glVertex2i(-50,-20);
glVertex2i(150,-20);
glVertex2i(60,-20);
glVertex2i(80,-35);
glVertex2i(-70,-35);
glEnd();
gantiWarnaKapal(warnaKapal); //mengeload warna yang dipakai.
//WARNA KAPAL
glBegin(GL_QUADS);
glVertex2i(-199,100);
glVertex2i(199,100);
glVertex2i(149,1);
glVertex2i(-149,1);
glEnd(); //WARNA BENDERA
//glColor3f(0.9,0.7,0.0);
glBegin(GL_TRIANGLES);
glVertex2i(-19,280);
glVertex2i(-19,150);
glVertex2i(50,230);
glEnd();
//glutSwapBuffers();
glFlush(); //mengirim gambar dari swap ke layar
}
void keyboard(unsigned char key, int x, int y) //fungsi penanganan keyboard
{
if(letak<-210 data-blogger-escaped-agar="" data-blogger-escaped-arah="" data-blogger-escaped-balik="" data-blogger-escaped-belakang="" data-blogger-escaped-bisa="" data-blogger-escaped-dari="" data-blogger-escaped-else="" data-blogger-escaped-fungsi="" data-blogger-escaped-ga="" data-blogger-escaped-gltranslatef="" data-blogger-escaped-if="" data-blogger-escaped-jalan="" data-blogger-escaped-kalau="" data-blogger-escaped-kapal="" data-blogger-escaped-keliatan="" data-blogger-escaped-letak="" data-blogger-escaped-udah="" data-blogger-escaped-yang="">210)
{
glTranslatef((3*-letak)*2,0.0,0.0);
letak=-210;
kapal();
}
int warna; //variabel warna background
switch(key)
{ //switch variabel key
case 'r': //r untuk Random Background
case 'R':
warna=rand(); //random nilai integer
gantibackground(warna); //memanggil fungsi gantibackground dengan passin parameter dari hasil random
kapal(); //menampilkan kapal lagi dengan background baru
break; //keluar
case 'b': //b untuk Random warna kapal
case 'B':
warnaKapal=rand(); //random nilai integer
kapal(); //menampilkan kapal lagi dengan warna kapal baru
break;
case 'a': //pindah posisi kapal kekiri
case 'A':
letak--; //mengetahui letak kapal (minus jika kekiri)
warna=5; //memberi warna background bila digeser ke kanan
gantibackground(warna); //mengganti warna background
glTranslatef(-3.0,0.0,0.0); //menggeser letak kapal
kapal(); //gambar ulang
break;
case 'd': //pindah posisi kapal kekanan
case 'D':
letak++; //mengetahui letak kapal (plus jika kekanan
warna=4; //memberi warna background bila digeser ke kanan
gantibackground(warna); //mengganti warna background
glTranslatef(3.0,0.0,0.0); //menggeser letak kapal
kapal(); //gambar ulang
break;
}
}
void main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow("Coba | Kapal Layar - 672010179");
glutKeyboardFunc(keyboard);
glutDisplayFunc(kapal);
initial();
glutMainLoop();
}
Berikut adalah output dari coding diatas:
| Output |









Gan,, ada project yang membuat transformasi ga ??
ReplyDeletedari sebuah bentuk menjadi bentuk lain??
tolong di share ya ke email q..
Blog : trik-os.blogspot.com
Jonathan_rere_kudus@yahoo.com
GBU
Oh..! maksutnya Tweening.?? kalau itu saya juga belum masuk ke materi tweening BroOO..! munkin 1/2 minggu depan..! :)
ReplyDelete