Membuat Jam Analog Dengan Dev C++


Dalam menampilkan jam analog ada beberapa file fungsi program C++ dalam grafika komputer dengan Dev C++ yang di bagi file penyimpanan tetapi di dalam 1 project agar dapat di compile.

1. Transform.h
2. Transform.cpp

3. Graph.h

4. Graph.cpp

5. File Source



Langkah 1 : Buat 1 Project untuk menyimpan semua file yang ingin kita buat kemudian buka lembar kerja baru (Ctrl + N)


Langkah 2 : Pada Menu Project, pilih Project Option (Alt + P), pilih tab Parameters. Pada kolom Linker, copy kan linkerdi bawah ini dan klik Ok.
-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32


Langkah 3 : Simpan file dengan nama Transform.h yang berisi struktur data dan prototype fungsi sebagai berikut :

struct TPoint {int x,y;};
struct TMatrix {float M[4][4];};
TPoint newPoint(int x, int y);
TMatrix loadIdentity(int x=1, int dimensi=2);
TMatrix pointToMatrix(TPoint p);
TPoint matrixToPoint(TMatrix m);
TMatrix trans(int dx, int dy, int dimensi=2);
TMatrix scale(float sx, float sy, int dimensi=2);
TMatrix rotate(float theta, int dimensi=2);
TMatrix operator*(TMatrix a, TMatrix b);
TPoint operator*(TPoint a, TMatrix b);
void translation(int dx, int dy, int n, TPoint asal[],TPoint buff[], int dimensi=2);
void scaling(float sx, float sy, int n, TPoint asal[],TPoint buff[], int dimensi=2);
void rotating(float theta, int n, TPoint asal[],TPoint buff[], int dimensi=2);
void concat(char str[],int x,int flg=1,char deli[]=":");


Langkah 4 : Simpan file dengan nama Transform.cpp yang berisi implementasi header file Transform seperti berikut :

#include <cmath>
#include <cstdlib>
#include <cstring>
#include "Transform.h"
TPoint newPoint(int x, int y)
{
TPoint np={x,y};
return np;
}
struct TMatrix loadIdentity(int x, int dimensi)
{
TMatrix m;
for(int i=0;i<=dimensi;i++)
{
 for(int j=0;j<=dimensi;j++)
 m.M[i][j]=0;
 m.M[i][i]=x;
 }
 return m;
}
TMatrix pointToMatrix(TPoint p)
{
 TMatrix m=loadIdentity(0);
 m.M[0][0]=p.x;
 m.M[0][1]=p.y;
 m.M[0][2]=1;
 return m;
}
TPoint matrixToPoint(TMatrix m)
{
 return newPoint((int)round(m.M[0][0]),(int)round(m.M[0][1]));
}
 TMatrix trans(int dx, int dy, int dimensi)
{
 TMatrix m_tr=loadIdentity();
 m_tr.M[dimensi][0]=dx;
 m_tr.M[dimensi][1]=dy;
 return m_tr;
}
TMatrix scale(float sx, float sy, int dimensi)
{
 TMatrix m_sc=loadIdentity();
 m_sc.M[0][0]=sx;
 m_sc.M[1][1]=sy;
 return m_sc;
}
TMatrix rotate(float theta,int dimensi)
{
 TMatrix m_rt=loadIdentity();
 float cos_t=cos(theta*M_PI/180);
 float sin_t=sin(theta*M_PI/180);
 m_rt.M[0][0]=cos_t;
 m_rt.M[0][1]=sin_t;
 m_rt.M[1][0]=-sin_t;
 m_rt.M[1][1]=cos_t;
 return m_rt;
}
TMatrix operator*(TMatrix a, TMatrix b)
{
 TMatrix c=loadIdentity(0);
 for(int i=0;i<3;i++)
 for(int j=0;j<3;j++)
 for(int k=0;k<3;k++)
 c.M[i][j] += a.M[i][k]*b.M[k][j];
 return c;
}
TPoint operator*(TPoint a, TMatrix b)
{
 TMatrix c,A = pointToMatrix(a);
 return matrixToPoint(A*b);
}

void translation(int dx, int dy, int n, TPoint asal[], TPoint buff[], int dimensi)
{
 for(int i=0;i<n;i++)
 buff[i]=asal[i]*trans(dx,dy);
}

void scaling(float sx, float sy, int n,TPoint asal[], TPoint buff[],int dimensi)
{
 for(int i=0;i<n;i++)
 buff[i]=asal[i]*scale(sx,sy);
}

void rotating(float theta, int n, TPoint asal[], TPoint buff[], int dimensi)
{
 for(int i=0;i<n;i++)
 buff[i]=asal[i]*rotate(theta);
}

