analog saat

entry2 galeri1
    1.
  1. 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.
    4 ...
  2. 2.
  3. https://galeri.uludagsozluk.com/r/2378358/+

    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
    }
    0 ...
© 2025 uludağ sözlük