生成迷宫的程序

来源:互联网 发布:淘宝网店版怎么进入 编辑:程序博客网 时间:2024/04/30 08:12
Private Sub form_Click()
szx = 5000: szy = 5000: tr = 20: L = 50: mx = szx / L: my = szy / L: Dim A(1001,
While Not (X = 2 And Y = 1)
If A(X - 1, Y) * A(X, Y - 1) * A(X, Y + 1) * A(X + 1, Y) = 0 Then GoTo 70
For I = 0 To 3: XX = X + (I = 0) - (I = 2): YY = Y + (I = 1) - (I = 3): If A(XX,
Next: Return
X = XX: Y = YY: S = A(X, Y): GoTo 90
R = Int(Rnd(1) * 4): XX = X + (R = 0) - (R = 2): YY = Y + (R = 1) - (R = 3): If
X = XX: Y = YY: S = S + 1: A(X, Y) = S
Wend: Return
For I = 0 To mx + 1: A(I, 0) = -1: A(I, my + 1) = -1: Next: For I = 0 To my + 1: A(0, I) = -1: A(mx + 1, I) = -1: Next
X = mx - 1: Y = my: S = 1: A(X, Y) = S: GoSub 20
For Q = my To 1 Step -1: For P = mx To 1 Step -1: If A(P, Q) > 0 Then GoTo 160
R = Int(Rnd(1) * 4): PP = P + (R = 0) - (R = 2): QQ = Q + (R = 1) - (R = 3): If A(PP, QQ) < 1 Then GoTo 140
X = P: Y = Q: S = A(PP, QQ) * 2 + 1000: A(X, Y) = S: GoSub 20: F = 1
Next P, Q: If F Then F = 0: GoTo 130
Cls
For X = 1 To mx: For Y = 1 To my
T = Abs(A(X, Y) - A(X + 1, Y)): If T <= 1 Or T - 1000 = A(X, Y) Or T - 1000 = A(X + 1, Y) Then GoTo 230
Line (X * L + tr, Y * L - L + tr)-(X * L + tr, Y * L + tr)
T = Abs(A(X, Y) - A(X, Y + 1)): If T <= 1 Or T - 1000 = A(X, Y) Or T - 1000 = A(X, Y + 1) Then GoTo 240
Line (X * L - L + tr, Y * L + tr)-(X * L + tr, Y * L + tr)
Next Y, X
Line (tr, tr)-(tr + szx, tr + szy), , B: Line (L + tr, tr)-(L + L + tr, tr), &H8000000F: Line (szx - L + tr, szy + tr)-(szx - L - L + tr, szy + tr), &H8000000F
GoTo 1010
While Not (X = 2 And Y = 1)
For I = 1 To 4: For J = 1 To 8: Print A(J, I); " ";: Next: Print INKEY$;: Next: Return
Wend
End Sub

原创粉丝点击