热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->vb 
站内搜索:
一个五子棋源码(3)
作者:佚名 来源:不详 整理日期:2007-4-13

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

[1]  [2]  [3]  
相关文章
暂无