数字排序小游戏
Option Explicit
Dim Label2X As Integer  '记录标签控件数组中要移动的标签控件左上角X的位置
Dim Label2Y As Integer  '记录标签控件数组中要移动的标签控件左上角Y的位置
'让标签数组中的每个标签控件上显示的数字是随机的,无重复的
Private Sub Init()
  Randomize
  Dim a(7) As Integer
  Dim i As Integer, k As Integer
 
  Label1.Caption = ""
 
  For i = 0 To 7
    a(i) = i
  Next
  For i = 0 To 7
      k = Int(Rnd * 8)
     
      Do While a(k) = -1    'a(k)=-1表示该数组元素对应的数字已经被使用过了
        k = Int(Rnd * 8)  '重新生成k的值,直到a(k)的值不等于-1
      Loop
     
      Label2(i).Caption = Trim(Str(a(k)))
      a(k) = -1  'a(k)的值已经使用了,不能再用,重新赋值为-1与其他的元素值相区别
     
  Next i
End Sub
Private Sub Command1_Click()
  Dim x As Integer, y As Integer
  Dim z As Integer
 
  Init
  Picture1.Enabled = True
 
  '让空白标签Label1出现的位置随机
  Randomize
  '记录下空白标签Label1的位置
  x = Label1.Left
  y = Label1.Top
  z = Int(Rnd * 8)
 
  '将空白标签Label1和标签控件数组任一控件交换位置
  Label1.Move Label2(z).Left, Label2(z).Top
免费游戏代码大全
  Label2(z).Move x, y
 
  Command1.Enabled = False
 
End Sub
Private Sub Command2_Click()
  End
End Sub
Private Sub Form_Load()
  Dim i As Integer
  Picture1.Enabled = False
 
  '在标签中显示游戏说明信息
  Label3.Caption = "如左图所示,将数字按0-7顺" & vbCrLf & vbCrLf & "序依次排列,即取得胜利。"
 
  '在标签中显示排列规则后的数字顺序
  Label1.Caption = 0
  For i = 0 To 6
    Label2(i).Caption = i + 1
  Next
End Sub
Private Sub Label1_DragDrop(Source As Control, x As Single, y As Single)
 
  Dim Label1X As Integer  '记录空白控件Label1左上角X的位置
  Dim Label1Y As Integer  '记录空白控件Label1左上角Y的位置
 
  Dim flag(3) As Boolean
   
  '获取空白控件Label1的位置
  Label1X = Label1.Left
  Label1Y = Label1.Top
   
  '要移动的控件位于空白控件Label1的正左侧
  flag(0) = (Label2X = Label1X - Source.Width) And (Label2Y = Label1Y)
   
  '要移动的控件位于空白控件Label1的正右侧
  flag(1) = (Label2X = Label1X + Source.Width) And (Label2Y = Label1Y)
   
  '要移动的控件位于空白控件Label1的正上方
  flag(2) = (Label2X = Label1X) And (Label2Y = Label1Y - Source.Height)
   
  '要移动的控件位于空白控件Label1的正下方
  flag(3) = (Label2X = Label1X) And (Label2Y = Label1Y + Source.Height)
   
  If flag(0) Or flag(1) Or flag(2) Or flag(3) Then
      Label1.Move Label2X, Label2Y
      Source.Move Label1X, Label1Y
  End If
 
  Win
End Sub
Private Sub Label2_MouseDown(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
  If Button = vbLeftButton Then  '如果按下鼠标左键
         
        '记录下要拖动控件的位置
        Label2X = Label2(Index).Left
        Label2Y = Label2(Index).Top
       
        Label2(Index).Drag 1  '启动拖动操作
  End If
End Sub
Private Sub Label2_MouseUp(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
  Label2(Index).Drag 2    '结束拖动操作
End Sub
Private Sub Win()
  Dim winner As Integer
  Dim i As Integer
  Dim answer As Integer
  '对于给定的标签控件数组中的任一标签控件,可以落在符合要求(对应位置应显示对应数字)
  '的八个位置中的任一位置
  '利用循环语句对标签控件数组中的每个标签控件进行检查,如果其落在某一符号要求的位置,
  '则变量winner的值加1,如果所有标签控件都落在符号要求的位置,则变量winner的值应为8
 
  For i = 0 To 7
    If Label2(i).Left = 0 And Label2(i).Top = 0 And _
        Label2(i).Caption = 0 Then
                winner = winner + 1
    ElseIf Label2(i).Left = Label2(i).Width And Label2(i).Top = 0 And _
            Label2(i).Caption = 1 Then
                winner = winner + 1
    ElseIf Label2(i).Left = 2 * Label2(i).Width And Label2(i).Top = 0 And _
            Label2(i).Caption = 2 Then
                winner = winner + 1
    ElseIf Label2(i).Left = 0 And Label2(i).Top = Label2(i).Height And _
            Label2(i).Caption = 3 Then
                winner = winner + 1
    ElseIf Label2(i).Left = Label2(i).Width And Label2(i).Top = Label2(i).Height And _
            Label2(i).Caption = 4 Then
                winner = winner + 1
    ElseIf Label2(i).Left = 2 * Label2(i).Width And Label2(i).Top = Label2(i).Height And _
                Label2(i).Caption = 5 Then
                winner = winner + 1
    ElseIf Label2(i).Left = 0 And Label2(i).Top = 2 * Label2(i).Height And _
            Label2(i).Caption = 6 Then
                winner = winner + 1
    ElseIf Label2(i).Left = Label2(i).Width And Label2(i).Top = 2 * Label2(i).Height And _
            Label2(i).Caption = 7 Then
                winner = winner + 1
    End If
  Next i
 
  If winner = 8 Then
        MsgBox " 恭喜您,胜利了!", 0 + 64 + 0, "提示"
        Picture1.Enabled = False
       

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。