⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wubird.frm

📁 会飞的鸟,右击上发条,含全部源代码,在VB与WINXP上测试通过!
💻 FRM
📖 第 1 页 / 共 5 页
字号:
Private Sub KeyPic_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DoMouseDown Button, Shift, X, Y
End Sub

Private Sub KeyPic_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DoMouseMove Button, Shift, X, Y
End Sub

Private Sub KeyPic_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DoMouseUp Button, Shift, X, Y
End Sub

Private Sub mAbout_Click()
    Form1.Enabled = False
    Load Form2
    Form2.Show
End Sub

Private Sub mExit_Click()
    Unload Form1
End Sub

Private Sub mSound_Click()
    mSound.Checked = Not mSound.Checked
    SaveSetting "Screen Mates", "Wind-Ups", "Bird Sound", mSound.Checked
End Sub

Private Sub mWindItUp_Click()
    If Not Broken Then
        WindUpCount = WindUpCount + 40
        WindUp = False

        If WindUpCount > MAX_WINDUP Then
            WindUpCount = 0
            Broken = True
            AnimatedHeadIndex = 0
            Timer1.Interval = SLOW_SPEED2
            StartMoving = False
            HeadPic.MouseIcon = IconPic(0).MouseIcon
            BodyPic.MouseIcon = IconPic(0).MouseIcon
            BottomPic.MouseIcon = IconPic(0).MouseIcon
            KeyPic.MouseIcon = IconPic(0).MouseIcon
            Form1.MouseIcon = IconPic(0).MouseIcon
        Else
            KeyCount = 9
            Timer1.Interval = NORMAL_SPEED
            PlaySound ("WUBird0.wav")
        End If
    End If
End Sub

Private Sub Timer1_Timer()
    If Broken Then
        AnimatedHeadIndex = AnimatedHeadIndex + 1
        HeadPic.Picture = Head(Val(Mid(AnimatedHead, AnimatedHeadIndex, 1))).Picture
        HeadNo = Val(Mid(AnimatedHead, AnimatedHeadIndex, 1))
        DoMakeIrregularForm

        If AnimatedHeadIndex >= Len(AnimatedHead) Then
            Broken = False
            Timer1.Interval = 0
       End If
    ElseIf KeyCount > 0 Then
        KeyCount = KeyCount - 1
        If KeyCount <= 0 Then
            If StartMoving Then
                Timer1.Interval = 0
            Else
                DoSetSpeed
            End If
        End If
        
        KeyNo = KeyNo + 1
        If KeyNo > 6 Then
            KeyNo = 0
        End If
        
        KeyPic.Picture = Key(KeyNo).Picture
        DoMakeIrregularForm
    ElseIf Not StartMoving And Not WindUp Then
        LegsNo = LegsNo + 1
        
        If Not StartMoving And Form1.Left <> -70 Then
            Form1.Left = Form1.Left - 12
            
            If Form1.Left < -70 Then
                Form1.Left = -70
            End If
        End If
    
        WindUpCount = WindUpCount - 1
            
        If WindUpCount <= 0 Then
            WindUpCount = 0
            Timer1.Interval = 0
        Else
            DoSetSpeed
        End If
        
        If LegsNo > 10 Then
            LegsNo = 0
            PlaySound ("WUBird1.wav")
        End If

        BottomPic.Picture = Legs(LegsNo)
        
        KeyNo = KeyNo - 1
        If KeyNo < 0 Then
            KeyNo = 6
        End If
        
        KeyPic.Picture = Key(KeyNo).Picture
        DoMakeIrregularForm
    End If
End Sub

