CAYBURG.COM
Programlama Dilleri Delphi, Visual Basic, C, C++,C#, ASP, Perl, Php, Html vb. diller hakkında bilgi ve birikimlerinizi paylaşabilir ve yardım alabilirsiniz.
Cevapla
Analog Saat V1.0 - Clock (C++'da Kod Örneği) Bu konu 236 defa okundu ve 13 yorum yazildi.
 
Seçenekler
Alt 25.09.2007, 23:21   #1
yoki
Anaokulu
Analog Saat V1.0 - Clock (C++'da Kod Örneği)

Bilgisayar ortaminda analog saatin nasil yapildigini merak eden arkadaslara ornek olabilecek kucuk ve basit bir uygulama.

/************************************************** ****
TURBO C++ 3.0
************************************************** *****/

#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

const double pi = 3.14159265358979323;
struct time zaman;

//***********************************************

//Gercek zamanli bekleme yapacak olan procedure
void bekle(int sure)
{
int tutulan,hesaplanan;
struct time zaman;
gettime(&zaman);
tutulan = zaman.ti_sec;
do
{
gettime(&zaman);
hesaplanan = zaman.ti_sec;
}while(abs(hesaplanan - tutulan)<=sure);
}

//***********************************************
//Grafik modunu acmak veya kapatmak icin gerekli olan procedure
void grafik(char deger)
{
int gd,gm;
if (!deger)
{
gd = DETECT;
initgraph(&gd,&gm,"e:\\tc3\\bgi");
} else
closegraph();
}
//***********************************************
//Burada ki kodlar tek bir procedure'de toplanabilirdi
//fakat kodlarin daha anlasilir olmasi ve konunun ozumsenmesi
//acisindan saat,dakika ve saniye kollarini cizecek olan komutlari
//ayri ayri procedure'ler de tanimladim.

void saniye_ciz(int orjinx, int orjiny,int uzunluk,int renk,int sure)
{
int x1,y1;
double aci;

aci = ( ( (45+sure) * pi) / 180) * 6;
x1 = int(orjinx + uzunluk * cos(aci));
y1 = int(orjiny + uzunluk * sin(aci));
setcolor(renk);
line(orjinx,orjiny,x1,y1);
setcolor(renk);
circle(x1,y1,3);
}

void dakika_ciz(int orjinx, int orjiny,int uzunluk,int renk,int sure)
{
int x1,y1;
double aci;

aci = ( ( (45+sure) * pi) / 180) * 6;
x1 = int(orjinx + uzunluk * cos(aci));
y1 = int(orjiny + uzunluk * sin(aci));
setcolor(renk);
line(orjinx,orjiny,x1,y1);
}

void saat_ciz(int orjinx, int orjiny,int uzunluk,int renk,int sure)
{
int x1,y1;
double aci;

//(zaman.ti_min / 15) * 0.1 -> bu matematiksel formul her 15 dakikada
//saat cizgisini 1 nokta ilerletir boylelikle gercek duvar saati etkisi
//daha net yakalanmis olur.
aci = ( ( (45+sure) * pi) / 180) * 30 + (zaman.ti_min / 15) * 0.1;
x1 = int(orjinx + uzunluk * cos(aci));
y1 = int(orjiny + uzunluk * sin(aci));
setcolor(renk);
line(orjinx,orjiny,x1,y1);
}

//***********************************************

//Saat kadranini cizmeye yarayan procedure
void saat_kadrani(int yaricap,int renk)
{
const char *mesaj1 = "~DeniZ YaziliM~";
const char *mesaj2 = "Analog Saat V1.0";
const char *mesaj3 = "Coded By : Deniz TURKAN";
const char *mesaj4 = "e-mail : deniz_turkan@yahoo.com";

int kadx,kady,x,y,i;
double aci;

randomize();

//Rasgele koordinatlara noktalar yerlestiriliyor
for(i=0;i<=1500;i++)
{
if(i%2==0)
putpixel(random(getmaxx()),random(getmaxy()),15); else
putpixel(random(getmaxx()),random(getmaxy()),8);
}

//Ekranin orta noktasi bulunuyor (orjin tespiti)
x = getmaxx() / 2;
y = getmaxy() / 2;

//saat kadraninin yuzu
setcolor(4);
setfillstyle(1,renk);
circle(x,y,yaricap);
floodfill(x,y,4);

//kadranin ortasinda ki kucuk daire
setcolor(4);
setfillstyle(1,1);
circle(x,y,int(yaricap/10));
floodfill(x,y,4);

//kadranin ortasinda yer alan reklam mesaji
setcolor(7);
outtextxy(x-int(strlen(mesaj1)*8.18)/2,y-int(yaricap/2),mesaj1);

//Her bes dakikalik dilimler belirleniyor
i = 0;
do
{
i += 1;
aci = ( ( (45+i) * pi) / 180) * 6;
kadx = (x + (yaricap + 10) * cos(aci));
kady = (y + (yaricap + 10) * sin(aci));
if (i%5==0)
{
setcolor(4);
circle(kadx,kady,4);
putpixel(kadx,kady,15);
} else
{
setcolor(2);
circle(kadx,kady,3);
}
setcolor(4);
circle(kadx,kady,2);
putpixel(kadx,kady,15);

}while(i<=60);

//mesajlar ekrana yazdiriliyor
setfillstyle(1,0);
bar(1,getmaxy() - 30,int(strlen(mesaj4)*8.19),getmaxy());
outtextxy(10,getmaxy() - 30,mesaj2);
outtextxy(10,getmaxy() - 20,mesaj3);
outtextxy(10,getmaxy() - 10,mesaj4);
}

//***********************************************

int main()
{
//grafik modu'na geciliyor
grafik(0);
saat_kadrani(130,0);
setwritemode(XOR_PUT);
setlinestyle(0,3,3);

while(!kbhit())
{
//sistemin zaman bilgisi aliniyor
gettime(&zaman);

//sekiller ciziliyor
saniye_ciz(getmaxx()/2,getmaxy()/2 ,120,8,zaman.ti_sec);
dakika_ciz(getmaxx()/2,getmaxy()/2 ,120,9,zaman.ti_min);
saat_ciz(getmaxx()/2,getmaxy()/2 ,80 ,9,zaman.ti_hour);

bekle(0.1);
//delay(25);
//cizilen sekiller siliniyor
saniye_ciz(getmaxx()/2,getmaxy()/2 ,120,8,zaman.ti_sec);
dakika_ciz(getmaxx()/2,getmaxy()/2 ,120,9,zaman.ti_min);
saat_ciz(getmaxx()/2,getmaxy()/2 ,80 ,9,zaman.ti_hour);
}

//grafik modundan cikiliyor
grafik(-1);

return 0;
}

(alıntı)
yoki isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 13.04.2008, 01:37   #2
mereto
Bronze Members
Standart

Bişey anladımsa arap olayım kardeşim tşk ler yinede
mereto isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 14.04.2008, 14:47   #3
Fiji
Ilkokul 2. Sinif
Standart

SAG ol!

Fiji
Fiji isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 15.04.2008, 12:30   #4
Bay tahkar
Silver Members
Standart teşekürler

teşekürler emeğine sağlık
tahkar isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 18.04.2008, 17:34   #5
Bay locomania
Bronze Members
Standart

elleriniz dert görmesin..............
locomania isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 18.04.2008, 23:47   #6
Bay Hasan62hasan
Silver Members
Standart

Teşekkürler. Emeğine Sağlık. Güzel Bir çalışma
Hasan62hasan isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 19.04.2008, 00:53   #7
Bay fastdevil
Bronze Members
Standart

çok teşekkür ederim
fastdevil isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 25.04.2008, 20:08   #8
Bay CEMCANDAN
Banned
Standart

Sağol Kardeş C++ Da Derleyelim Bakalım
CEMCANDAN isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 01.06.2008, 03:46   #9
Bay hakan_10
Bronze Members
Standart

teşkkrlerrr sağolll
hakan_10 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 01.06.2008, 13:47   #10
[S.a.i.T]
Banned
Standart

php olsa bişeyler anlardımda bundan bi b*k anlamıyorum
[S.a.i.T] isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler

Yetkileriniz
Yeni Mesaj yazma yetkiniz Aktif değil dir.
Mesajlara Cevap verme yetkiniz aktif değil dir.
Eklenti ekleme yetkiniz Aktif değil dir.
Kendi Mesajınızı değiştirme yetkiniz Aktif değildir dir.

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı

Benzer Konular
Konu Konuyu Başlatan Forum Cvpl Son Mesaj
Weather Alarm Clock v3.5 - Saat,Tarih,Hava Durumunu Bir Bakışta Görmenizi Sağlar.. ksklife Sistem Programları 7 17.09.2008 15:55
İş garantisi CV Örneği basri Silinen Konular ve Mesajlar 2 16.05.2008 21:47
cv örneği ege2908 Silinen Konular ve Mesajlar 17 09.04.2008 22:01
1 Saat ölü Kalan Adam 1 Saat Sonra Dirildi... gantepli27 Haber Arsivleri 2 20.01.2008 20:04

Paylaşmak Özgürlüktür - Arşiv - Yukarı git Web Stats TOPlist
File Hosting Free Kurd Radyo Dinle Bedava Albüm Vaylo Yeni Albüm Albüm Paylasim
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
Powered by vBulletin® Version 3.7.4 ©2000 - 2008, Jelsoft Enterprises Ltd.
Bütün Zaman Ayarları WEZ +2 olarak düzenlenmiştir. Şu Anki Saat: 10:45 .