Code: Select all
SCREEN 600,600
Repeat
SetWindow "Kello: "+Time()
//parsitaan tunnit, minuutit ja sekunnit erillisiin muuttujiin
h=Int(GetWord(Time(),1,":"))
m=Int(GetWord(Time(),2,":"))
s=Int(GetWord(Time(),3,":"))
//laitetaan ulkoreunoihin himmennystä
For i=1 To 10
Color i*23,i*17,0
Circle 44+i,44+i,600-(44+i)*2
Next i
//piirretään oranssit reunukset
Color 230,170,0
Circle 55,55,600-110
//himmennetään reunojen ja kellotaulujen välinen osa
For i=1 To 10
Color 230-i*23,170-i*17,0
Circle 66+i,66+i,600-(66+i)*2
Next i
//kellotaulun harmaa tausta
Color 50,50,50
Circle 75,75,450
Color 255,255,255
//piirretään numero 1-12 ja niiden taakse paksumpi pallero
For i=12 To 1 Step -1
Text 300+Cos(90-(i*(360/12)))*210-(TextWidth(""+i)/2),300-Sin(90-(i*(360/12)))*210-(TextHeight(""+i)/2),i
Circle 300+Cos(90-(i*30))*220-3,300-Sin(90-(i*30))*220-3,6
Next i
//piebnemmät pallerot ympäri kellotaulua
For i=1 To 60
Circle 300+Cos(90-(i*6))*220-1,300-Sin(90-(i*6))*220-1,2
Next i
//piirretään harmaat viivat minuuttien ja tuntien alapuolelle
//pehmentämään viivoja
Color 100,100,100
//minuuttien kulma on 90-(m)*6-(s/10)
//tuo -s/10 asettaa minuuttiviisarin liikkumaan myös
//sekuntien mukaan jolloin vältytään yhtäkkisiltä
//tökkäisyiltä
Line2(300,300,300+Cos(90-(m)*6-(s/10))*190,300-Sin(90-(m)*6-(s/10))*190,6)
//aikalailla sama kuin edellinen, mutta sekuntien
//sijasta vähennetään minuuttien määrän mukaan
Line2(300,300,300+Cos(90-(h*30)-(m/2))*150,300-Sin(90-(h*30)-(m/2))*150,6)
Color 255,255,255
//piirretään vielä ohuemmat viivat harmaiden minuutti-
// ja tunti viisareiden päälle
Line2(300,300,300+Cos(90-m*6-(s/10))*190,300-Sin(90-m*6-(s/10))*190,3)
Line2(300,300,300+Cos(90-(h*30)-(m/2))*150,300-Sin(90-(h*30)-(m/2))*150,3)
//piirretään punainen sekuntiviisari
//koska sekunteja on vain 60 kulma lasketaan sekuntit*6
//ja vähennetään kulma 90:stä(kellotaulun yläreuna)
Color 255,0,0
Line 300,300,300+Cos(90-s*6)*200,300-Sin(90-s*6)*200
//piirretään vielä keskiosa kelloa koristamaan
For i=1 To 5
Color i*25,i*25,i*25
Circle 290+i,290+i,20-i*2
Next i
DrawScreen
Forever
//funktio jolla voi piirtää viivan määräten itse paksuuden
Function line2(x#,y#,x2#,y2#,w=1)
xx#=x#
yy#=y#
//otetaan kulma pisteiden väliltä
ang#=GetAngle(xx#,yy#,x2#,y2#)
//jos etäisyys on enemmän kuin 1 siirrytään etiä päin
While Distance(xx#,yy#,x2#,y2#)>1
//piirretään pallo niin, että sen keksipiste sattuu
//kohtaan missä ollaan menossa
Circle xx#-w/2,yy#-w/2,w
//kasvatetaan x ja y koordinaatteja pisteiden
//välisen kulman mukaan
xx#=xx#+Cos(ang#)
yy#=yy#-Sin(ang#)
Wend
EndFunction
Code: Select all
SCREEN 600,600
taulu=MakeImage(600,600)
DrawToImage taulu
//laitetaan ulkoreunoihin himmennystä
For i=1 To 10
Color i*23,i*17,0
Circle 44+i,44+i,600-(44+i) Shl 1
Next i
//piirretään oranssit reunukset
Color 230,170,0
Circle 55,55,600-110
//himmennetään reunojen ja kellotaulujen välinen osa
For i=1 To 10
Color 230-i*23,170-i*17,0
Circle 66+i,66+i,600-(66+i) Shl 1
Next i
//kellotaulun harmaa tausta
Color 50,50,50
Circle 75,75,450
Color 255,255,255
//piirretään numero 1-12 ja niiden taakse paksumpi pallero
For i=12 To 1 Step -1
Text 300+Cos(90-i*30)*210-(TextWidth(""+i) Shr 1),300-Sin(90-i*30)*210-(TextHeight(""+i) Shr 1),i
Circle 300+Cos(90-i*30)*220-3,300-Sin(90-i*30)*220-3,6
Next i
//piebnemmät pallerot ympäri kellotaulua
For i=1 To 60
Circle 300+Cos(90-i*6)*220-1,300-Sin(90-i*6)*220-1,2
Next i
DrawToScreen
Repeat
DrawImage taulu,0,0
SetWindow "Kello: "+Time()
//parsitaan tunnit, minuutit ja sekunnit erillisiin muuttujiin
h=Int(GetWord(Time(),1,":"))
m=Int(GetWord(Time(),2,":"))
s=Int(GetWord(Time(),3,":"))
Color 255,255,255
For i=12 To 1 Step -1
Text 300+Cos(90-i*30)*210-(TextWidth(""+i) Shr 1),300-Sin(90-i*30)*210-(TextHeight(""+i) Shr 1),i
Next i
//piirretään harmaat viivat minuuttien ja tuntien alapuolelle
//pehmentämään viivoja
Color 100,100,100
//minuuttien kulma on 90-(m)*6-(s/10)
//tuo -s/10 asettaa minuuttiviisarin liikkumaan myös
//sekuntien mukaan jolloin vältytään yhtäkkisiltä
//tökkäisyiltä
Line2(300,300,300+Cos(90-m*6-s/10)*190,300-Sin(90-m*6-s/10)*190,6)
//aikalailla sama kuin edellinen, mutta sekuntien
//sijasta vähennetään minuuttien määrän mukaan
Line2(300,300,300+Cos(90-h*30-m Shr 1)*150,300-Sin(90-h*30-m Shr 1)*150,6)
Color 255,255,255
//piirretään vielä ohuemmat viivat harmaiden minuutti-
// ja tunti viisareiden päälle
Line2(300,300,300+Cos(90-m*6-s/10)*190,300-Sin(90-m*6-s/10)*190,3)
Line2(300,300,300+Cos(90-h*30-m Shr 1)*150,300-Sin(90-h*30-m Shr 1)*150,3)
//piirretään punainen sekuntiviisari
//koska sekunteja on vain 60 kulma lasketaan sekuntit*6
//ja vähennetään kulma 90:stä(kellotaulun yläreuna)
Color 255,0,0
Line 300,300,300+Cos(90-s*6)*200,300-Sin(90-s*6)*200
//piirretään vielä keskiosa kelloa koristamaan
For i=1 To 5
Color i*25,i*25,i*25
Circle 290+i,290+i,20-i Shl 1
Next i
DrawScreen
Forever
//funktio jolla voi piirtää viivan määräten itse paksuuden
Function line2(x#,y#,x2#,y2#,w=1)
xx#=x#
yy#=y#
//otetaan kulma pisteiden väliltä
ang#=GetAngle(xx#,yy#,x2#,y2#)
//jos etäisyys on enemmän kuin 1 siirrytään etiä päin
While Distance(xx#,yy#,x2#,y2#)>1
//piirretään pallo niin, että sen keksipiste sattuu
//kohtaan missä ollaan menossa
Circle xx#-w Shr 1,yy#-w/2,w
//kasvatetaan x ja y koordinaatteja pisteiden
//välisen kulman mukaan
xx#=xx#+Cos(ang#)
yy#=yy#-Sin(ang#)
Wend
EndFunction