Option Explicit
Rem 瀬戸
Dim hx As Integer, hy As Integer  '空き位置のパネルの位置
Dim Cx(10) As Integer, Cy(10) As Integer  'パネルの行、列の位置
Private Sub Form_Load()
Visible = True
AutoRedraw = True
Dim i As Integer
ScaleMode = 3
'********** パネル初期化 *********
For i = 0 To 7
    Cx(i) = i Mod 3
    Cy(i) = i \ 3
Next i
hx = 2: hy = 2
Randomize         '乱数を発生させる
For i = 0 To 500
    label_mousedown Int(8 * Rnd), 0, 0, 120, 120
Next i
End Sub
'*********マウスダウンでパネルを移動させる*******
Private Sub label_mousedown(index As Integer, button As Integer, _
    shift As Integer, X As Single, Y As Single)
    Dim d As Integer
    If (Cy(index) = hy And (Cx(index) = hx - 1 Or Cx(index) = hx + 1)) Or _
   (Cx(index) = hx And (Cy(index) = hy - 1 Or Cy(index) = hy + 1)) Then
        Label(index).Move Label(0).Width * hx, Label(0).Height * hy
        d = Cx(index): Cx(index) = hx: hx = d
        d = Cy(index): Cy(index) = hy: hy = d
    End If
End Sub
 | 
作業
| コントロール | プロパティ | 値 | 
|---|---|---|
| Label1 | (オブジェクト名) | Label | 
| Index | 0 | |
| Caption | 1 | |
| Font サイズ | 24 | |
| Height | 975 | |
| Width | 975 | 
| コントロール | プロパティ | 値 | 
|---|---|---|
| Label2 | (オブジェクト名) | Label | 
| Index | 1 | |
| Caption | 2 | |
| Font サイズ | 24 | |
| Height | 975 | |
| Width | 975 | 
ポイント
注意
発展