[bb] Watch by Mr. Bean [ 1+ years ago ]

Started by BlitzBot, June 29, 2017, 00:28:39

Previous topic - Next topic

BlitzBot

Title : Watch
Author : Mr. Bean
Posted : 1+ years ago

Description : a simple watch-animation

Code :
Code (blitzbasic) Select
Graphics 640,480
I =360/2
I1=360/2
I2=360/2
v=Input("Speed (1=Normal)  ")

If v<1 v=1
If v>101 v=100
SEC=1000 /v
MIN=SEC*60
STD=MIN*60
tim =MilliSecs()
tim1=tim
tim2=tim

C=0
C1=0
C2=0

Repeat
Color 180,180,180
If C Or C1 Or C2 Cls
Oval 320-100,240-100,200,200,0
Oval 320-130,240-130,260,260,0
Text 320,240-115,"XII",1,1
Text 320+115,240,"III",1,1
Text 320,240+115,"VI",1,1
Text 320-115,240,"IX",1,1

LX= Sin(150)*109+320
LY= Cos(150)*109+240
LX1=Sin(150)*121+320
LY1=Cos(150)*121+240
Line LX,LY,LX1,LY1

LX= Sin(120)*109+320
LY= Cos(120)*109+240
LX1=Sin(120)*121+320
LY1=Cos(120)*121+240
Line LX,LY,LX1,LY1

LX= Sin(60)*109+320
LY= Cos(60)*109+240
LX1=Sin(60)*121+320
LY1=Cos(60)*121+240
Line LX,LY,LX1,LY1

LX= Sin(30)*109+320
LY= Cos(30)*109+240
LX1=Sin(30)*121+320
LY1=Cos(30)*121+240
Line LX,LY,LX1,LY1

LX= Sin(210)*109+320
LY= Cos(210)*109+240
LX1=Sin(210)*121+320
LY1=Cos(210)*121+240
Line LX,LY,LX1,LY1

LX= Sin(240)*109+320
LY= Cos(240)*109+240
LX1=Sin(240)*121+320
LY1=Cos(240)*121+240
Line LX,LY,LX1,LY1

LX= Sin(300)*109+320
LY= Cos(300)*109+240
LX1=Sin(300)*121+320
LY1=Cos(300)*121+240
Line LX,LY,LX1,LY1

LX= Sin(330)*109+320
LY= Cos(330)*109+240
LX1=Sin(330)*121+320
LY1=Cos(330)*121+240
Line LX,LY,LX1,LY1


If MilliSecs()-tim>SEC Then
tim=MilliSecs()
I=I-6
If I=0 I=360
C=1
Else
C=0
EndIf

If MilliSecs()-tim1>MIN Then
tim1=MilliSecs()
I1=I1-6
If I1=0 I1=360
C1=1
Else
C1=0
EndIf

If MilliSecs()-tim2>STD Then
tim2=MilliSecs()
I2=I2-6
If I2=0 I2=360
C2=1
Else
C2=0
EndIf





Color 100,100,100
X=Sin(I)*85
Y=Cos(I)*85  
X=X+320      
Y=Y+240
Line X,Y,320,240

Color 150,150,150
X1=Sin(I1)*80
Y1=Cos(I1)*80  
X1=X1+320      
Y1=Y1+240
Line X1,Y1,320,240

Color 255,255,255
X2=Sin(I2)*65
Y2=Cos(I2)*65  
X2=X2+320      
Y2=Y2+240
Line X2,Y2,320,240




Until KeyHit(1)

WaitKey
End


Comments :


bytecode77(Posted 1+ years ago)

 when using the backbuffer it wouldnt flicker so much...ps: it would be nice to see the real time! and not just 12:00oh and by the way: "engagement" is the best way to make the code clear!


Mr. Bean(Posted 1+ years ago)

 
Graphics 640,480
I =360/2
I1=360/2
I2=360/2
v=Input("Speed (1=Normal)  ")

