Code-Beispiel
Eine Taschenuhr
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
WTFPL | Volta | 24.03.2015 |
Viel Rechnerei um Pi, cos und sin !
'Taschenuhr.bas by Volta
Const pi = 3.141593
Dim Shared As Integer breite, hoehe, radius, farbe=&hcfcf00
Dim As Single s, m, st, t
Dim ik As String
Sub Ziffernblatt (r As Integer, f As UInteger)
Circle (breite\2, hoehe\2),r,f,,,1,F
End Sub
Sub Scala (x As Single, r As Integer, f As UInteger)
Line (breite\2, hoehe\2)-((breite\2)-(Sin(x)*r), (hoehe\2)-(Cos(x)*r)),f
End Sub
Sub Uhrzeiger (x As Single, r As Integer, z As Single)
PSet (breite\2, hoehe\2),farbe
Line -((breite\2)-(Sin(x-z)*r*.8), (hoehe\2)-(Cos(x-z)*r*.8)),farbe
Line -((breite\2)-(Sin(x)*r), (hoehe\2)-(Cos(x)*r)),farbe
Line -((breite\2)-(Sin(x+z)*r*.8), (hoehe\2)-(Cos(x+z)*r*.8)),farbe
Line -(breite\2, hoehe\2),farbe
Paint ((breite\2)-(Sin(x)*r*.8), (hoehe\2)-(Cos(x)*r*.8)),farbe+&h303000,farbe
Line (breite\2, hoehe\2)-((breite\2)-(Sin(x)*r), (hoehe\2)-(Cos(x)*r)),farbe
End Sub
Screenres 300,300,32,2,4 'breite, hoehe, Farbtiefe, Zahl_der_Seiten, Flags
ScreenInfo breite, hoehe
Width breite\8,hoehe\16 'Font_16 einstellen
radius = hoehe\2-10
Color ,&hdddddd
Cls
ScreenSet 0, 1 'aktive_Seite, sichtbare_Seite
'zeichne Ziffernblatt auf Seite 0
Ziffernblatt radius, RGB(100,100,0)
For i As Integer = 1 To 60
Scala pi/-30*i, radius, -1
Next
Ziffernblatt radius-5, RGB(130,130,0)
For i As Integer = 1 To 12
Scala pi/-6*i, radius, -1
Next
Ziffernblatt radius-10, RGB(150,150,0)
For i As Integer = 1 To 12 'Zahlen
Draw String ((breite\2-7)-(Sin(pi/-6*i)*(radius-20)), _
(hoehe\2-7)-(Cos(pi/-6*i)*(radius-20))), Right(" " & i, 2), 0
Draw String ((breite\2-8)-(Sin(pi/-6*i)*(radius-20)), _
(hoehe\2-8)-(Cos(pi/-6*i)*(radius-20))), Right(" " & i, 2), -1
Next
ScreenSet 1, 1 'setze aktive Seite 1
Do
If t <= Timer Then
ScreenLock 'Anzeige nicht ändern
ScreenCopy 0, 1 'kopiere Seite 0 (Ziffernblatt) zu Seite 1
'Sekundenzeiger zeichnen
Uhrzeiger pi/-30*Val(Right(Time,2)), radius*.9, .03
'Minutenzeiger zeichnen
m = Val(Mid(Time,4,2))+(Val(Right(Time,2))/60)
m *= (pi/-30)
Uhrzeiger m, radius*0.75, .05
'Stundenzeiger zeichnen
st = Val(Left(Time,2)) + (Val(Mid(Time,4,2))/60)
If st > 12 Then st -= 12
st *= (pi/-6)
Uhrzeiger st, radius*0.6, .08
'Uhrzeit
Draw String (breite\2-31, hoehe\2+31),Time,0
Draw String (breite\2-32, hoehe\2+30),Time,-1
ScreenUnLock 'Anzeigen
ScreenSync
t = Timer+1
EndIf
Sleep 20,1
ik=InKey
If MultiKey (&h01) Or ik = Chr(255,107) Then Exit Do
Loop
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|