Private Sub DoMakeIrregularForm()
    DoSetHead
    Region1 = CreatePolygonRgn(lpPoint(0), MaxPolygonPoints, 0)
    
    DoSetBody
    Region2 = CreatePolygonRgn(lpPoint(0), MaxPolygonPoints, 0)
    CombineRgn Region1, Region1, Region2, RGN_OR
    DeleteObject Region2
    
    DoSetKey
    Region2 = CreatePolygonRgn(lpPoint(0), MaxPolygonPoints, 0)
    CombineRgn Region1, Region1, Region2, RGN_OR
    DeleteObject Region2
    
    If KeyNo = 0 Or KeyNo = 1 Or KeyNo = 6 Then
        DoSetKeyHold1
        Region2 = CreatePolygonRgn(lpPoint(0), MaxPolygonPoints, 0)
        CombineRgn Region1, Region1, Region2, RGN_DIFF
        DeleteObject Region2
        
        DoSetKeyHold2
        Region2 = CreatePolygonRgn(lpPoint(0), MaxPolygonPoints, 0)
        CombineRgn Region1, Region1, Region2, RGN_DIFF
        DeleteObject Region2
    End If
    
    DoSetBottom
    Region2 = CreatePolygonRgn(lpPoint(0), MaxPolygonPoints, 0)
    CombineRgn Region1, Region1, Region2, RGN_OR
    DeleteObject Region2
    
    DoSetBottomHold
    Region2 = CreatePolygonRgn(lpPoint(0), MaxPolygonPoints, 0)
    CombineRgn Region1, Region1, Region2, RGN_DIFF
    DeleteObject Region2
    
    SetWindowRgn hwnd, Region1, True
End Sub

Private Sub PlaySound(SoundFilename As String)
    Dim Filename As String
    
    If mSound.Checked Then
        If Right(App.Path, 1) = "\" Then
            Filename = App.Path + SoundFilename
        Else
            Filename = App.Path + "\" + SoundFilename
        End If
    
        If FileExists(Filename) Then
            sndPlaySound Filename, SND_NODEFAULT + SND_ASYNC
        End If
    End If
End Sub

Function FileExists(Filename As String) As Boolean
    Dim FileAttribute As Integer
   
    On Error GoTo ErrorFileExist

    FileAttribute = GetAttr(Filename)
    FileExists = ((FileAttribute And vbDirectory) = 0)
    GoTo ExitFileExist
   
ErrorFileExist:
    FileExists = False
    Resume ExitFileExist
   
ExitFileExist:
    On Error GoTo 0
End Function

Private Sub DoMouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        StartMoving = True
        
        If Broken Then
            AnimatedHeadIndex = Len(AnimatedHead) - 3
        Else
            Timer1.Interval = 0
        End If

        WindUp = False
        DifferenceX = X
        DifferenceY = Y
        HeadPic.MouseIcon = IconPic(1).MouseIcon
        BodyPic.MouseIcon = IconPic(1).MouseIcon
        BottomPic.MouseIcon = IconPic(1).MouseIcon
        KeyPic.MouseIcon = IconPic(1).MouseIcon
        Form1.MouseIcon = IconPic(1).MouseIcon
    ElseIf Button = 2 Then
        If StartMoving Then
            Timer1.Interval = 0
            mWindItUp_Click
            WindUp = True
        Else
            If Broken Then
                AnimatedHeadIndex = Len(AnimatedHead) - 3
            End If
            
            Form1.PopupMenu mPopupMenu
        End If
    End If
End Sub

Private Sub DoMouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        If StartMoving Then
            Form1.Left = Form1.Left + (X - DifferenceX)
            Form1.Top = Form1.Top + (Y - DifferenceY)
            DoEvents
        End If
    End If
End Sub

Private Sub DoMouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If StartMoving And Button = 1 Then
        WindUp = False
        StartMoving = False
        KeyCount = 0
        HeadPic.MouseIcon = IconPic(0).MouseIcon
        BodyPic.MouseIcon = IconPic(0).MouseIcon
        BottomPic.MouseIcon = IconPic(0).MouseIcon
        KeyPic.MouseIcon = IconPic(0).MouseIcon
        Form1.MouseIcon = IconPic(0).MouseIcon
        
        If WindUpCount > 0 Then
            DoSetSpeed
            PlaySound ("WUBird1.wav")
        End If
    End If
