Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 nifty analog clock
Index -> Programming, Turing -> Turing Submissions
View previous topic Printable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
zylum




PostPosted: Sun Feb 22, 2004 12:01 am   Post subject: nifty analog clock

here's a simple procedure that draws an analog clock. you can set the length of each hand and it will automatically adjust. the first parameter is for the hour hand, the second is for the minute hand and the last is for the second hand...

code:

procedure displayClock (hourHand, minuteHand, secondHand : int)
    setscreen ("offscreenonly")
    const PI := 3.14159
    var whatTime : string
    var whatDate : string
    var hour, minute, second : int
    var x, y, x2, y2 : int
    var ang : real
    loop
        date (whatDate)
        locate (1, 1)
        put whatDate
        time (whatTime)
        hour := strint (whatTime (1 .. 2))
        hour := hour mod 12
        minute := strint (whatTime (4 .. 5))
        second := strint (whatTime (7 .. 8))
        %hour hand
        ang := ((hour + (minute / 60)) / 12) * 360 - 90
        x := round (cos (-ang * (PI / 180)) * hourHand + maxx div 2)
        y := round (sin (-ang * (PI / 180)) * hourHand + maxy div 2)
        drawline (maxx div 2, maxy div 2, x, y, 7)
        %minute hand
        ang := (minute / 60) * 360 - 90
        x := round (cos (-ang * (PI / 180)) * minuteHand + maxx div 2)
        y := round (sin (-ang * (PI / 180)) * minuteHand + maxy div 2)
        drawline (maxx div 2, maxy div 2, x, y, 7)
        %second hand
        ang := (second / 60) * 360 - 90
        x := round (cos (-ang * (PI / 180)) * secondHand + maxx div 2)
        y := round (sin (-ang * (PI / 180)) * secondHand + maxy div 2)
        drawline (maxx div 2, maxy div 2, x, y, 7)
        %draw face
        for i : -90 .. 270 by 6
            if i mod 15 = 0 then
                x := round (cos (-i * (PI / 180)) * (max (hourHand, max (minuteHand, secondHand))) + maxx div 2)
                y := round (sin (-i * (PI / 180)) * (max (hourHand, max (minuteHand, secondHand))) + maxy div 2)
                x2 := round (cos (-i * (PI / 180)) * (max (hourHand, max (minuteHand, secondHand)) + 10) + maxx div 2)
                y2 := round (sin (-i * (PI / 180)) * (max (hourHand, max (minuteHand, secondHand)) + 10) + maxy div 2)
            else
                x := round (cos (-i * (PI / 180)) * (max (hourHand, max (minuteHand, secondHand)) + 5) + maxx div 2)
                y := round (sin (-i * (PI / 180)) * (max (hourHand, max (minuteHand, secondHand)) + 5) + maxy div 2)
                x2 := round (cos (-i * (PI / 180)) * (max (hourHand, max (minuteHand, secondHand)) + 10) + maxx div 2)
                y2 := round (sin (-i * (PI / 180)) * (max (hourHand, max (minuteHand, secondHand)) + 10) + maxy div 2)
            end if
            drawline (x, y, x2, y2, 7)
        end for
        drawoval (maxx div 2, maxy div 2, max (hourHand, max (minuteHand, secondHand)) + 10, max (hourHand, max (minuteHand, secondHand)) + 10, 7)
        View.Update
        cls
    end loop
end displayClock

displayClock (40, 70, 80)



- zylum
Sponsor
Sponsor
Sponsor
sponsor
recneps




PostPosted: Sun Feb 22, 2004 11:08 am   Post subject: (No subject)

Purdy, but could use some numbers and i think it moves slower than 1 move per second on my comp..? Smile
jonos




PostPosted: Sun Feb 22, 2004 11:24 am   Post subject: (No subject)

thats really nice, it works perfectly on my computer, even has the right time!!! wasn't expecting that
zylum




PostPosted: Sun Feb 22, 2004 12:28 pm   Post subject: (No subject)

lol, well of course it has the right time, it gets the values from your system clock. Wink
jonos




PostPosted: Mon Feb 23, 2004 7:37 am   Post subject: (No subject)

what did you use to get the system clock time? i couldn't find it in the reference
apomb




PostPosted: Mon Feb 23, 2004 3:53 pm   Post subject: (No subject)

umm well to get the system clock time by using
code:
var whatTime : string
loop
    time (whatTime)
    put whatTime
    delay (1000)
    cls
end loop


and Zylum very nice program
jonos




PostPosted: Mon Feb 23, 2004 4:02 pm   Post subject: (No subject)

thanks, so its just the a time() function.
apomb




PostPosted: Tue Feb 24, 2004 1:24 pm   Post subject: (No subject)

yep... pretty simple eh? i think its in the reference... if you want a complete description. It also only works in the newest version .. so you should get yourself that if you dont already have it
Sponsor
Sponsor
Sponsor
sponsor
Display posts from previous:   
   Index -> Programming, Turing -> Turing Submissions
View previous topic Tell A FriendPrintable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 8 Posts ]
Jump to:   


Style:  
Search: