If NowCompe = 1 Then
nowX = X \ 360 + 1
nowY = Y \ 360 + 1
If State(nowX, nowY) <> 0 Then Exit Sub 判断重复下子
State(nowX, nowY) = NowCompe
picMain.PaintPicture picHuman.Picture, X + 140, Y + 140, 222, 222
Dim index As Integer
For index = 1 To 6
If X1(index) = 1 Then
If nowX = XwinX(index) And nowY = XwinY(index) Then
MsgBox " ^o^ 好强,好强 !! ", , " 你赢了!!"
picMain.Enabled = False
Exit Sub
End If
ElseIf X1(index) = 2 Then
If nowX = XwinX(index) And nowY = XwinY(index) Then X1(index) = 0
End If
Next
If nowX = llWinX And nowY = llWinY Then llW = 0 人的将五自救,造成电脑四连子失败
picMain.Enabled = False
NowCompe = 2
If Not CheckDead(nowX, nowY, 1, 1) Then
LeftCheck nowX, nowY, 1, 1
If PrePCX <> -1 Then PreCheck PrePCX, PrePCY, 1, 1
PreCheck nowX, nowY, 1, 1
CheckExp nowX, nowY, 1, 1
DimenAdd nowX, nowY, 1, 1, 1
End If
If Not CheckDead(nowX, nowY, 1, 0) Then
LeftCheck nowX, nowY, 1, 0
If PrePCX <> -1 Then PreCheck PrePCX, PrePCY, 1, 0
PreCheck nowX, nowY, 1, 0
CheckExp nowX, nowY, 1, 0
DimenAdd nowX, nowY, 1, 0, 1
End If
If Not CheckDead(nowX, nowY, 0, 1) Then
LeftCheck nowX, nowY, 0, 1
If PrePCX <> -1 Then PreCheck PrePCX, PrePCY, 0, 1
PreCheck nowX, nowY, 0, 1
CheckExp nowX, nowY, 0, 1
DimenAdd nowX, nowY, 0, 1, 1
End If
If Not CheckDead(nowX, nowY, -1, 1) Then
LeftCheck nowX, nowY, -1, 1
If PrePCX <> -1 Then PreCheck PrePCX, PrePCY, -1, 1
PreCheck nowX, nowY, -1, 1
CheckExp nowX, nowY, -1, 1
DimenAdd nowX, nowY, -1, 1, 1
End If
If Not CheckDead(nowX, nowY, 1, -1) Then
LeftCheck nowX, nowY, 1, -1
If PrePCX <> -1 Then PreCheck PrePCX, PrePCY, 1, -1
PreCheck nowX, nowY, 1, -1
CheckExp nowX, nowY, 1, -1
DimenAdd nowX, nowY, 1, -1, 1
End If
If Not CheckDead(nowX, nowY, -1, 0) Then
LeftCheck nowX, nowY, -1, 0
If PrePCX <> -1 Then PreCheck PrePCX, PrePCY, -1, 0
PreCheck nowX, nowY, -1, 0
CheckExp nowX, nowY, -1, 0
DimenAdd nowX, nowY, -1, 0, 1
End If
If Not CheckDead(nowX, nowY, 0, -1) Then
LeftCheck nowX, nowY, 0, -1
If PrePCX <> -1 Then PreCheck PrePCX, PrePCY, 0, -1
PreCheck nowX, nowY, 0, -1
CheckExp nowX, nowY, 0, -1
DimenAdd nowX, nowY, 0, -1, 1
End If
If Not CheckDead(nowX, nowY, -1, -1) Then
LeftCheck nowX, nowY, -1, -1
If PrePCX <> -1 Then PreCheck PrePCX, PrePCY, -1, -1
PreCheck nowX, nowY, -1, -1
CheckExp nowX, nowY, -1, -1
DimenAdd nowX, nowY, -1, -1, 1
End If
maxXY
End If
End If
End Sub
To check if there were a dead road:"#***#""#*#""#**#""#****#"...
Private Function CheckDead(ByVal Fx As Integer, ByVal Fy As Integer, ByVal adx As Integer _
, ByVal ady As Integer) As Boolean
Dim i As Integer
Dim k As Integer
Dim sum As Integer
Dim n As Integer
i = Fx
k = Fy
Do While State(i + adx, k + ady) = State(Fx, Fy) Or _
State(i + adx, k + ady) = 0
sum = sum + 1
If sum = 4 Then
CheckDead = False
Exit Function
End If
i = i + adx
k = k + ady
Loop
i = Fx
k = Fy
For n = 1 To 4 - sum
If State(i - adx, k - ady) <> State(Fx, Fy) And _
State(i - adx, k - ady) <> 0 Then
CheckDead = True
Exit Function
End If
i = i - adx
k = k - ady
Next
CheckDead = False
End Function
Pass fulfilled ExpValue to next empty location...
Private Sub CheckExp(ByVal Fx As Integer, ByVal Fy As Integer, ByVal adx As Integer, _
ByVal ady As Integer)
Dim n As Integer
n = CheDimens(adx, ady)
If Exp(Fx, Fy, n, 1) <> 0 Then
If Exp(Fx, Fy, n, 2) = State(Fx, Fy) Then fulfills
PassExp Fx, Fy, adx, ady, Exp(Fx, Fy, n, 1)
Else Not fulfills
If State(Fx - adx, Fy - ady) <> 0 Then
Exp(Fx + adx, Fy + ady, n, 1) = 0
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
MinusExp Fx - adx, Fy - ady, -adx, -ady, Exp(Fx, Fy, n, 1) * 0.5
Else
MinusExp Fx - 2 * adx, Fy - 2 * ady, -adx, -ady, Exp(Fx, Fy, n, 1) * 0.25
Exp(Fx - adx, Fy - ady, n, 1) = Exp(Fx - adx, Fy - ady, n, 1) - Exp(Fx, Fy, n, 1) * 0.5
End If
End If
End If
End Sub
Private Sub PassExp(ByVal Fx As Integer, ByVal Fy As Integer, ByVal adx As Integer, _
ByVal ady As Integer, ByVal Value As Single)
Dim n As Integer
n = CheDimens(adx, ady)
If State(Fx + adx, Fy + ady) = 0 Then
If State(Fx + adx * 2, Fy + ady * 2) = 0 Then
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
Exp(Fx + adx * 2, Fy + ady * 2, n, 1) = Exp(Fx + adx * 2, Fy + ady * 2, n, 1) + Value * 0.3
Exp(Fx + adx * 2, Fy + ady * 2, n, 2) = State(Fx, Fy)
ElseIf State(Fx + adx * 2, Fy + ady * 2) = State(Fx, Fy) Then
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
PassExp Fx + adx * 2, Fy + ady * 2, adx, ady, Value * 0.3
Else
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value * 0.6
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
End If
ElseIf State(Fx + adx, Fy + ady) = State(Fx, Fy) Then
PassExp Fx + adx, Fy + ady, adx, ady, Value * 1.1
End If
End Sub
Add ExpValue according to giving dimension...
Private Sub DimenAdd(ByVal Fx As Integer, ByVal Fy As Integer, _
ByVal adx As Integer, ByVal ady As Integer, ByVal Value As Single)
Dim n As Integer
n = CheDimens(adx, ady)
If State(Fx + adx, Fy + ady) = 0 Then #_
If State(Fx + adx * 2, Fy + ady * 2) = 0 Then #__
If State(Fx + adx * 3, Fy + ady * 3) = 0 Or _
State(Fx + adx * 3, Fy + ady * 3) = State(Fx, Fy) Then #___ #__*
If State(Fx - adx, Fy - ady) = 0 Or _
State(Fx - adx, Fy - ady) = State(Fx, Fy) Then _#__* _#___ *#__*
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value * 1.1
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
Exp(Fx + adx * 2, Fy + ady * 2, n, 1) = Exp(Fx + adx * 2, Fy + ady * 2, n, 1) + Value * 0.7
Exp(Fx + adx * 2, Fy + ady * 2, n, 2) = State(Fx, Fy)
Else $#__*
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value * 0.6
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
Exp(Fx + adx * 2, Fy + ady * 2, n, 1) = Exp(Fx + adx * 2, Fy + ady * 2, n, 1) + Value * 0.6
Exp(Fx + adx * 2, Fy + ady * 2, n, 2) = State(Fx, Fy)
End If
Else state(Fx + adx * 3, Fy + ady * 3) = 9 #__$
If State(Fx - adx, Fy - ady) = 0 Then _#__$
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value * 0.8
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
Exp(Fx + adx * 2, Fy + ady * 2, n, 1) = Exp(Fx + adx * 2, Fy + ady * 2, n, 1) + Value * 0.3
Exp(Fx + adx * 2, Fy + ady * 2, n, 2) = State(Fx, Fy)
Else State(Fx - adx, Fy - ady) = State(Fx, Fy) Then *#__$
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value * 1.1
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
Exp(Fx + adx * 2, Fy + ady * 2, n, 1) = Exp(Fx + adx * 2, Fy + ady * 2, n, 1) + Value * 0.3
Exp(Fx + adx * 2, Fy + ady * 2, n, 2) = State(Fx, Fy)
End If
End If
ElseIf State(Fx + adx * 2, Fy + ady * 2) = State(Fx, Fy) Then #_*
If State(Fx - adx, Fy - ady) = 0 Or _
State(Fx - adx, Fy - ady) = State(Fx, Fy) Then _#_* *#_*
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value * 1.2
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
DimenAdd Fx + adx * 2, Fy + ady * 2, adx, ady, Value
Else $#_*
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value * 0.5
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
DimenAdd Fx + adx * 2, Fy + ady * 2, adx, ady, Value * 0.7
End If
Else state(fx+adx*2,fy+ady*2)=9 #_$
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) + Value * 0.3
Exp(Fx + adx, Fy + ady, n, 2) = State(Fx, Fy)
End If
ElseIf State(Fx + adx, Fy + ady) = State(Fx, Fy) Then #*
If State(Fx - adx, Fy - ady) = 0 Or _
State(Fx - adx, Fy - ady) = State(Fx, Fy) Then _#*
DimenAdd Fx + adx, Fy + ady, adx, ady, Value * 1.5
Else $#*
DimenAdd Fx + adx, Fy + ady, adx, ady, Value
End If
Else state(fx+adx,fy+ady)=9 #$
End If
End Sub
Minus ExpValue according to giving dimension...
Private Sub MinusExp(ByVal Fx As Integer, ByVal Fy As Integer, _
, ByVal adx As Integer, ByVal ady As Integer, ByVal Value As Single)
Dim n As Integer
n = CheDimens(adx, ady)
If State(Fx + adx, Fy + ady) = 0 Then
If State(Fx + adx * 2, Fy + ady * 2) = 0 Then
If (State(Fx + adx * 3, Fy + ady * 3) = 0 Or _
State(Fx + adx * 3, Fy + ady * 3) = State(Fx, Fy)) Then
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) - Value
Exp(Fx + adx * 2, Fy + ady * 2, n, 1) = Exp(Fx + adx * 2, Fy + ady * 2, n, 1) - Value * 0.5
Exit Sub
End If
End If
End If
If State(Fx + adx, Fy + ady) = 0 Then
If State(Fx + adx * 2, Fy + ady * 2) = 0 Then
If State(Fx + adx * 3, Fy + ady * 3) <> 0 And _
State(Fx + adx * 3, Fy + ady * 3) <> State(Fx, Fy) Then
Exit Sub
End If
End If
End If
If State(Fx + adx, Fy + ady) = 0 Then
If State(Fx + adx * 2, Fy + ady * 2) = State(Fx, Fy) Then
Exp(Fx + adx, Fy + ady, n, 1) = Exp(Fx + adx, Fy + ady, n, 1) - Value
MinusExp Fx + adx, Fy + ady, adx, ady, Value * 0.5
Exit Sub
End If
End If
If State(Fx + adx, Fy + ady) = State(Fx, Fy) Then
MinusExp Fx + adx, Fy + ady, adx, ady, Value
End If
End Sub
Private Sub Form_Load()
picMain.Enabled = False
Dim n As Integer
Dim m As Integer
For n = 0 To 14 This part generate the border state to -1
State(0, n) = -1
State(n, 0) = -1
State(14, n) = -1
State(n, 14) = -1
Next
For n = 1 To 6
X1(n) = 0
Next
NowCompe = 1
CWIN = False
PrePCX = -1
PrePCY = -1
llW = 0
llWinX = 0
llWinY = 0
HW = 0
HuX = 0
HuY = 0
End Sub