可在每个交叉点上放置一个Image(用控件数组),然后处理click事件,这样不是很简单吗?而且还无需准确点中交叉点。 Private Sub Image1_Click(Index As Integer) Image1(Index).Picture = LoadPicture("mo.bmp") End Sub
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
下一步用x,y 整除棋盘的格子象素单位,求出第几格
再设置棋子的落点。
ok啦。
我有源码,可以与我聊系。[email protected]
但是我还没想出电脑的人工智能怎么做,你要是知道的话告诉我。
Private Sub Image1_Click(Index As Integer)
Image1(Index).Picture = LoadPicture("mo.bmp")
End Sub
我原来就是这样做的
很简单
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