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 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...
=)
Posted in: Programing
7 comments:
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