编写一个VB程序,单击“读取”按钮Command1读取五子棋某个状态的棋盘数据,单击“判断”按钮Command2,显示判断结果。运行界面如图所示:
若双方已经分出胜负,则显示胜方及连成五子的第一颗棋子的位置(行号及列号)。
若双方未分出胜负,则显示当前状态下将下棋的一方。
(1)若棋盘上的黑白棋子数量不相等时,则将下子的一方是
(2)编写如下VB程序,请在划线处填入合适的代码。
Const n = 10
Dim s(1 To 400) As String
Private Sub Command1_Click()
‘读取棋盘数据存储在数组s中,●表示黑子,○表示白子,□表示空位,代码略
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, flag As Boolean
flag = False : i = 1
Do While i <= n And flag = False
For j = 1 To n
If
Next j
i = i + 1
Loop
i = i - 1
If flag Then
If s((i - 1) * n + j) = "○" Then
Label1.Caption = "白方胜" + Str(i) + Str(j)
Else
Label1.Caption = "黑方胜" + Str(i) + Str(j)
End If
Else
If counts() Then Label1.Caption = "黑方下" Else Label1.Caption = "白方下"
End If
End Sub
Function judge(x As Integer, y As Integer) As Boolean
Dim dx(1 To 4) As Integer, dy(1 To 4) As Integer
Dim flag As Boolean, j As Integer, i As Integer, ux As Integer, uy As Integer
dx(1) = 1: dx(2) = 1: dx(3) = 1: dx(4) = 0
dy(1) = 1: dy(2) = 0: dy(3) = -1: dy(4) = 1
flag = False: i = 1
If s((x - 1) * n + y) <> "□" Then
Do While i <= 4 And flag = False
flag = True
For j = 1 To 4
ux = dx(i) * j + x
uy = dy(i) * j + y
If Not (ux >= 1 And ux <= n And uy >= 1 And uy <= n) Then flag = False: Exit For
If
Next j
i = i + 1
Loop
End If
judge = flag
End Function
Function counts() As Boolean
Dim i As Integer, j As Integer, white As Integer, black As Integer
counts = False:white = 0: black = 0
For i = 1 To n
For j = 1 To n
If s((i - 1) * n + j) = "○" Then white = white + 1
If s((i - 1) * n + j) = "●" Then black = black + 1
Next j
Next i
If
End Function
同类型试题
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2