void concat(char str[],int x, int flg, char deli[])
{
 char tmpstr[100];
 if(x<10)strcat(str,"0");
 itoa(x,tmpstr, 10);
 strcat(str, tmpstr);
 if(flg) strcat(str,deli);
}


Langkah 5 : Simpan file dengan nama Graph.h seperti berikut :

#include "Transform.h"
void sumbu();
TPoint convert(TPoint p);
void drawPoly(int n, TPoint p[], int fill=0);


Langkah 6 : Simpan file dengan nama Graph.cpp seperti berikut :

#include "Graph.h"
#include <graphics.h>
void sumbu()
{
line(getmaxx()/2,0,getmaxx()/2,getmaxy());
line(0,getmaxy()/2,getmaxx(),getmaxy()/2);
}
TPoint convert(TPoint p)
{
p.x=p.x+getmaxx()/2;
p.y=getmaxy()/2 -p.y;
return p;
}
void drawPoly(int n,TPoint p[], int fill)
{
int data[2*n];
for(int i=0;i<n;i++)
{
data[2*i]=convert(p[i]).x;
data[2*i+1]=convert(p[i]).y;
}
if(fill)fillpoly(n,data);
else drawpoly(n,data);
} 
 

Langkah 7 : Simpan file dengan nama File Source.cpp (nama file ini bebas) untuk menjalan kan semuafile diatas  seperti berikut :

#include <graphics.h>
#include "graph.h"
#include <time.h>
void wait(int seconds)
{
clock_t endwait;
endwait=clock()+seconds*CLOCKS_PER_SEC;
while(clock()<endwait){}
}
int main()
{
int w=initwindow(800,600,"Jam Analog Buatan Adie");
int derajat=360;
int derajat1=360;

do{
cleardevice();
char tmpstr[10],str[100]="Sekarang Pukul : ";
time_t now;
time(&now);
struct tm*infoNow=localtime(&now);
int jam=(*infoNow).tm_hour;concat(str,jam);
int mnt=(*infoNow).tm_min;concat(str,mnt);
int dtk=(*infoNow).tm_sec;concat(str,dtk,0);
outtextxy(500,500,str);
TPoint tmp[5],tmp2[5];


TPoint grsJam[]={{0,0},{-5,20},{0,50},{5,20},{0,0}}; //JAM
rotating((derajat-(30*jam)),5,grsJam,tmp); //JAM
drawPoly(5,tmp,1); //JAM

TPoint grsMenit[]={{0,0},{-5,20},{0,80},{5,20},{0,0}};//Menit
rotating((derajat-(6*mnt)),5,grsMenit,tmp); //Menit
drawPoly(5,tmp,1); //Menit

TPoint grsDetik[]={{0,0},{0,0},{0,90},{0,0},{0,0}}; //Detik
rotating((derajat-(6*dtk)),5,grsDetik,tmp); //Detik
drawPoly(5,tmp,1); //Detik


TPoint tanda[]={{-6,95},{-6,80},{-2,80},{-2,95},{-6,95}};
drawPoly(5,tanda,0);

translation(6,0,5,tanda,tmp);drawPoly(5,tmp,0);
translation(4,0,5,tanda,tmp);
rotating(90,5,tmp,tmp2);drawPoly(5,tmp2,0);
rotating(180,5,tmp,tmp2);drawPoly(5,tmp2,0);
rotating(270,5,tmp,tmp2);drawPoly(5,tmp2,0);

TPoint cp=convert(newPoint(0,0));
sector(cp.x,cp.y,0,360,10,10);
circle(cp.x,cp.y,103);

derajat1=derajat1-6;
wait(1);
}
while(derajat1!=-1);
getchar();
closegraph();
return 0;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Semua file di atas berfungsi untuk menampilkan jam analog...
Untuk file selengkapnya, silahkan download dibawah ini:


Semoga bermanfaat...
=)

7 comments:

This comment has been removed by the author.

saat di run kok gak bisa ?

mas yang file source itu di save nya pake format apa ya

assalamu'allaikum wr.wb. kak , ko kalo di compile masih ada yang error di file Graph.cpp #include

https://defa-squad.blogspot.co.id

akhmad farid m. susah mas mau daftar nya gimna carra nya aku masih baru soalnya

Membuat Jam Analog Dengan Dev C++ ~ Keymaker >>>>> Download Now

>>>>> Download Full

Membuat Jam Analog Dengan Dev C++ ~ Keymaker >>>>> Download LINK

>>>>> Download Now

Membuat Jam Analog Dengan Dev C++ ~ Keymaker >>>>> Download Full

>>>>> Download LINK

Post a Comment