Laman

Cara MEMBUAT MOBIL 2D AUTO GERAK ( OPENGL MICROSOFT VISUAL STUDIO C++ )


OPENGL

MICROSOFT VISUAL STUDIO C++

MEMBUAT MOBIL 2D AUTO GERAK




Dalam postingan kali ini, dhamalo akan membeberkan cara membuat mobil 2D bergerak otomatis.
Sebenarnya ini adalah tugas kuliah dari admin dhamalo, namun ini di posting untuk ikut serta memberikan kontribusi ilmu kepada pembaca, atau bagi pembaca yang sedang mencari cara membuat mobil 2D bergerak otomatis untuk tugas kuliahnya sama seperti admin.
Berikut adalah koding untuk membuatnya :



#include <glut.h>
//mengaktifkan fungsi perhitungan matematika
#include <math.h>

/*
       GIGIH SETYAJI
       UMRI Indonesia
       Grafica Computer

       support by dhamalo WEBLOG
*/

//deklarasi pembuatan lingkaran
const double PI = 3.142857143;
int i,radius,jumlah_titik,x_tengah,y_tengah;

//deklarasi gerakan otomatis
int gerak = 0;
bool atas = true;

void tampil()
{  
       //perintah menghapus layar
       glClear(GL_COLOR_BUFFER_BIT);

       //perintah animasi
       glPushMatrix();
       glTranslatef( gerak, 0,0);
      
       //cup tengah
       glColor3f(0.0,1.0,1.0);
       glBegin(GL_POLYGON);
       glVertex2f(1.0,1.0);
       glVertex2f(1.5,0.0);
       glVertex2f(1.5,-1.0);
       glVertex2f(-1.0,-1.0);
       glVertex2f(-1.0,0.0);
       glVertex2f(-0.7,1.0);
              glEnd();
              glFlush();
  
       //cup depan
       glColor3f(0.0,1.0,1.0);
       glBegin(GL_POLYGON);
       glVertex2f(1.5,0.0);
       glVertex2f(2.5,0.0);
       glVertex2f(2.5,-1.0);
       glVertex2f(1.5,-1.0);
              glEnd();
              glFlush();


       //cup belakang
       glColor3f(0.0,1.0,1.0);
       glBegin(GL_POLYGON);
       glVertex2f(-1.0,-1.0);
       glVertex2f(-1.5,-1.0);
       glVertex2f(-1.5,0.0);
       glVertex2f(-1.0,0.0);
              glEnd();
              glFlush();

       //kaca samping depan
       glColor3f(5.0,1.0,5.0);
       glBegin(GL_POLYGON);
       glVertex2f(0.25,0.85);
       glVertex2f(0.85,0.85);
       glVertex2f(1.25,0.0);
       glVertex2f(0.25,0.0);
              glEnd();
              glFlush();
      
       //kaca samping belakang
       glColor3f(5.0,1.0,5.0);
       glBegin(GL_POLYGON);
       glVertex2f(0.0,0.85);
       glVertex2f(-0.55,0.85);
       glVertex2f(-0.80,0.0);
       glVertex2f(0.0,0.0);
              glEnd();
              glFlush();


       //ban depan
       glColor3f(0.0,0.0,0.0);
       glBegin(GL_POLYGON);
      
       radius = 40;
       jumlah_titik = 60;
       x_tengah = 190;
       y_tengah = -90;
      
       for (i=0;i<=360;i++)
       {
              float sudut=i*(2*PI/jumlah_titik);
              float x=x_tengah+radius*cos(sudut);
              float y=y_tengah+radius*sin(sudut);
              glVertex2f(x/100,y/100);
       }
              glEnd();
              glFlush();

       //ban belakang
       glColor3f(0.0,0.0,0.0);
       glBegin(GL_POLYGON);
      
       radius = 40;
       jumlah_titik = 60;
       x_tengah = -90;
       y_tengah = -90;
      
       for (i=0;i<=360;i++)
       {
              float sudut=i*(2*PI/jumlah_titik);
              float x=x_tengah+radius*cos(sudut);
              float y=y_tengah+radius*sin(sudut);
              glVertex2f(x/100,y/100);
       }
      
              glEnd();
              glFlush();

              glPopMatrix();
}
void timer(int t)
{
    if (atas){
        gerak += 1;
    } else {
        gerak -= 1;
    }
    if (gerak > 20) {
        atas = false;
    } else if(gerak < -20){
        atas = true;
    }
 glutPostRedisplay();

/*
kecepatan mobil berbanding terbalik
semakin besar nilai glutTimerFunc maka akan semakin pelan gerakannya
ubahlah angka 50 agar mengerti
*/
 glutTimerFunc(50,timer,0);
}
int main(int argc, char** argv)
{
       glutCreateWindow("Mobil Bergerk Auto");
       //background warna putih
       glClearColor(1.0,9.0,1.0,0.0);
       glutDisplayFunc(tampil);
       gluOrtho2D(-20., 20., -20.0, 20.0);
       glutTimerFunc(1,timer,0);
       glutMainLoop();
}

Semoga dapat bermanfaat


Keterangan :

  • Mobil tersebut bermodel simple agar nantinya pembaca juga ikut belajar dan mencoba untuk tampilan yang lebih baik // pesan pendidikan admin untuk pembaca // hahaha cie cie.
  • Di setiap fungsi/ kode telah memiliki keterangan masing-masing, agar nanti bagi yang menggunakan untuk tugas sekolah / kuliah dapat menjelaskan dengan baik.
  • Admin sangat berterimakasih kepada pembaca agar dapat membaca :

3.      Info Iklan

Terimakasih dan selamat mencoba
 

1 comment: