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)
|