Пятнашки. Анимация движения кнопок - VB

Узнай цену своей работы

Формулировка задачи:

Добрый вечер! Работаю над программой пятнашки, написал самый элементарный вариант с подменой кнопки на shape. В итоге программа оказалась слишком простой, хочу довести ее до ума и оформить соответствующе. Одна из основных идей - анимация передвижения кнопки с помощью таймера. Читал материал, принцип понял, а совместить не получается. Будьте добры, предложите ваши идеи, где игру еще можно доработать? Код прилагается. Заранее спасибо!

Решение задачи: «Пятнашки. Анимация движения кнопок»

textual
Листинг программы
Option Explicit
Dim Q, W
Dim L, T, N, K
 
Private Sub Комманда1_Click(Index As Integer)
L = Комманда1(Index).Left
T = Комманда1(Index).Top
 
Q = Index
 
  If (Shape1.Top - 840 = T Or Shape1.Top + 840 = T) And Shape1.Left = L Then
    W = 0
    N = Комманда1(Index).Top
    K = Shape1.Top
   Часы1.Enabled = True
 End If
 If (Shape1.Left - 960 = L Or Shape1.Left + 960 = L) And Shape1.Top = T Then
    W = 1
    N = Комманда1(Index).Left
        K = Shape1.Left
   Часы1.Enabled = True
 End If
End Sub
 
Private Sub Часы1_Timer()
Dim d
If Len(W) = 0 Then Часы1.Enabled = False
d = IIf(N > K, 10, -10)
 Select Case W
  Case 0
        Комманда1(Q).Top = Комманда1(Q).Top - d
        Shape1.Top = Shape1.Top + d
        If Комманда1(Q).Top = K Then Часы1.Enabled = False
 Case Else
         Комманда1(Q).Left = Комманда1(Q).Left - d
        Shape1.Left = Shape1.Left + d
        If Комманда1(Q).Left = K Then Часы1.Enabled = False
 End Select
End Sub
 
 
Function shake()
Dim i, d, Q, W, e, r
Randomize
For i = 0 To 500
d = Fix(Rnd * 14)
Q = Комманда1(d).Left
W = Комманда1(d).Top
e = Shape1.Left
r = Shape1.Top
 
Комманда1(d).Left = e
Комманда1(d).Top = r
Shape1.Left = Q
Shape1.Top = W
Next i
End Function
 
Private Sub Command2_Click()
shake
End Sub
 
Private Sub Form_Load()
Dim i
For i = 0 To 14
Комманда1(i).Caption = i + 1
Next i
shake
End Sub

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы