3rd program :)
locomotive in the shadow LOL
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int i,j,radius,jumlah_titik;
const double PI = 3.141592653589793;
static int tick=0;
typedef struct{
float x;
float y;
} object;
typedef struct{
float r;
float g;
float b;
} color;
void setcolor(color col)
{
glColor3f(col.r, col.g, col.b);
}
void setcolor(float r,float g,float b)
{
glColor3f(r,g,b);
}
void drawobject(object obj[], color col[], int n)
{
glBegin(GL_POLYGON);
for(i=0;i<n;i++)
{
setcolor(col[i]);
glVertex2f(obj[i].x,obj[i].y);
}
glEnd();
}
void drawobject(object obj[], int n)
{
glBegin(GL_POLYGON);
for(i=0;i<n;i++)
{
glVertex2f(obj[i].x,obj[i].y);
}
glEnd();
}
void drawline(float x1, float y1, float x2,float y2,int m,color col)
{
setcolor(col);
glLineWidth(m);
glBegin(GL_LINES);
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glEnd();
}
void drawPolyline(object obj[],int n)
{
glColor3f(0,0,0);
glBegin(GL_LINE_STRIP);
for(int i=0;i<n;i++)
{
glVertex2f(obj[i].x,obj[i].y);
}
glEnd();
}
void drawPolygon(object obj[],int n)
{
glBegin(GL_LINE_LOOP);
for(int i=0;i<n;i++)
{
glVertex2f(obj[i].x,obj[i].y);
}
glEnd();
}
void gradatePolygon(object obj[],color col,int n)
{
setcolor(col);
glBegin(GL_POLYGON);
for(int i=0;i<n;i++)
{
glVertex2f(obj[i].x,obj[i].y);
}
glEnd();
}
void fillPolygon(object obj[], int n, color col)
{
glBegin(GL_POLYGON);
setcolor(col);
for(i=0;i<n;i++)
{
glVertex2f(obj[i].x,obj[i].y);
}
glEnd();
}
void centerPolygon(object obj[],object ob0,color col,color colp,int n)
{
for(i=0;i<n;i++)
{
glBegin(GL_LINES);
setcolor(col);
glVertex2f(ob0.x,ob0.y);
setcolor(col);
glVertex2f(obj[i].x,obj[i].y);
glEnd();
}
}
static void circle(object obj[], object ob0, float r, int n)
{
float a=6.28/n;
for(int i=0;i<n;i++)
{
obj[i].x=ob0.x+r*cos(i*a);
obj[i].y=ob0.y+r*sin(i*a);
}
}
static void ellipse(object obj[],object ob0,float r1,float r2)
{
for(int i=0;i<360;i++)
{
obj[i].x=ob0.x+r1*cos(i/57.3);
obj[i].y=ob0.y+r2*sin(i/57.3);
}
}
void write(float x, float y, float z, void *font, char *string)
{
char *c;
glRasterPos3f(x, y,z);
for (c=string; *c != '\0'; c++)
{
glutBitmapCharacter(font, *c);
}
}
void title()
{
glColor3f(0.,0.,0.);
write(-95, 90, 0, GLUT_BITMAP_HELVETICA_12 , "7609040003") ;
}
void drawdot(int x,int y)
{
glBegin(GL_POINTS);
glVertex2i(x,y);
glEnd();
}
void kartesius()
{
glLineWidth(1);
glColor3f(0,0,1);
for(float x=-640;x<=640;x+=20)
{
glBegin(GL_LINES);
glVertex2f(x,-640);
glVertex2f(x,640);
glEnd();
glBegin(GL_LINES);
glVertex2f(-640,x);
glVertex2f(640,x);
glEnd();
}
glColor3f(0,1,1);
glBegin(GL_LINES);
glVertex2f(640,0);
glVertex2f(-640,0);
glEnd();
glBegin(GL_LINES);
glVertex2f(0,-640);
glVertex2f(0,640);
glEnd();
}
void ccircle(int x_tengah, int y_tengah, int n)
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINE_LOOP);
radius=n;
jumlah_titik=360;
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,y);
}
glEnd();
}
color langit1={0.615,0.615,1};
color langit2={0.678,0.678,1};
color langit3={0.737,0.737,1};
color malam={0,0,0.3};
color hitam={0,0,0};
color kuning1={1,1,0.5};
color kuning2={1,1,0.3};
color biru={0.3,0.3,0.5};
color biru2={0.7,0.7,1};
color putih={1,1,1};
color coklattua={0.21,0.11,0.11};
void background()
{
object obj_sky[4]={{0,0},{640,0},{640,480},{0,480}};
color col_sky[4]={{0,0,0.3},{0,0,0.3},{0,0,0.3},{0,0,0.3}};
drawobject(obj_sky,col_sky,4);
}
void bintang()
{
static object bintang[20];
glPointSize(1);
setcolor(1,1,1);
for(i=0;i<20;i++)
{
drawdot(bintang[i].x,bintang[i].y);
}
if(tick==0)
{
for(i=0;i<20;i++)
{
bintang[i].x=rand()%640;
bintang[i].y=rand()%480;
}
}
tick++;
j=rand()%10;
glPointSize(2);
drawdot(bintang[j].x,bintang[j].y);
}
void moon()
{
object obj_m[360],m={60,420};
circle(obj_m,m,20,360);
fillPolygon(obj_m,360,kuning1);
}
void concrete()
{
object obj_concrete[4]={{0,0},{640,0},{640,105},{0,105}};
color col_concrete[4]={{0.2,0.2,0.2},{0.2,0.2,0.2},{0.2,0.2,0.2},{0.2,0.2,0.2}};
drawobject(obj_concrete,col_concrete,4);
}
void bridge()
{
object obj_b1[360],b1={0,0};
circle(obj_b1,b1,70,360);
fillPolygon(obj_b1,360,malam);
object obj_b[360],b={320,0};
circle(obj_b,b,70,360);
fillPolygon(obj_b,360,malam);
object obj_b2[360],b2={640,0};
circle(obj_b2,b2,70,360);
fillPolygon(obj_b2,360,malam);
}
void railway()
{
object obj_railway[4]={{0,110},{640,110},{640,120},{0,120}};
color col_railway[4]={{0.17,0.17,0.17},{0.17,0.17,0.17},{0.17,0.17,0.17},{0.17,0.17,0.17}};
drawobject(obj_railway,col_railway,4);
}
void blok()
{
for(i=0;i<10;i++)
drawline((40+i*80),(109),(80+i*80),(109),8,coklattua);
}
void asap()
{
object obj_a[360],a={490,360};
circle(obj_a,a,5,360);
fillPolygon(obj_a,360,hitam);
object obj_as[360],as={485,365};
circle(obj_as,as,7,360);
fillPolygon(obj_as,360,hitam);
object obj_asa[360],asa={480,370};
circle(obj_asa,asa,9,360);
fillPolygon(obj_asa,360,hitam);
object obj_asap[360],asap={460,370};
circle(obj_asap,asap,15,360);
fillPolygon(obj_asap,360,hitam);
object obj_a1[360],a1={460,400};
circle(obj_a1,a1,15,360);
fillPolygon(obj_a1,360,hitam);
object obj_a2[360],a2={465,390};
circle(obj_a2,a2,15,360);
fillPolygon(obj_a2,360,hitam);
object obj_a3[360],a3={460,390};
circle(obj_a3,a3,15,360);
fillPolygon(obj_a3,360,hitam);
object obj_a4[360],a4={455,390};
circle(obj_a4,a4,15,360);
fillPolygon(obj_a4,360,hitam);
object obj_a5[360],a5={450,390};
circle(obj_a5,a5,15,360);
fillPolygon(obj_a5,360,hitam);
object obj_a6[360],a6={445,390};
circle(obj_a6,a6,15,360);
fillPolygon(obj_a6,360,hitam);
object obj_a7[360],a7={440,390};
circle(obj_a7,a7,15,360);
fillPolygon(obj_a7,360,hitam);
object obj_a8[360],a8={435,390};
circle(obj_a8,a8,15,360);
fillPolygon(obj_a8,360,hitam);
object obj_a9[360],a9={430,390};
circle(obj_a9,a9,15,360);
fillPolygon(obj_a9,360,hitam);
object obj_a10[360],a10={425,390};
circle(obj_a10,a10,15,360);
fillPolygon(obj_a10,360,hitam);
object obj_a11[360],a11={420,390};
circle(obj_a11,a11,15,360);
fillPolygon(obj_a11,360,hitam);
object obj_a12[360],a12={415,400};
circle(obj_a12,a12,15,360);
fillPolygon(obj_a12,360,hitam);
object obj_a13[360],a13={410,400};
circle(obj_a13,a13,15,360);
fillPolygon(obj_a13,360,hitam);
object obj_a14[360],a14={405,420};
circle(obj_a14,a14,15,360);
fillPolygon(obj_a14,360,hitam);
object obj_a15[360],a15={400,420};
circle(obj_a15,a15,15,360);
fillPolygon(obj_a15,360,hitam);
}
void roda1()
{
object obj_rod1[360],rod1={500,145};
circle(obj_rod1,rod1,25,360);
fillPolygon(obj_rod1,360,hitam);
object obj_rod2[360],rod2={390,150};
circle(obj_rod2,rod2,30,360);
fillPolygon(obj_rod2,360,hitam);
object obj_rod3[360],rod3={330,150};
circle(obj_rod3,rod3,30,360);
fillPolygon(obj_rod3,360,hitam);
object obj_rod4[360],rod4={230,150};
circle(obj_rod4,rod4,30,360);
fillPolygon(obj_rod4,360,hitam);
}
void roda2()
{
object obj_rd1[360],rd1={500,145};
circle(obj_rd1,rd1,16,360);
fillPolygon(obj_rd1,360,malam);
object obj_rd2[360],rd2={390,150};
circle(obj_rd2,rd2,20,360);
fillPolygon(obj_rd2,360,malam);
object obj_rd3[360],rd3={330,150};
circle(obj_rd3,rd3,20,360);
fillPolygon(obj_rd3,360,malam);
object obj_rd4[360],rd4={230,150};
circle(obj_rd4,rd4,20,360);
fillPolygon(obj_rd4,360,malam);
}
void badan1()
{
object dasar[4]={{130,130},{470,130},{470,190},{130,190}};
color col_dasar[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dasar,col_dasar,4);
}
void badan2()
{
object dsr[4]={{470,170},{570,170},{570,190},{470,190}};
color col_dsr[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dsr,col_dsr,4);
}
void badan3()
{
object dsr1[4]={{180,170},{500,170},{500,270},{180,270}};
color col_dsr1[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dsr1,col_dsr1,4);
}
void badan4()
{
object dsr2[4]={{180,170},{260,170},{260,230},{180,230}};
color col_dsr2[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dsr2,col_dsr2,4);
}
void badan5()
{
object dsr3[4]={{220,180},{350,180},{350,290},{220,290}};
color col_dsr3[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dsr3,col_dsr3,4);
}
void badan6()
{
object dsr4[4]={{130,190},{150,190},{150,340},{130,340}};
color col_dsr4[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dsr4,col_dsr4,4);
}
void badan7()
{
object dsr4[4]={{200,260},{220,260},{220,340},{200,340}};
color col_dsr4[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dsr4,col_dsr4,4);
}
void badan8()
{
object dsr5[4]={{130,330},{220,330},{220,340},{130,340}};
color col_dsr5[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dsr5,col_dsr5,4);
}
void badan9()
{
object dsr6[4]={{120,340},{230,340},{230,345},{120,345}};
color col_dsr6[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dsr6,col_dsr6,4);
}
void badan10()
{
object dsr7[5]={{220,290},{240,290},{260,320},{260,330},{220,330}};
color col_dsr7[5]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(dsr7,col_dsr7,5);
}
void bemper1()
{
object bmr1[4]={{525,130},{580,130},{580,170},{540,170}};
color col_bmr1[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(bmr1,col_bmr1,4);
}
void bemper2()
{
object bmr2[4]={{560,170},{585,170},{585,180},{540,180}};
color col_bmr2[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(bmr2,col_bmr2,4);
}
void bemper3()
{
object bmr3[4]={{580,160},{590,160},{590,190},{580,190}};
color col_bmr3[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(bmr3,col_bmr3,4);
}
void crb1()
{
object crb[4]={{375,270},{400,270},{400,280},{375,280}};
color col_crb[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(crb,col_crb,4);
}
void crb2()
{
object crb[4]={{370,280},{405,280},{405,285},{370,285}};
color col_crb[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(crb,col_crb,4);
}
void crb3()
{
object crb[4]={{470,270},{500,270},{500,350},{470,350}};
color col_crb[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(crb,col_crb,4);
}
void crb4()
{
object crb[4]={{465,350},{505,350},{505,355},{465,355}};
color col_crb[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},};
drawobject(crb,col_crb,4);
}
void tengah()
{
object tng[3]={{500,190},{530,230},{500,270}};
color col_tng[3]={{0,0,0},{0,0,0},{0,0,0},};
drawobject(tng,col_tng,3);
}
void front()
{
object f[4]={{565,190},{570,190},{570,240},{565,240}};
color col_f[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0}};
drawobject(f,col_f,4);
}
void cantol()
{
object c[4]={{210,130},{420,160},{420,165},{200,135}};
color col_c[4]={{0,0,0},{0,0,0},{0,0,0},{0,0,0}};
drawobject(c,col_c,4);
}
void userdraw()
{
//kartesius();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
background();
bintang();
moon();
railway();
concrete();
bridge();
blok();
badan1();
badan2();
badan3();
badan4();
badan5();
badan6();
badan7();
badan8();
badan9();
badan10();
crb1();
crb2();
crb3();
crb4();
front();
tengah();
bemper1();
bemper2();
bemper3();
roda1();
roda2();
asap();
cantol();
userdraw();
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(0,0);
glutInitWindowSize(640,480);
glutCreateWindow("7609040003");
glClearColor(0.1,0.2,0.2,0);
gluOrtho2D(0.,640.,0.,480.);
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
thanks
No comments:
Post a Comment