If v<1 v=1
If v>101 v=100
SEC=1000 /v
MIN=SEC*60
STD=MIN*60
tim =MilliSecs()
tim1=tim
tim2=tim

C=0
C1=0
C2=0

SetBuffer BackBuffer()
Repeat
Color 180,180,180
If C Or C1 Or C2 Cls
Oval 320-100,240-100,200,200,0
Oval 320-130,240-130,260,260,0
Text 320,240-115,"XII",1,1
Text 320+115,240,"III",1,1
Text 320,240+115,"VI",1,1
Text 320-115,240,"IX",1,1

LX= Sin(150)*109+320
LY= Cos(150)*109+240
LX1=Sin(150)*121+320
LY1=Cos(150)*121+240
Line LX,LY,LX1,LY1

LX= Sin(120)*109+320
LY= Cos(120)*109+240
LX1=Sin(120)*121+320
LY1=Cos(120)*121+240
Line LX,LY,LX1,LY1

LX= Sin(60)*109+320
LY= Cos(60)*109+240
LX1=Sin(60)*121+320
LY1=Cos(60)*121+240
Line LX,LY,LX1,LY1

LX= Sin(30)*109+320
LY= Cos(30)*109+240
LX1=Sin(30)*121+320
LY1=Cos(30)*121+240
Line LX,LY,LX1,LY1

LX= Sin(210)*109+320
LY= Cos(210)*109+240
LX1=Sin(210)*121+320
LY1=Cos(210)*121+240
Line LX,LY,LX1,LY1

LX= Sin(240)*109+320
LY= Cos(240)*109+240
LX1=Sin(240)*121+320
LY1=Cos(240)*121+240
Line LX,LY,LX1,LY1

LX= Sin(300)*109+320
LY= Cos(300)*109+240
LX1=Sin(300)*121+320
LY1=Cos(300)*121+240
Line LX,LY,LX1,LY1

LX= Sin(330)*109+320
LY= Cos(330)*109+240
LX1=Sin(330)*121+320
LY1=Cos(330)*121+240
Line LX,LY,LX1,LY1


If MilliSecs()-tim>SEC Then
tim=MilliSecs()
I=I-6
If I=0 I=360
C=1
Else
C=0
EndIf

If MilliSecs()-tim1>MIN Then
tim1=MilliSecs()
I1=I1-6
If I1=0 I1=360
C1=1
Else
C1=0
EndIf

If MilliSecs()-tim2>STD Then
tim2=MilliSecs()
I2=I2-6
If I2=0 I2=360
C2=1
Else
C2=0
EndIf





Color 100,100,100
X=Sin(I)*85
Y=Cos(I)*85  
X=X+320      
Y=Y+240
Line X,Y,320,240

Color 150,150,150
X1=Sin(I1)*80
Y1=Cos(I1)*80  
X1=X1+320      
Y1=Y1+240
Line X1,Y1,320,240

Color 255,255,255
X2=Sin(I2)*65
Y2=Cos(I2)*65  
X2=X2+320      
Y2=Y2+240
Line X2,Y2,320,240



Flip
Until KeyHit(1)

WaitKey
End



Now with Backbuffer


GfK(Posted 1+ years ago)

 The 'minute' hand moves a second too early.  I'd hazard a guess that the 'hour' hand has the same problem, but I didn't want to watch it for an hour to find out.You should use CurrentTime() to make it show the correct time, also.


Mr. Bean(Posted 1+ years ago)

 Maybe I'll try later. But there's no time now!Thanks


jfk EO-11110(Posted 1+ years ago)

 You may have a look at the watch I made some years ago, somewhere here in the archives. It may give you an idea on how to use the systems date and time.


Mr. Bean(Posted 1+ years ago)

 Thanks,but the reason for doing that was mainly to demonstrate how to use Sine and Cosine.There isn't any time to improve the code, SryCS [/i]