End Sub

Private Sub DoSetSpeed()
    If WindUpCount > 70 Then
        Timer1.Interval = NORMAL_SPEED
    ElseIf WindUpCount > 30 Then
        Timer1.Interval = SLOW_SPEED1
    Else
        Timer1.Interval = SLOW_SPEED2
    End If
End Sub

Private Sub DoSetHead()
    If HeadNo = 0 Then
        lpPoint(0).X = 27
        lpPoint(0).Y = 77
        lpPoint(1).X = 27
        lpPoint(1).Y = 75
        lpPoint(2).X = 19
        lpPoint(2).Y = 71
        lpPoint(3).X = 12
        lpPoint(3).Y = 71
        lpPoint(4).X = 12
        lpPoint(4).Y = 70
        lpPoint(5).X = 14
        lpPoint(5).Y = 68
        lpPoint(6).X = 14
        lpPoint(6).Y = 64
        lpPoint(7).X = 15
        lpPoint(7).Y = 62
        lpPoint(8).X = 14
        lpPoint(8).Y = 58
        lpPoint(9).X = 16
        lpPoint(9).Y = 54
        lpPoint(10).X = 7
        lpPoint(10).Y = 54
        lpPoint(11).X = 6
        lpPoint(11).Y = 53
        lpPoint(12).X = 14
        lpPoint(12).Y = 48
        lpPoint(13).X = 14
        lpPoint(13).Y = 45
        lpPoint(14).X = 15
        lpPoint(14).Y = 43
        lpPoint(15).X = 17
        lpPoint(15).Y = 39
        lpPoint(16).X = 25
        lpPoint(16).Y = 35
        lpPoint(17).X = 31
        lpPoint(17).Y = 32
        lpPoint(18).X = 38
        lpPoint(18).Y = 32
        lpPoint(19).X = 40
        lpPoint(19).Y = 34
        lpPoint(20).X = 52
        lpPoint(20).Y = 34
        lpPoint(21).X = 57
        lpPoint(21).Y = 37
        lpPoint(22).X = 61
        lpPoint(22).Y = 40
        lpPoint(23).X = 63
        lpPoint(23).Y = 42
        lpPoint(24).X = 63
        lpPoint(24).Y = 44
        lpPoint(25).X = 61
        lpPoint(25).Y = 46
        lpPoint(26).X = 62
        lpPoint(26).Y = 48
        lpPoint(27).X = 65
        lpPoint(27).Y = 52
        lpPoint(28).X = 65
        lpPoint(28).Y = 54
        lpPoint(29).X = 69
        lpPoint(29).Y = 61
        lpPoint(30).X = 69
        lpPoint(30).Y = 64
        lpPoint(31).X = 68
        lpPoint(31).Y = 66
        lpPoint(32).X = 66
        lpPoint(32).Y = 66
        lpPoint(33).X = 67
        lpPoint(33).Y = 68
        lpPoint(34).X = 66
        lpPoint(34).Y = 72
        lpPoint(35).X = 65
        lpPoint(35).Y = 73
        lpPoint(36).X = 62
        lpPoint(36).Y = 73
        lpPoint(37).X = 58
        lpPoint(37).Y = 70
        lpPoint(38).X = 58
        lpPoint(38).Y = 71
        lpPoint(39).X = 57
        lpPoint(39).Y = 73
        lpPoint(40).X = 54
        lpPoint(40).Y = 75
        lpPoint(41).X = 43
        lpPoint(41).Y = 75
        lpPoint(42).X = 39
        lpPoint(42).Y = 76
        lpPoint(43).X = 39
        lpPoint(43).Y = 77
        lpPoint(44).X = 27
        lpPoint(44).Y = 77
        MaxPolygonPoints = 45
    ElseIf HeadNo = 1 Then
        lpPoint(0).X = 27
        lpPoint(0).Y = 70
        lpPoint(1).X = 27
        lpPoint(1).Y = 68
        lpPoint(2).X = 19
        lpPoint(2).Y = 64
        lpPoint(3).X = 12
        lpPoint(3).Y = 64
        lpPoint(4).X = 12
        lpPoint(4).Y = 63
        lpPoint(5).X = 14
        lpPoint(5).Y = 61
        lpPoint(6).X = 14
        lpPoint(6).Y = 57
        lpPoint(7).X = 15
        lpPoint(7).Y = 55
        lpPoint(8).X = 14
        lpPoint(8).Y = 51
        lpPoint(9).X = 16
        lpPoint(9).Y = 47
        lpPoint(10).X = 7
        lpPoint(10).Y = 47
        lpPoint(11).X = 6
        lpPoint(11).Y = 46
        lpPoint(12).X = 14
        lpPoint(12).Y = 41
        lpPoint(13).X = 14
        lpPoint(13).Y = 38
        lpPoint(14).X = 15
        lpPoint(14).Y = 36
        lpPoint(15).X = 17
        lpPoint(15).Y = 32
        lpPoint(16).X = 25
        lpPoint(16).Y = 28
        lpPoint(17).X = 31
        lpPoint(17).Y = 25
        lpPoint(18).X = 38
        lpPoint(18).Y = 25
        lpPoint(19).X = 40
        lpPoint(19).Y = 27
        lpPoint(20).X = 52
        lpPoint(20).Y = 27
        lpPoint(21).X = 57
        lpPoint(21).Y = 30
        lpPoint(22).X = 61
        lpPoint(22).Y = 33
        lpPoint(23).X = 63
        lpPoint(23).Y = 35
        lpPoint(24).X = 63
        lpPoint(24).Y = 37
        lpPoint(25).X = 61
        lpPoint(25).Y = 39
        lpPoint(26).X = 62
        lpPoint(26).Y = 41
        lpPoint(27).X = 65
        lpPoint(27).Y = 45
        lpPoint(28).X = 65
        lpPoint(28).Y = 48
        lpPoint(29).X = 69
        lpPoint(29).Y = 54
        lpPoint(30).X = 69
        lpPoint(30).Y = 57
        lpPoint(31).X = 68
        lpPoint(31).Y = 59
        lpPoint(32).X = 66
        lpPoint(32).Y = 59
        lpPoint(33).X = 67
        lpPoint(33).Y = 61
        lpPoint(34).X = 66
        lpPoint(34).Y = 65
        lpPoint(35).X = 65
        lpPoint(35).Y = 66
        lpPoint(36).X = 62
        lpPoint(36).Y = 66
        lpPoint(37).X = 58
        lpPoint(37).Y = 63
        lpPoint(38).X = 58
        lpPoint(38).Y = 64
        lpPoint(39).X = 57
        lpPoint(39).Y = 66
        lpPoint(40).X = 54
        lpPoint(40).Y = 68
        lpPoint(41).X = 43
        lpPoint(41).Y = 68
        lpPoint(42).X = 39
        lpPoint(42).Y = 69
        lpPoint(43).X = 39
        lpPoint(43).Y = 70
        lpPoint(44).X = 37
        lpPoint(44).Y = 70
        lpPoint(45).X = 37
        lpPoint(45).Y = 77
        lpPoint(46).X = 29
        lpPoint(46).Y = 77
        lpPoint(47).X = 29
        lpPoint(47).Y = 70
        MaxPolygonPoints = 48
    ElseIf HeadNo = 2 Then
        lpPoint(0).X = 27
        lpPoint(0).Y = 67
        lpPoint(1).X = 27
        lpPoint(1).Y = 65
        lpPoint(2).X = 19
        lpPoint(2).Y = 61
        lpPoint(3).X = 12
        lpPoint(3).Y = 61
        lpPoint(4).X = 12

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -