题目

[矩阵上的枚举]大家有接触过地雷游戏吗?如图所示是一个“挖地雷”游戏的界面,9X9个格子里都有一个数字,红旗代表地雷可以用“★”表示,图中共有10个地雷,“一一”表示空白格,边上的“▲”表示边框。 定义规则:你需要标记出所有空白格子周边相邻的格子上有多少地雷(在正方向和斜45度方向挨着的格子均可视为相邻),并将数量标记在空白格中,如下图所示。 实现上述功能的VB程序如下,请在划线处填入合适的代码。 Dim n As Integer,m As Integer      'n 存储地雷区域大小,m存储地雷数目 Dim a(1 To 100 * 100) As String Dim b(1 To 100 * 100) As Integer Private Sub Command1_Click()       '按要求生成数组a中的数据并显示     Randomize     List1. Clear     n=9 : m=10     Dim s As String, pos As Integer, i As Integer     s=" " : n=n+2     For i=1 To n * n         If isinside(i) Then a(i)="— —"         Else a(i)="▲"     Next i     For i=1 To m         pos=Int(Rnd * n * n)+1         Do While a(pos)="★" Or             pos= Int(Rnd * n *n)+1         Loop             a(pos)="★"     Next i     For i=1 To n* n         s= s+" "+a(i)         If i Mod n=0 Then             List1. AddItem s             s=" "         End If     Next i End Sub Private Sub Command2_Click()     Dim i As Integer, j As Integer, row As Integer     Dim col As Integer, start As Integer, temp As String     For i=1 To n* n         If a(i)="★" Then         row=(i-1) \ n+1 : col=(i-1) Mod n+1             For j=1 To 3                 start=                 If a(start+col- 1)="— —" Then b                 (start+ col- 1)= b(start+col- 1)+1                If a(start+col)="— —" Then                     b(start+ col)= b(start+col)+1                 If a(start+col+1)= "— —" Then b                 (start+col+ 1)= b(start+ col+1)+1             Next j         End If     Next i     List2. Clear     For i=1 To n         temp=" "         For j=1 To n             If a((i-1) * n+j)="— —" Then                 temp=temp+" "+ Str(b((i-1) * n+j))             Else                 temp= temp+" "+a((i- 1)*n+j)             End If         Next j         List2. AddItem temp     Next i End Sub Function isinside(x As Integer) As Boolean     isinside= x>n And And x     Modn<;>1AndxMod<> 0 End Function 答案:【1】Not isinside( pos)或isinside( pos)= False【2】start= (row+j-3) *n【3】x<<=(n-1)*n
信息技术 试题推荐
最近更新