bugün
- nervio'nun erkek olması23
- fatma betül sayan kaya'nın tmsf'ye iadesi12
- sözlük erkeklerinin karın kası fotoğrafları11
- bulgur pilavı vs pirinç pilavı7
- rusya da laboratuvar faciası veba paniği5
- belediyede çalışan temizlik işçisinin aldığı maaş5
- özelden muzunu atan yazar14
- 6 ekim büyük ulu sözlük olayı12
- kıymalı börek5
- gece sokakta halı taşıyan iki adam görmek8
- game of thrones taki kerhaneci18
- sevgilinin eski sevgililerini anlatması10
- istanbul'a formula 2 ve formula 3 müjdesi2
- iltica26
- etli nohut vs kuru fasulye7
- 6 ekim istanbul un kurtuluşu2
- fondan 20 milyar tl vurgun yapan bürokrat3
- bana onu sormayin15
- kılık kıyafetle uğraşan zihniyet17
- soğuk odalar3
- sevgilisine zaman ayırmayan kız9
- tinder'ın eşleşme algoritması5
- dede bu saate niye aktif ki8
- ciddi ciddi yulaf yiyen insan10
- nervionun sevgili yapması8
- yazarların duşta geçirdikleri süre9
- sözlükte tanıdığınız en iyi kişi24
- anın görüntüsü26
- bana onu sormayin tatlışlığı11
- sarapci koala hatayi6
- fatma betül sayan kaya44
- bathory dinlerken kendini bir ahırda bulmak2
- emre aydın bunalımdan çıkarsa olabilecekler2
- renkli gözlü insanlar7
- oyun dünyasının unutulmayan kadınları10
- silvermist15
- türk dizileri dünyayı ele geçirdi9
- 5 ekim 2026 italya türkiye maçı8
- izmir bombası7
- sözlükte kadın rolü yapmaktan alınan zevk6
- 2 2 milyar tl5
- ayağıma masaj yapacak bir sözlük erkeği bulamamak8
- akp seçmeni18
- mandalinan olayım soy beni diyen kız5
- sözlük kızlarının sözlüğü adam etmesi10
- aile evinde yaşayıp 147 bin tl maaşa yetmiyo demek5
- kemalistler iktidar olursa yapacakları ilk icraat10
- kürt tarihi yoktur diyen kemalist6
- fal bakabilen dünyalar tatlısı yazarlar10
- ak partililerin apoya villa yaptırması11
Bildiğimiz gibi hayat zaman üzerine kurulmuştur. Bunun için saate ihtiyacımız vardır. Analog saat deyip geçmeyelim. Analog saatin büyük bir önemi vardır. En basit örnek; saati öğrenmemizde rolü büyüktür. Teknolojinin bile eskitemediği analog saat hala günümüzde kullanılmaktadır. Ayrıca, dijital saatlere inat evimizin köşesinde ve kolumuzda güzel bir aksesuardır.
görsel
Last time: 22:38:33 (12-hour format)
bu programı yapana kadar birçok hata aldım. önce 12 lik saat dilimleriyle, 24 dilimlik saat dilimlerini 1 e 1 eşleştiren bir fonksiyon yaratmam gerekti. ardından program çalışmasa bile, saat verilerini bir yerden almam gerekiyordu. önce istanbul bazlı lokal saati seçtim, fakat bu internet kopmalarında büyük kafa karışıklığı yaratabileceği için, bilgisayar kapalı olsa bile, tüm bileşenler arasında eşzamanlılığı sağlayan bios saatini referans aldım chrono kütüphanesiyle. her bir saati, 360 derecelik daireyi 12 ye bölüp 30 derecelik açılarla yerleştirdiğimde (12 yi 0 dereceden başlatarak, 0 derece daireyi dikey olarak ortadan ikiye böldüğünüzde sol yarım kürede kalan tepe noktasıdır ) kusursuz bir analog saate kavuşmuş oldum.
1 saat: 1
2 saat: 2
3 saat: 3
4 saat: 4
5 saat: 5
6 saat: 6
7 saat: 7
8 saat: 8
9 saat: 9
10 saat: 10
11 saat: 11
12 saat: 12 (Öğle)
13 saat: 1
14 saat: 2
15 saat: 3
16 saat: 4
17 saat: 5
18 saat: 6
19 saat: 7
20 saat: 8
21 saat: 9
22 saat: 10
23 saat: 11
Son saat: 12:59:24 (12 saat formatında)
#include <SFML/Graphics.hpp> // SFML Grafik kütüphanesini içe aktarır
#include <SFML/System.hpp> // SFML Sistem işlevlerini içe aktarır
#include <iostream> // Giriş/Çıkış akışları için standart kütüphane
#include <cmath> // Matematiksel fonksiyonlar için kütüphane
#include <chrono> // Zaman işlemleri için kütüphane
#include <ctime> // C zaman kütüphanesi
// Saatin elini çizen fonksiyon
void drawClockHand(sf::RenderWindow &window, float angle, float length, sf::Color color) {
sf::RectangleShape hand(sf::Vector2f(length, 5)); // El şekli için bir dikdörtgen oluştur
hand.setFillColor(color); // Elin rengini ayarla
hand.setOrigin(0, 2.5f); // Orijini elin sol tarafına ayarla
hand.setRotation(angle); // Belirtilen açıya döndür
hand.setPosition(400, 300); // Saati merkezi noktaya yerleştir
window.draw(hand); // Eli çiz
}
// Saatin yüzünü çizen fonksiyon
void drawClockFace(sf::RenderWindow &window, sf::Font &font) {
sf::CircleShape clockFace(250); // Saat yüzü için bir daire oluştur
clockFace.setFillColor(sf::Color::Transparent); // Dolu renk olarak saydam ayarla
clockFace.setOutlineThickness(5); // Kenar kalınlığını ayarla
clockFace.setOutlineColor(sf::Color::Black); // Kenar rengini siyah ayarla
clockFace.setPosition(150, 50); // Saat yüzünün konumu
window.draw(clockFace); // Saat yüzünü çiz
// Sayıları ve aralarındaki çizgileri çiz
for (int i = 0; i < 12; ++i) { // 1'den 12'ye kadar döngü
float angle = 90 - (i * 30); // Sayının açısını hesapla
float rad = angle * 3.14f / 180; // Dereceleri radyana dönüştür
// Sayı için konumu hesapla
float x = 400 + 200 * cos(rad); // Açıya göre X konumu
float y = 300 - 200 * sin(rad); // Açıya göre Y konumu
// Sayı metni oluştur
sf::Text number(std::to_string(i == 0 ? 12 : i), font, 24); // 0 için 12 kullan
number.setFillColor(sf::Color::Black); // Metin rengini ayarla
number.setPosition(x - 10, y - 10); // Metni merkezle
window.draw(number); // Sayıyı çiz
// Sayılar arasındaki çizgileri çiz
sf::Vertex line[] = {
sf::Vertex(sf::Vector2f(400, 300)), // Saatin merkezi
sf::Vertex(sf::Vector2f(400 + 220 * cos(rad), 300 - 220 * sin(rad))) // Dış çizgi
};
window.draw(line, 2, sf::Lines); // Çizgiyi çiz
}
}
int main() {
// Pencereyi oluştur
sf::RenderWindow window(sf::VideoMode(800, 600), "Analog Saat"); // 800x600 boyutunda pencere
// Yazı tipini yükle
sf::Font font;
if (!font.loadFromFile("arial.ttf")) { // Yazı tipi dosyasının erişilebilir olduğundan emin ol
std::cerr << "Error loading font!" << std::endl; // Hata mesajı yazdır
return 1; // Yazı tipi yükleme başarısızsa çık
}
// Geçerli sistem zamanını al
auto now = std::chrono::system_clock::now(); // Geçerli zamanı al
std::time_t now_c = std::chrono::system_clock::to_time_t(now); // time_t'ye dönüştür
std::tm *currentTime = std::localtime(&now_c); // Yerel zaman yapısına dönüştür
// Sistem zamanından zaman değişkenlerini başlat
int hour = currentTime->tm_hour; // Saat
int minute = currentTime->tm_min; // Dakika
int second = currentTime->tm_sec; // Saniye
// Saat döngüsünü başlat
while (window.isOpen()) { // Pencere açık olduğu sürece
sf::Event event;
while (window.pollEvent(event)) { // Olayları kontrol et
if (event.type == sf::Event::Closed)
window.close(); // Kapatma olayı olduğunda pencereyi kapat
}
// Zamanı güncelle (saniyeleri artır)
second++; // Saniyeyi bir artır
if (second >= 60) { // Eğer saniye 60 veya daha fazlaysa
second = 0; // Saniyeyi sıfırla
minute++; // Dakikayı bir artır
if (minute >= 60) { // Eğer dakika 60 veya daha fazlaysa
minute = 0; // Dakikayı sıfırla
hour++; // Saati bir artır
if (hour >= 24) { // Eğer saat 24 veya daha fazlaysa
hour = 0; // Saati sıfırla
}
}
}
// Açıları dönüştür
float hourAngle = (hour % 12) * 30 + (minute / 60.0f) * 30; // Her saat 30 derece
float minuteAngle = minute * 6; // Her dakika 6 derece
float secondAngle = second * 6; // Her saniye 6 derece
// Pencereyi temizle
window.clear(sf::Color::White); // Pencere arka planını beyazla temizle
// Saat yüzünü çiz
drawClockFace(window, font); // Saat yüzünü çizme fonksiyonunu çağır
// Saat, dakika ve saniye elini çiz
drawClockHand(window, hourAngle - 90, 100, sf::Color::Black); // Saat eli (90 derece döndür)
drawClockHand(window, minuteAngle - 90, 150, sf::Color::Blue); // Dakika eli (90 derece döndür)
drawClockHand(window, secondAngle - 90, 180, sf::Color::Red); // Saniye eli (90 derece döndür)
// Çizimi güncelle
window.display(); // Çizilen içeriği göster
// Saniye elinin güncellenmesi için bir gecikme ekle
sf::sleep(sf::seconds(1)); // 1 saniye bekle
}
// Uygulama kapatıldığında son zamanı terminale yazdır
std::cout << "Last time: " << (hour == 0 ? 12 : hour) << ":" // Son saati yazdır
<< (minute < 10 ? "0" : "") << minute << ":" // Dakikayı yazdır (10'dan küçükse başına 0 ekle)
<< (second < 10 ? "0" : "") << second << " (12-hour format)" << std::endl; // Saniyeyi yazdır (10'dan küçükse başına 0 ekle)
return 0; // Programı başarıyla kapat
}
Last time: 22:38:33 (12-hour format)
bu programı yapana kadar birçok hata aldım. önce 12 lik saat dilimleriyle, 24 dilimlik saat dilimlerini 1 e 1 eşleştiren bir fonksiyon yaratmam gerekti. ardından program çalışmasa bile, saat verilerini bir yerden almam gerekiyordu. önce istanbul bazlı lokal saati seçtim, fakat bu internet kopmalarında büyük kafa karışıklığı yaratabileceği için, bilgisayar kapalı olsa bile, tüm bileşenler arasında eşzamanlılığı sağlayan bios saatini referans aldım chrono kütüphanesiyle. her bir saati, 360 derecelik daireyi 12 ye bölüp 30 derecelik açılarla yerleştirdiğimde (12 yi 0 dereceden başlatarak, 0 derece daireyi dikey olarak ortadan ikiye böldüğünüzde sol yarım kürede kalan tepe noktasıdır ) kusursuz bir analog saate kavuşmuş oldum.
1 saat: 1
2 saat: 2
3 saat: 3
4 saat: 4
5 saat: 5
6 saat: 6
7 saat: 7
8 saat: 8
9 saat: 9
10 saat: 10
11 saat: 11
12 saat: 12 (Öğle)
13 saat: 1
14 saat: 2
15 saat: 3
16 saat: 4
17 saat: 5
18 saat: 6
19 saat: 7
20 saat: 8
21 saat: 9
22 saat: 10
23 saat: 11
Son saat: 12:59:24 (12 saat formatında)
#include <SFML/Graphics.hpp> // SFML Grafik kütüphanesini içe aktarır
#include <SFML/System.hpp> // SFML Sistem işlevlerini içe aktarır
#include <iostream> // Giriş/Çıkış akışları için standart kütüphane
#include <cmath> // Matematiksel fonksiyonlar için kütüphane
#include <chrono> // Zaman işlemleri için kütüphane
#include <ctime> // C zaman kütüphanesi
// Saatin elini çizen fonksiyon
void drawClockHand(sf::RenderWindow &window, float angle, float length, sf::Color color) {
sf::RectangleShape hand(sf::Vector2f(length, 5)); // El şekli için bir dikdörtgen oluştur
hand.setFillColor(color); // Elin rengini ayarla
hand.setOrigin(0, 2.5f); // Orijini elin sol tarafına ayarla
hand.setRotation(angle); // Belirtilen açıya döndür
hand.setPosition(400, 300); // Saati merkezi noktaya yerleştir
window.draw(hand); // Eli çiz
}
// Saatin yüzünü çizen fonksiyon
void drawClockFace(sf::RenderWindow &window, sf::Font &font) {
sf::CircleShape clockFace(250); // Saat yüzü için bir daire oluştur
clockFace.setFillColor(sf::Color::Transparent); // Dolu renk olarak saydam ayarla
clockFace.setOutlineThickness(5); // Kenar kalınlığını ayarla
clockFace.setOutlineColor(sf::Color::Black); // Kenar rengini siyah ayarla
clockFace.setPosition(150, 50); // Saat yüzünün konumu
window.draw(clockFace); // Saat yüzünü çiz
// Sayıları ve aralarındaki çizgileri çiz
for (int i = 0; i < 12; ++i) { // 1'den 12'ye kadar döngü
float angle = 90 - (i * 30); // Sayının açısını hesapla
float rad = angle * 3.14f / 180; // Dereceleri radyana dönüştür
// Sayı için konumu hesapla
float x = 400 + 200 * cos(rad); // Açıya göre X konumu
float y = 300 - 200 * sin(rad); // Açıya göre Y konumu
// Sayı metni oluştur
sf::Text number(std::to_string(i == 0 ? 12 : i), font, 24); // 0 için 12 kullan
number.setFillColor(sf::Color::Black); // Metin rengini ayarla
number.setPosition(x - 10, y - 10); // Metni merkezle
window.draw(number); // Sayıyı çiz
// Sayılar arasındaki çizgileri çiz
sf::Vertex line[] = {
sf::Vertex(sf::Vector2f(400, 300)), // Saatin merkezi
sf::Vertex(sf::Vector2f(400 + 220 * cos(rad), 300 - 220 * sin(rad))) // Dış çizgi
};
window.draw(line, 2, sf::Lines); // Çizgiyi çiz
}
}
int main() {
// Pencereyi oluştur
sf::RenderWindow window(sf::VideoMode(800, 600), "Analog Saat"); // 800x600 boyutunda pencere
// Yazı tipini yükle
sf::Font font;
if (!font.loadFromFile("arial.ttf")) { // Yazı tipi dosyasının erişilebilir olduğundan emin ol
std::cerr << "Error loading font!" << std::endl; // Hata mesajı yazdır
return 1; // Yazı tipi yükleme başarısızsa çık
}
// Geçerli sistem zamanını al
auto now = std::chrono::system_clock::now(); // Geçerli zamanı al
std::time_t now_c = std::chrono::system_clock::to_time_t(now); // time_t'ye dönüştür
std::tm *currentTime = std::localtime(&now_c); // Yerel zaman yapısına dönüştür
// Sistem zamanından zaman değişkenlerini başlat
int hour = currentTime->tm_hour; // Saat
int minute = currentTime->tm_min; // Dakika
int second = currentTime->tm_sec; // Saniye
// Saat döngüsünü başlat
while (window.isOpen()) { // Pencere açık olduğu sürece
sf::Event event;
while (window.pollEvent(event)) { // Olayları kontrol et
if (event.type == sf::Event::Closed)
window.close(); // Kapatma olayı olduğunda pencereyi kapat
}
// Zamanı güncelle (saniyeleri artır)
second++; // Saniyeyi bir artır
if (second >= 60) { // Eğer saniye 60 veya daha fazlaysa
second = 0; // Saniyeyi sıfırla
minute++; // Dakikayı bir artır
if (minute >= 60) { // Eğer dakika 60 veya daha fazlaysa
minute = 0; // Dakikayı sıfırla
hour++; // Saati bir artır
if (hour >= 24) { // Eğer saat 24 veya daha fazlaysa
hour = 0; // Saati sıfırla
}
}
}
// Açıları dönüştür
float hourAngle = (hour % 12) * 30 + (minute / 60.0f) * 30; // Her saat 30 derece
float minuteAngle = minute * 6; // Her dakika 6 derece
float secondAngle = second * 6; // Her saniye 6 derece
// Pencereyi temizle
window.clear(sf::Color::White); // Pencere arka planını beyazla temizle
// Saat yüzünü çiz
drawClockFace(window, font); // Saat yüzünü çizme fonksiyonunu çağır
// Saat, dakika ve saniye elini çiz
drawClockHand(window, hourAngle - 90, 100, sf::Color::Black); // Saat eli (90 derece döndür)
drawClockHand(window, minuteAngle - 90, 150, sf::Color::Blue); // Dakika eli (90 derece döndür)
drawClockHand(window, secondAngle - 90, 180, sf::Color::Red); // Saniye eli (90 derece döndür)
// Çizimi güncelle
window.display(); // Çizilen içeriği göster
// Saniye elinin güncellenmesi için bir gecikme ekle
sf::sleep(sf::seconds(1)); // 1 saniye bekle
}
// Uygulama kapatıldığında son zamanı terminale yazdır
std::cout << "Last time: " << (hour == 0 ? 12 : hour) << ":" // Son saati yazdır
<< (minute < 10 ? "0" : "") << minute << ":" // Dakikayı yazdır (10'dan küçükse başına 0 ekle)
<< (second < 10 ? "0" : "") << second << " (12-hour format)" << std::endl; // Saniyeyi yazdır (10'dan küçükse başına 0 ekle)
return 0; // Programı başarıyla kapat
}
Gündemdeki Haberler
Güncel Önemli Başlıklar