Пятнашки. Анимация движения кнопок - VB
Формулировка задачи:
Добрый вечер!
Работаю над программой пятнашки, написал самый элементарный вариант с подменой кнопки на shape.
В итоге программа оказалась слишком простой, хочу довести ее до ума и оформить соответствующе.
Одна из основных идей - анимация передвижения кнопки с помощью таймера. Читал материал, принцип понял, а совместить не получается.
Будьте добры, предложите ваши идеи, где игру еще можно доработать? Код прилагается.
Заранее спасибо!
Листинг программы
- Dim L As Long, T As Long, K As Long
- Private Sub Command1_Click(Index As Integer)
- L = Command1(Index).Left
- T = Command1(Index).Top
- If Shape1.Left - 1080 = L And Shape1.Top = T Then
- K = Command1(Index).Left
- Command1(Index).Left = Shape1.Left
- Shape1.Left = K
- End If
- If Shape1.Left + 1080 = L And Shape1.Top = T Then
- K = Command1(Index).Left
- Command1(Index).Left = Shape1.Left
- Shape1.Left = K
- End If
- If Shape1.Top - 1080 = T And Shape1.Left = L Then
- K = Command1(Index).Top
- Command1(Index).Top = Shape1.Top
- Shape1.Top = K
- End If
- If Shape1.Top + 1080 = T And Shape1.Left = L Then
- K = Command1(Index).Top
- Command1(Index).Top = Shape1.Top
- Shape1.Top = K
- End If
- End Sub
- Function shake()
- Randomize
- For i = 0 To 500
- d = Fix(Rnd * 14)
- q = Command1(d).Left
- w = Command1(d).Top
- e = Shape1.Left
- r = Shape1.Top
- Command1(d).Left = e
- Command1(d).Top = r
- Shape1.Left = q
- Shape1.Top = w
- Next i
- End Function
- Private Sub Command2_Click()
- shake
- End Sub
- Private Sub Form_Load()
- For i = 0 To 14
- Command1(i).Caption = i + 1
- Next i
- shake
- End Sub
Решение задачи: «Пятнашки. Анимация движения кнопок»
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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д