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
thanks tutornya.
ReplyDelete