jadi gambarnya bisa gerak kl ada inputan dari keyboard...
semoga membantu :D
#include<stdlib.h>
#include<windows.h>
#include<gl/glut.h>
#include<gl/gl.h>
int letak=0;
int warnaBecak=0;
void initial(void){
glClearColor(1.0, 1.0, 1.0, 1.0);
glMatrixMode(GL_PROJECTION);
glPointSize(4.0);
glLoadIdentity();
gluOrtho2D(1.0,50.0,-15.0,50.0);
}
void gantibackground(int background){
if(background%7==0){
glClearColor(1.0,0.0,1.0,0.0);
}
else if(background%7==1){
glClearColor(1.5,0.5,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.9,1.5,0.8,0.0);
}
else{
glClearColor(1.0,1.0,1.0,0.0);
}
}
void gantiWarnaBecak(int warnanya){
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(0.0,0.0,0.0);
}
}
void becak(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,0.0);
//PEGANGAN
glBegin(GL_LINE_STRIP);
glColor3f(0.0, 0.0, 0.0);
glVertex2f(12,20);
glVertex2f(17.5,20);
glVertex2f(19,15);
glEnd();
//RANTAI
glBegin(GL_LINE_LOOP);
glColor3f(0.0, 0.0, 0.0);
glVertex2f(8.3,11);
glVertex2f(8.3,13);
glVertex2f(15,13);
glVertex2f(15.3,11);
glEnd();
gantiWarnaBecak(warnaBecak);
//BAN BELAKANG
glBegin(GL_POLYGON);
glVertex2f(2.5,10);
glVertex2f(3,7);
glVertex2f(5,7);
glVertex2f(5.5,10);
glVertex2f(5,13);
glVertex2f(3,13);
glEnd();
glBegin(GL_TRIANGLES);
glVertex2i(4,10);
glVertex2i(6.5,17);
glVertex2f(6.5,14.6);
glEnd();
glBegin(GL_QUADS);
glVertex2f(5.6,17.5);
glVertex2f(7.5,11);
glVertex2f(7.5,13);
glVertex2f(6,18.7);
glEnd();
glBegin(GL_QUADS);
glVertex2f(5.5,17.8);
glVertex2f(5.9,16.5);
glVertex2f(7.3,20);
glVertex2f(6.5,20);
glEnd();
//SADDLE
glBegin(GL_QUADS);
glVertex2f(8,20);
glVertex2f(5.7,20);
glVertex2f(5.7,21);
glVertex2f(8,21);
glEnd();
glBegin(GL_QUADS);
glVertex2f(7.5,12);
glVertex2f(7.5,13);
glVertex2f(12,19);
glVertex2f(13,16);
glEnd();
//GEAR
glBegin(GL_POLYGON);
glVertex2f(6.8,12);
glVertex2f(7,11);
glVertex2f(8.3,11);
glVertex2f(8.5,12);
glVertex2f(8.3,13);
glVertex2f(7,13);
glEnd();
glBegin(GL_QUADS);
glVertex2f(11,20);
glVertex2f(12,20);
glVertex2f(13,28);
glVertex2f(12,28);
glEnd();
glBegin(GL_QUADS);
glVertex2f(11,20);
glVertex2f(12,20);
glVertex2f(15,14);
glVertex2f(14,14);
glEnd();
//TUTUP
glBegin(GL_QUADS);
glVertex2f(18,28);
glVertex2f(12,28);
glVertex2f(12.1,29);
glVertex2f(18,29);
glEnd();
glBegin(GL_TRIANGLES);
glVertex2f(18,28);
glVertex2f(18,29);
glVertex2f(19,27);
glEnd();
glBegin(GL_QUADS);
glVertex2f(14,15);
glVertex2f(14,14);
glVertex2f(18.5,14);
glVertex2f(19,15);
glEnd();
glBegin(GL_QUADS);
glVertex2f(18.5,14);
glVertex2f(19,12);
glVertex2f(19.8,12);
glVertex2f(19,15);
glEnd();
//BAN DEPAN
glBegin(GL_POLYGON);
glVertex2f(13,12);
glVertex2f(14,7);
glVertex2f(17.5,7);
glVertex2f(18.5,12);
glVertex2f(17.5,17);
glVertex2f(14,17);
glEnd();
glFlush();
}
void keyboard(unsigned char key, int x, int y){
if(letak<-210){
glTranslatef((2*-letak)*2,0.0,0.0);
letak=210;
becak();
}
else if(letak>210){
glTranslatef((2*-letak)*2,0.0,0.0);
letak=-210;
becak();
}
int warna;
switch(key){
case 'r':
case 'R':
warna=rand();
gantibackground(warna);
becak();
break;
case 'b':
case 'B':
warnaBecak=rand();
becak();
break;
case 'a':
case 'A':
letak--;
warna=5;
gantibackground(warna);
glTranslatef(-2.0,0.0,0.0);
becak();
break;
case 'd':
case 'D':
letak++;
warna=4;
gantibackground(warna);
glTranslatef(2.0,0.0,0.0);
becak();
break;
}
}
int main(int argc, char** argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(1000,500);
glutInitWindowPosition(100,100);
glutCreateWindow("Becak Pamungkas");
glutKeyboardFunc(keyboard);
glutDisplayFunc(becak);
initial();
glutMainLoop();
}
Tidak ada komentar:
Posting Komentar