可在每个交叉点上放置一个Image(用控件数组),然后处理click事件

解决方案 »

  1.   

    可以在MouseDown()中通过判断X,Y来知道点击的是哪个交叉点.
      

  2.   

    在MouseDown()中通过判断X,Y
    下一步用x,y 整除棋盘的格子象素单位,求出第几格
    再设置棋子的落点。
    ok啦。
    我有源码,可以与我聊系。[email protected]
    但是我还没想出电脑的人工智能怎么做,你要是知道的话告诉我。
      

  3.   

    可在每个交叉点上放置一个Image(用控件数组),然后处理click事件,这样不是很简单吗?而且还无需准确点中交叉点。
    Private Sub Image1_Click(Index As Integer)
        Image1(Index).Picture = LoadPicture("mo.bmp")
    End Sub
      

  4.   

    在每个交叉点上放置一个Image(用控件数组),然后处理click事件
    我原来就是这样做的
    很简单
      

  5.   

    最简单的方法,就是如smilejiangjun所说,在每个交叉点放置一个image控件,该控件的初始图片是一个十字线(和棋盘重合),当点击时,修改picture属性
      

  6.   

    Function addqz(xx As Integer, yy As Integer, nn As Integer) As qizi
    If xx < 0 Or yy < 0 Or xx > 18 Or yy > 18 Then
    Set set_qz = Nothing
    Else
    Dim q As qizi
    Set q = New qizi
    q.i = xx
    q.j = yy
    q.n = nn
    q.qz = totol_list.lookQzlistMark(nn)
    Set set_qz = q
    Set q = Nothing
    End If
    End Function
    '
    type qizi
    i as integer
    j as integer
    color as integer
    n as integer
    end type
    '
    Sub draw_circle(x As Integer, y As Integer, color As Boolean)
    FillStyle = 0
    Dim clr2
    If color = True Then
     clr2 = vbBlack
     FillColor = vbBlack
     Else: clr2 = vbWhite
    FillColor = vbWhite
    End If
    Circle (LEFTWIDTH + QZWIDTH * x, TOPLENGHT + QZWIDTH * y), QZWIDTH / 2, clr2
    End Sub
    '
    Sub delete_qz(x As Integer, y As Integer)
    If world(x, y) = True Then
    world(x, y) = False
    Nworld(x, y).Self.n = 0
    Nworld(x, y).Self.qz = 0
    Nworld(x, y).Self.clr = no
    clr(x, y) = no '///////////////////////why is it here?
    FillColor = BackColor
    FillStyle = 0
    Circle (x * QZWIDTH + LEFTWIDTH, TOPLENGHT + y * QZWIDTH), QZWIDTH / 2, BackColor
    If x > 0 And x < 18 Then
    Nworld(x - 1, y).Right.n = 0
    Nworld(x - 1, y).Right.qz = 0
    Nworld(x - 1, y).Right.clr = no
    Nworld(x + 1, y).Left.n = 0
    Nworld(x + 1, y).Left.clr = 0
    Nworld(x + 1, y).Left.qz = 0
    Line (LEFTWIDTH + x * QZWIDTH + QZWIDTH / 2, TOPLENGHT + y * QZWIDTH)-(LEFTWIDTH + x * QZWIDTH - QZWIDTH / 2, TOPLENGHT + y * QZWIDTH)
    ElseIf x = 0 Then
    Nworld(x + 1, y).Left.n = 0
    Nworld(x + 1, y).Left.clr = 0
    Nworld(x + 1, y).Left.qz = 0
    Line (LEFTWIDTH + x * QZWIDTH + QZWIDTH / 2, TOPLENGHT + y * QZWIDTH)-(LEFTWIDTH + x * QZWIDTH, TOPLENGHT + y * QZWIDTH)
    ElseIf x = 18 Then
    Nworld(x - 1, y).Right.n = 0
    Nworld(x - 1, y).Right.qz = 0
    Nworld(x - 1, y).Right.clr = no
    Line (LEFTWIDTH + x * QZWIDTH, TOPLENGHT + y * QZWIDTH)-(LEFTWIDTH + x * QZWIDTH - QZWIDTH / 2, TOPLENGHT + y * QZWIDTH)
    End If
    If y < 18 And y > 0 Then
    Nworld(x, y - 1).Bottom.n = 0
    Nworld(x, y - 1).Bottom.qz = 0
    Nworld(x, y - 1).Bottom.clr = no
    Nworld(x, y + 1).Top.n = 0
    Nworld(x, y + 1).Top.qz = 0
    Nworld(x, y + 1).Top.clr = 0
    Line (LEFTWIDTH + x * QZWIDTH, TOPLENGHT + y * QZWIDTH + QZWIDTH / 2)-(LEFTWIDTH + x * QZWIDTH, TOPLENGHT + y * QZWIDTH - QZWIDTH / 2)
    ElseIf y = 0 Then
    Nworld(x, y + 1).Top.n = 0
    Nworld(x, y + 1).Top.qz = 0
    Nworld(x, y + 1).Top.clr = 0
    Line (LEFTWIDTH + x * QZWIDTH, TOPLENGHT + y * QZWIDTH + QZWIDTH / 2)-(LEFTWIDTH + x * QZWIDTH, TOPLENGHT + y * QZWIDTH)
    ElseIf y = 18 Then
    Nworld(x, y - 1).Bottom.n = 0
    Nworld(x, y - 1).Bottom.qz = 0
    Nworld(x, y - 1).Bottom.clr = no
    Line (LEFTWIDTH + x * QZWIDTH, TOPLENGHT + y * QZWIDTH)-(LEFTWIDTH + x * QZWIDTH, TOPLENGHT + y * QZWIDTH - QZWIDTH / 2)
    End If
    End If
    End Sub