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

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

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

Добрый вечер! Работаю над программой пятнашки, написал самый элементарный вариант с подменой кнопки на shape. В итоге программа оказалась слишком простой, хочу довести ее до ума и оформить соответствующе. Одна из основных идей - анимация передвижения кнопки с помощью таймера. Читал материал, принцип понял, а совместить не получается. Будьте добры, предложите ваши идеи, где игру еще можно доработать? Код прилагается. Заранее спасибо!
Листинг программы
  1. Dim L As Long, T As Long, K As Long
  2. Private Sub Command1_Click(Index As Integer)
  3. L = Command1(Index).Left
  4. T = Command1(Index).Top
  5. If Shape1.Left - 1080 = L And Shape1.Top = T Then
  6. K = Command1(Index).Left
  7. Command1(Index).Left = Shape1.Left
  8. Shape1.Left = K
  9. End If
  10. If Shape1.Left + 1080 = L And Shape1.Top = T Then
  11. K = Command1(Index).Left
  12. Command1(Index).Left = Shape1.Left
  13. Shape1.Left = K
  14. End If
  15. If Shape1.Top - 1080 = T And Shape1.Left = L Then
  16. K = Command1(Index).Top
  17. Command1(Index).Top = Shape1.Top
  18. Shape1.Top = K
  19. End If
  20. If Shape1.Top + 1080 = T And Shape1.Left = L Then
  21. K = Command1(Index).Top
  22. Command1(Index).Top = Shape1.Top
  23. Shape1.Top = K
  24. End If
  25. End Sub
  26. Function shake()
  27. Randomize
  28. For i = 0 To 500
  29. d = Fix(Rnd * 14)
  30. q = Command1(d).Left
  31. w = Command1(d).Top
  32. e = Shape1.Left
  33. r = Shape1.Top
  34. Command1(d).Left = e
  35. Command1(d).Top = r
  36. Shape1.Left = q
  37. Shape1.Top = w
  38. Next i
  39. End Function
  40. Private Sub Command2_Click()
  41. shake
  42. End Sub
  43. Private Sub Form_Load()
  44. For i = 0 To 14
  45. Command1(i).Caption = i + 1
  46. Next i
  47. shake
  48. End Sub

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

textual
Листинг программы
  1. Option Explicit
  2. Dim Q, W
  3. Dim L, T, N, K
  4.  
  5. Private Sub Комманда1_Click(Index As Integer)
  6. L = Комманда1(Index).Left
  7. T = Комманда1(Index).Top
  8.  
  9. Q = Index
  10.  
  11.   If (Shape1.Top - 840 = T Or Shape1.Top + 840 = T) And Shape1.Left = L Then
  12.     W = 0
  13.     N = Комманда1(Index).Top
  14.     K = Shape1.Top
  15.    Часы1.Enabled = True
  16.  End If
  17.  If (Shape1.Left - 960 = L Or Shape1.Left + 960 = L) And Shape1.Top = T Then
  18.     W = 1
  19.     N = Комманда1(Index).Left
  20.         K = Shape1.Left
  21.    Часы1.Enabled = True
  22.  End If
  23. End Sub
  24.  
  25. Private Sub Часы1_Timer()
  26. Dim d
  27. If Len(W) = 0 Then Часы1.Enabled = False
  28. d = IIf(N > K, 10, -10)
  29.  Select Case W
  30.   Case 0
  31.         Комманда1(Q).Top = Комманда1(Q).Top - d
  32.         Shape1.Top = Shape1.Top + d
  33.         If Комманда1(Q).Top = K Then Часы1.Enabled = False
  34.  Case Else
  35.          Комманда1(Q).Left = Комманда1(Q).Left - d
  36.         Shape1.Left = Shape1.Left + d
  37.         If Комманда1(Q).Left = K Then Часы1.Enabled = False
  38.  End Select
  39. End Sub
  40.  
  41.  
  42. Function shake()
  43. Dim i, d, Q, W, e, r
  44. Randomize
  45. For i = 0 To 500
  46. d = Fix(Rnd * 14)
  47. Q = Комманда1(d).Left
  48. W = Комманда1(d).Top
  49. e = Shape1.Left
  50. r = Shape1.Top
  51.  
  52. Комманда1(d).Left = e
  53. Комманда1(d).Top = r
  54. Shape1.Left = Q
  55. Shape1.Top = W
  56. Next i
  57. End Function
  58.  
  59. Private Sub Command2_Click()
  60. shake
  61. End Sub
  62.  
  63. Private Sub Form_Load()
  64. Dim i
  65. For i = 0 To 14
  66. Комманда1(i).Caption = i + 1
  67. Next i
  68. shake
  69. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы