这并不是什么天方夜谈,我以前做过的:
Function IsRight(Index As Image, Ya As Single, Yb As Single, Xa As Single, Xb As Single, Optional Flag As Boolean = True) As Boolean
If WeiZhi.Fang((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) = Hong And Flag Then IsRight = False: Exit Function
Select Case Index.Tag
Case "车"
If Xb <> Yb And Xa <> Ya Then
IsRight = False: Exit Function
ElseIf Xb = Yb Then
For c = (IIf(Xa > Ya, Ya, Xa) - 30) / 900 + 1 To (IIf(Xa > Ya, Xa, Ya) - 30) / 900 - 1
If WeiZhi.Fang(c + 1, (Yb - 30) / 900 + 1) <> wu Then IsRight = False: Exit Function
Next
Else
For c = (IIf(Xb > Yb, Yb, Xb) - 30) / 900 + 1 To (IIf(Xb > Yb, Xb, Yb) - 30) / 900 - 1
If WeiZhi.Fang((Ya - 30) / 900 + 1, c + 1) <> wu Then IsRight = False: Exit Function
Next
End If
Case "马"
If Not (Abs(Xb - Yb) = 900 And Abs(Xa - Ya) = 1800) And Not (Abs(Xb - Yb) = 1800 And Abs(Xa - Ya) = 900) Then
IsRight = False: Exit Function
ElseIf Abs(Xb - Yb) = 900 Then
If WeiZhi.Fang((Ya - 30) / 900 + IIf(Xa > Ya, 2, 0), (Yb - 30) / 900 + 1) <> wu Then IsRight = False: Exit Function
Else
If WeiZhi.Fang((Ya - 30) / 900 + 1, (Yb - 30) / 900 + IIf(Xb > Yb, 2, 0)) <> wu Then IsRight = False: Exit Function
End If
Case "相"
If Xb < 4530 Then IsRight = False: Exit Function
If Not (Abs(Xb - Yb) = 1800 And Abs(Xa - Ya) = 1800) Then
IsRight = False: Exit Function
Else
If WeiZhi.Fang((Ya - 30) / 900 + IIf(Xa > Ya, 2, 0), (Yb - 30) / 900 + IIf(Xb > Yb, 2, 0)) <> wu Then IsRight = False: Exit Function
End If
Case "士"
If Xb < 6330 Or Xa < 2730 Or Xa > 4530 Then IsRight = False: Exit Function
If Not (Abs(Xb - Yb) = 900 And Abs(Xa - Ya) = 900) Then IsRight = False: Exit Function
Case "帅"
If Xa = Ya And WeiZhi.Fang((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) <> wu And WeiZhi.Zi((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) = 4 Then
For c = (IIf(Xb > Yb, Yb, Xb) - 30) / 900 + 1 To (IIf(Xb > Yb, Xb, Yb) - 30) / 900 - 1
If WeiZhi.Fang((Ya - 30) / 900 + 1, c + 1) <> wu Then IsRight = False: Exit Function
Next
IsRight = True
Exit Function
End If
If Xb < 6330 Or Xa < 2730 Or Xa > 4530 Then IsRight = False: Exit Function
If Not (Abs(Xb - Yb) = 900 And Abs(Xa - Ya) = 0) And Not (Abs(Xb - Yb) = 0 And Abs(Xa - Ya) = 900) Then IsRight = False: Exit Function
Case "炮"
Dim You As Boolean
If Xb <> Yb And Xa <> Ya Then
IsRight = False: Exit Function
ElseIf Xb = Yb Then
If WeiZhi.Fang((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) = Hei Or Not Flag Then
For c = (IIf(Xa > Ya, Ya, Xa) - 30) / 900 + 1 To (IIf(Xa > Ya, Xa, Ya) - 30) / 900 - 1
If WeiZhi.Fang(c + 1, (Yb - 30) / 900 + 1) <> wu Then
If You Then IsRight = False: Exit Function Else You = True
End If
Next
If You = False Then IsRight = False: Exit Function
Else
For c = (IIf(Xa > Ya, Ya, Xa) - 30) / 900 + 1 To (IIf(Xa > Ya, Xa, Ya) - 30) / 900 - 1
If WeiZhi.Fang(c + 1, (Yb - 30) / 900 + 1) <> wu Then IsRight = False: Exit Function
Next
End If
Else
If WeiZhi.Fang((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) = Hei Or Not Flag Then
For c = (IIf(Xb > Yb, Yb, Xb) - 30) / 900 + 1 To (IIf(Xb > Yb, Xb, Yb) - 30) / 900 - 1
If WeiZhi.Fang((Ya - 30) / 900 + 1, c + 1) <> wu Then
If You Then IsRight = False: Exit Function Else You = True
End If
Next
If You = False Then IsRight = False: Exit Function
Else
For c = (IIf(Xb > Yb, Yb, Xb) - 30) / 900 + 1 To (IIf(Xb > Yb, Xb, Yb) - 30) / 900 - 1
If WeiZhi.Fang((Ya - 30) / 900 + 1, c + 1) <> wu Then IsRight = False: Exit Function
Next
End If
End If
Case "兵"
If Yb > 3630 Then
If Not (Yb - Xb = 900 And Xa = Ya) Then IsRight = False: Exit Function
Else
If Not (Yb - Xb = 900 And Xa = Ya) And Not (Yb = Xb And Abs(Xa - Ya) = 900) Then IsRight = False: Exit Function
End If
End Select
IsRight = True
End Function
Function IsRight(Index As Image, Ya As Single, Yb As Single, Xa As Single, Xb As Single, Optional Flag As Boolean = True) As Boolean
If WeiZhi.Fang((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) = Hong And Flag Then IsRight = False: Exit Function
Select Case Index.Tag
Case "车"
If Xb <> Yb And Xa <> Ya Then
IsRight = False: Exit Function
ElseIf Xb = Yb Then
For c = (IIf(Xa > Ya, Ya, Xa) - 30) / 900 + 1 To (IIf(Xa > Ya, Xa, Ya) - 30) / 900 - 1
If WeiZhi.Fang(c + 1, (Yb - 30) / 900 + 1) <> wu Then IsRight = False: Exit Function
Next
Else
For c = (IIf(Xb > Yb, Yb, Xb) - 30) / 900 + 1 To (IIf(Xb > Yb, Xb, Yb) - 30) / 900 - 1
If WeiZhi.Fang((Ya - 30) / 900 + 1, c + 1) <> wu Then IsRight = False: Exit Function
Next
End If
Case "马"
If Not (Abs(Xb - Yb) = 900 And Abs(Xa - Ya) = 1800) And Not (Abs(Xb - Yb) = 1800 And Abs(Xa - Ya) = 900) Then
IsRight = False: Exit Function
ElseIf Abs(Xb - Yb) = 900 Then
If WeiZhi.Fang((Ya - 30) / 900 + IIf(Xa > Ya, 2, 0), (Yb - 30) / 900 + 1) <> wu Then IsRight = False: Exit Function
Else
If WeiZhi.Fang((Ya - 30) / 900 + 1, (Yb - 30) / 900 + IIf(Xb > Yb, 2, 0)) <> wu Then IsRight = False: Exit Function
End If
Case "相"
If Xb < 4530 Then IsRight = False: Exit Function
If Not (Abs(Xb - Yb) = 1800 And Abs(Xa - Ya) = 1800) Then
IsRight = False: Exit Function
Else
If WeiZhi.Fang((Ya - 30) / 900 + IIf(Xa > Ya, 2, 0), (Yb - 30) / 900 + IIf(Xb > Yb, 2, 0)) <> wu Then IsRight = False: Exit Function
End If
Case "士"
If Xb < 6330 Or Xa < 2730 Or Xa > 4530 Then IsRight = False: Exit Function
If Not (Abs(Xb - Yb) = 900 And Abs(Xa - Ya) = 900) Then IsRight = False: Exit Function
Case "帅"
If Xa = Ya And WeiZhi.Fang((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) <> wu And WeiZhi.Zi((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) = 4 Then
For c = (IIf(Xb > Yb, Yb, Xb) - 30) / 900 + 1 To (IIf(Xb > Yb, Xb, Yb) - 30) / 900 - 1
If WeiZhi.Fang((Ya - 30) / 900 + 1, c + 1) <> wu Then IsRight = False: Exit Function
Next
IsRight = True
Exit Function
End If
If Xb < 6330 Or Xa < 2730 Or Xa > 4530 Then IsRight = False: Exit Function
If Not (Abs(Xb - Yb) = 900 And Abs(Xa - Ya) = 0) And Not (Abs(Xb - Yb) = 0 And Abs(Xa - Ya) = 900) Then IsRight = False: Exit Function
Case "炮"
Dim You As Boolean
If Xb <> Yb And Xa <> Ya Then
IsRight = False: Exit Function
ElseIf Xb = Yb Then
If WeiZhi.Fang((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) = Hei Or Not Flag Then
For c = (IIf(Xa > Ya, Ya, Xa) - 30) / 900 + 1 To (IIf(Xa > Ya, Xa, Ya) - 30) / 900 - 1
If WeiZhi.Fang(c + 1, (Yb - 30) / 900 + 1) <> wu Then
If You Then IsRight = False: Exit Function Else You = True
End If
Next
If You = False Then IsRight = False: Exit Function
Else
For c = (IIf(Xa > Ya, Ya, Xa) - 30) / 900 + 1 To (IIf(Xa > Ya, Xa, Ya) - 30) / 900 - 1
If WeiZhi.Fang(c + 1, (Yb - 30) / 900 + 1) <> wu Then IsRight = False: Exit Function
Next
End If
Else
If WeiZhi.Fang((Xa - 30) / 900 + 1, (Xb - 30) / 900 + 1) = Hei Or Not Flag Then
For c = (IIf(Xb > Yb, Yb, Xb) - 30) / 900 + 1 To (IIf(Xb > Yb, Xb, Yb) - 30) / 900 - 1
If WeiZhi.Fang((Ya - 30) / 900 + 1, c + 1) <> wu Then
If You Then IsRight = False: Exit Function Else You = True
End If
Next
If You = False Then IsRight = False: Exit Function
Else
For c = (IIf(Xb > Yb, Yb, Xb) - 30) / 900 + 1 To (IIf(Xb > Yb, Xb, Yb) - 30) / 900 - 1
If WeiZhi.Fang((Ya - 30) / 900 + 1, c + 1) <> wu Then IsRight = False: Exit Function
Next
End If
End If
Case "兵"
If Yb > 3630 Then
If Not (Yb - Xb = 900 And Xa = Ya) Then IsRight = False: Exit Function
Else
If Not (Yb - Xb = 900 And Xa = Ya) And Not (Yb = Xb And Abs(Xa - Ya) = 900) Then IsRight = False: Exit Function
End If
End Select
IsRight = True
End Function
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货