欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用vb模拟斐波那契钟效果

程序员文章站 2022-04-08 13:03:27
...

传送:斐波那契钟百度百科
手痒,元器件在家,电烙铁在大陆的另一头,用vb搞些事情好了
界面差不多是这个样子
用vb模拟斐波那契钟效果
用vb模拟斐波那契钟效果
两个text用来方便看时间,最后会删掉
使用Now来获取系统时间
开始完善内容
用vb模拟斐波那契钟效果
写了一长串if。。。看的糟心
用vb模拟斐波那契钟效果
运行了之后是这样,原来是And写成了&。。。改正之后一切正常
用vb模拟斐波那契钟效果
这就对了

要看懂它,只需要简单加上呈现红色和蓝色色块的总数值即可。同样的,要读分钟数,加上绿色和蓝色色块的总数值即可。另外,一小时里有60分钟,这60分钟以5分钟隔断,共有12块,所以分钟数值加好后,还需要乘以5以得到最后的实际分钟值。
小时数 = 红色数值 + 蓝色数值
分钟数 = (绿色数值 + 蓝色数值) x 5

基本功能实现完毕,开始写函数,并添加自动更新时间以及随机呈现钟面功能
现在的代码

Option Explicit
Dim uhr, minuten

Private Sub Form_Load()
    uhr = Hour(Now)
    minuten = Minute(Now)
    Text1.Text = uhr
    Text2.Text = minuten
'5判断
    If uhr > 5 And minuten > 25 Then
        Shape1(4).BackColor = vbBlue
        uhr = uhr - 5
        minuten = minuten - 25
    ElseIf uhr > 5 Then
        Shape1(4).BackColor = vbRed
        uhr = uhr - 5
    ElseIf minuten > 25 Then
        Shape1(4).BackColor = vbGreen
        minuten = minuten - 25
    Else
        Shape1(4).BackColor = vbWhite
    End If
'3判断
    If uhr > 3 And minuten > 15 Then
        Shape1(3).BackColor = vbBlue
        uhr = uhr - 3
        minuten = minuten - 15
    ElseIf uhr > 3 Then
        Shape1(3).BackColor = vbRed
        uhr = uhr - 3
    ElseIf minuten > 15 Then
        Shape1(3).BackColor = vbGreen
        minuten = minuten - 15
    Else
        Shape1(3).BackColor = vbWhite
    End If
'2判断
    If uhr > 2 And minuten > 10 Then
        Shape1(2).BackColor = vbBlue
        uhr = uhr - 2
        minuten = minuten - 10
    ElseIf uhr > 2 Then
        Shape1(2).BackColor = vbRed
        uhr = uhr - 2
    ElseIf minuten > 10 Then
        Shape1(2).BackColor = vbGreen
        minuten = minuten - 10
    Else
        Shape1(2).BackColor = vbWhite
    End If
'1判断
    If uhr > 1 And minuten > 5 Then
        Shape1(1).BackColor = vbBlue
        uhr = uhr - 1
        minuten = minuten - 5
    ElseIf uhr > 1 Then
        Shape1(1).BackColor = vbRed
        uhr = uhr - 1
    ElseIf minuten > 5 Then
        Shape1(1).BackColor = vbGreen
        minuten = minuten - 5
    Else
        Shape1(1).BackColor = vbWhite
    End If
'另一个1判断
    If uhr = 1 And minuten = 5 Then
        Shape1(0).BackColor = vbBlue
    ElseIf uhr = 1 Then
        Shape1(0).BackColor = vbRed
    ElseIf minuten = 5 Then
        Shape1(0).BackColor = vbGreen
    Else
        Shape1(0).BackColor = vbWhite
    End If
End Sub

后来又测试了一遍发现程序是错的。。。所有判断应为>=而不是>


写了个死循环vb崩溃代码没保存,让我去哭会儿先


完成啦
用vb模拟斐波那契钟效果
这是实际效果
用vb模拟斐波那契钟效果
每30s刷新一次钟面,除了随机钟面功能其他都已经实现
这里是源码

Option Explicit
Dim uhr, minuten
Dim i

'先显示一次钟面
Private Sub Form_Load()
    Call Uhrzeigen
End Sub

'每隔30s刷新一次
Private Sub Timer1_Timer()
    Call Uhrzeigen
End Sub

'调用Quardfarbe()函数完成整个钟面的显示
Private Function Uhrzeigen()
    uhr = Hour(Time)
    If uhr > 12 Then
        uhr = uhr - 12
    End If
'强制转换为12小时制,可用Format$(Time, "hh")代替
    minuten = Minute(Time)
    For i = 4 To 0 Step -1
    Quardfarbe (i)
    Next
End Function

'逐块完成颜色显示
Private Function Quardfarbe(q As Integer)
    Select Case q
        Case 4
            q = 5
        Case 3
            q = 3
        Case 2
            q = 2
        Case 1
            q = 1
        Case 0
            q = 1
    End Select
    If uhr >= q And minuten >= q * 5 Then
        Shape1(i).BackColor = vbBlue
        uhr = uhr - q
        minuten = minuten - q * 5
    ElseIf uhr >= q Then
        Shape1(i).BackColor = vbRed
        uhr = uhr - q
    ElseIf minuten >= q * 5 Then
        Shape1(i).BackColor = vbGreen
        minuten = minuten - q * 5
    Else
        Shape1(i).BackColor = vbWhite
    End If
End Function

完事,继续玩linux去了

相关标签: vb 斐波那契