VB 版 (精华区)

发信人: zxfsnow (最近睡眠太少), 信区: VB
标  题: 扫雷
发信站: 哈工大紫丁香 (2000年06月07日20:00:08 星期三), 转信

发信人: zhch (zhch from nju), 信区: VB
标  题: 扫雷
发信站: NJU Lily BBS (Sat Mar 20 18:12:38 1999), 站内信件

c       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   3060
   ScaleWidth      =   3075
   StartUpPosition =   3  'Windows Default
   Begin VB.CommandButton C
      Height          =   300
      Index           =   100
      Left            =   -390
      TabIndex        =   0
      Top             =   0
      Width           =   300
   End
End
Attribute VB_Name = "XX1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
DefLng A-Z
Dim S(-1 To 10, -1 To 10), M(-1 To 10, -1 To 10) As Boolean
Dim Opened(-1 To 10, -1 To 10) As Boolean, NNN, T!

Private Sub C_Click(Index As Integer)
    If Abs(Timer - T!) > 1000 Then T! = Timer
    C(100).SetFocus
    X = Index Mod 10
    Y = Index \ 10
    Dig X, Y
End Sub

Private Sub C_MouseUp(Index As Integer, Button As Integer, Shift As Integer,
X As Single, Y As Single)
    X = Index Mod 10
    Y = Index \ 10
If Button = 2 Then
    M(X, Y) = Not M(X, Y)
    If M(X, Y) Then C(Index).Caption = "M" Else C(Index).Caption = ""
End If
End Sub

Private Sub Form_Load()
Randomize Timer
For n = 0 To 99
    X = n Mod 10
    Y = n \ 10
    Load C(n)
    C(n).Left = X * 300
    C(n).Top = Y * 300
    C(n).Visible = True
    Line (X * 300, Y * 300)-Step(270, 270), 0, B
Next n
For n = 1 To 10
Do
   X = Int(Rnd * 10)
   Y = Int(Rnd * 10)
   CurrentX = X * 300 + 90
   CurrentY = Y * 300 + 40
   Print "X"
Loop Until S(X, Y) = 0
S(X, Y) = -1
Next n
For X = 0 To 9
For Y = 0 To 9
    n = X + Y * 10
    If S(X, Y) = 0 Then
        p = 0
        For dx = X - 1 To X + 1
        For dy = Y - 1 To Y + 1
        If S(dx, dy) = -1 Then p = p + 1
        Next dy
        Next dx
        S(X, Y) = p
        CurrentX = X * 300 + 90
        CurrentY = Y * 300 + 40
        If p > 0 Then Print Chr(p + 48)
    End If
Next Y
Next X
End Sub

Sub Dig(X, Y)
If X < 0 Or X > 9 Or Y < 0 Or Y > 9 Or M(X, Y) Then Exit Sub
n = X + Y * 10
p = S(X, Y)
If Opened(X, Y) Then Exit Sub Else Opened(X, Y) = True
Unload C(n)
NNN = NNN + 1
If NNN >= 90 Then MsgBox "You win!" + vbCrLf + "Your time is " & Int(Timer -
T!) & "s": End
Select Case p
Case -1
    MsgBox "Game Over!"
    End
Case 0
    For dx = X - 1 To X + 1
    For dy = Y - 1 To Y + 1
    Dig dx, dy
    Next dy
    Next dx
End Select
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X2 As Single, Y
2 As Single)
X = X2 \ 300: Y = Y2 \ 300
If Opened(X, Y) And S(X, Y) > 0 Then
        p = S(X, Y)
        q = 0
        For dx = X - 1 To X + 1
        For dy = Y - 1 To Y + 1
        If M(dx, dy) Then q = q + 1
        Next dy
        Next dx
        If q = p Then
            For dx = X - 1 To X + 1
            For dy = Y - 1 To Y + 1
            Dig dx, dy
            Next dy
            Next dx
        End If
End If
End Sub
             
--

 以科计为本,以产业报国!
  超越自我,飞跃无限!
  

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.249]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.255毫秒