大神 VB用一维数组 代码怎么编写?跪求啦!谢谢
解决方案 »
- 如何编写ISAPI,求实现方法
- 初来论坛问一下,够多少分增加一个星呀,找了一下没找到具体的规则?
- 文本框滚动条的问题
- 困扰我很久的打印问题,急盼解决
- tcp和UDP有什么不同啊
- 急,怪问题,在MaskEdBox中我设的格式是:dd/MM/yyyy,怎么我得到的text值变成:MM/dd/yyyy格式的了?
- 新手请教,有关一个类似计算器中的小问题!
- 利用paintpicture方法把usercontrol.picture拷贝到picturebox如何写代码?
- 急,高手指点,为什么无法卸载自己编写的服务(100分)
- VB.net,自由职业程序员的噩梦。。。。。。。。
- 使用以太网口的通信搭建
- 请问怎么使vb6.0+sp6的控件 Tabstrip的第二个tab处在激活的状态?
a(1) = 1
' ...
a(25) = 9
Dim aryOut(0 To 24) As Byte ' 一维数组
Private Sub Command1_Click()
Dim intDirect As Integer '方向 0 右 1下 2左 3上
Dim x As Integer, y As Integer '当前填写位置在矩阵中的坐标
Dim i As Integer
For i = 1 To 25 ' 25个数 挨个填入一维数组。当前位置从矩阵坐标 (0,0)开始 方向从0右开始
aryOut(GetAryPos(x, y)) = i '数值填入
getNext x, y, intDirect
Next
'产生输出字符串
Dim strout As String
For i = LBound(aryOut) To UBound(aryOut)
strout = strout & Format(aryOut(i), "00") & " "
If (i + 1) Mod 5 = 0 Then strout = strout & vbCrLf
Next
'打印输出
Debug.Print strout
End Sub
'根据矩阵坐标,获取其在数组中的下标
Private Function GetAryPos(ByVal x As Integer, ByVal y As Integer) As Integer
GetAryPos = 5 * y + x
End Function
'边缘检测 根据矩阵坐标,方向,获取下一个坐标,并看看该坐标上的数据是否已经有值(碰到边缘了)
Private Sub getNext(ByRef x As Integer, ByRef y As Integer, ByRef direct As Integer, Optional turntimes As Integer = 0)
Dim tmpx As Integer, tmpy As Integer
Dim Turnflag As Boolean '是否转向标志
If turntimes > 4 Then Exit Sub
'沿着输入的方向前进一步,获取坐标
tmpx = x: tmpy = y
Select Case direct
Case 0
tmpx = x + 1
Case 1
tmpy = y + 1
Case 2
tmpx = x - 1
Case 3
tmpy = y - 1
End Select
If tmpx > 4 Or tmpx < 0 Or tmpy > 4 Or tmpy < 0 Then
'如果超出矩阵范围了,检测到边缘,需要顺时针转向
Turnflag = True
Else
'没有超出矩阵范围,检测到矩阵已经填值了,需要顺时针转向,否则不需要
Turnflag = IIf(aryOut(GetAryPos(tmpx, tmpy)) > 0, True, False)
End If
If Turnflag Then
'如果需要转向,那么方向改变
direct = (direct + 1) Mod 4
'然后尝试取转向后的下一步
getNext x, y, direct, turntimes + 1
Else
'不需要转向,返回已经走了一步的坐标
x = tmpx: y = tmpy
End If
End Sub