Игра "Жизнь" - VB

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

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

Смысл игры в том, что пользователь должен задать какую-либо фигуру на поле, и нажать "Старт". Должны произойти следующие действия:если соседей у клетки <2 или >3 то она погибает, если соседей ровно 2 или 3, то рождается. Пользователь просто наблюдает за развитием событий. Вот, что у меня есть, но код почему-то не работает, помогите, пожалуйста, найти ошибку! Всё поле состоит из белых клеток, с помощью чёрных клеток строится фигура. Заранее большое спасибо!
Листинг программы
  1. Public Class Form1
  2. Dim A(1) As Integer
  3. Dim i, j As Integer
  4. Dim b As Integer
  5.  
  6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  7. DataGridView1.ColumnCount = 20
  8. DataGridView1.RowCount = 20
  9. End Sub
  10. Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick, DataGridView1.CellClick
  11. i = e.ColumnIndex
  12. j = e.RowIndex
  13. DataGridView1.Item(i, j).Style.BackColor = Color.Black
  14. DataGridView1.Item(i, j).Tag = 1
  15. End Sub
  16. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
  17. End
  18. End Sub
  19. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  20. Dim i, j As Integer
  21. Dim neighbors, s As Integer
  22. If DataGridView1.Item(i, j).Style.BackColor = Color.Black Then
  23. DataGridView1.Item(i, j).Tag = 1
  24. Else
  25. DataGridView1.Item(i, j).Style.BackColor = Color.White
  26. DataGridView1.Item(i, j).Tag = 0
  27. End If
  28. s = DataGridView1.Item(i, j).Tag = 1
  29. If s Then
  30. neighbors = s > 1
  31. Else
  32. MsgBox("Клетка не может развиваться при заданных условиях!")
  33. End If
  34. For i = 1 To 19
  35. For j = 1 To 19
  36. If DataGridView1.Item(i, j).Tag = 1 Then
  37. If neighbors > 3 Then
  38. DataGridView1.Item(i, j).Tag = 0
  39. If neighbors < 2 Then
  40. DataGridView1.Item(i, j).Tag = 0
  41. If neighbors = 3 Or neighbors = 2 Then
  42. DataGridView1.Item(i, j).Tag = 1
  43. End If
  44. End If
  45. End If
  46. End If
  47.  
  48. Next j
  49. Next i
  50.  
  51. End Sub
  52. End Class
Ещё один нюанс: вокруг клетки должно располагаться 8 других, из этих 8 и выбираются соседи. У меня в коде написано, что
Листинг программы
  1. neighbors = s > 1
, я не знаю, как по-другому определить соседа. Если есть мысли, выкладывайте, пожалуйста! Спасибо!

Решение задачи: «Игра "Жизнь"»

textual
Листинг программы
  1. Private Sub tmrMain_Timer()
  2.   Dim iI As Integer
  3.   Dim iJ As Integer
  4.   Dim iH As Integer
  5.   '
  6.  For iI = 1 To 20
  7.     For iJ = 1 To 20
  8.       iY(iI, iJ) = iX(iI, iJ)
  9.     Next iJ
  10.   Next iI
  11.   For iI = 1 To 20
  12.     iY(iI, 0) = iY(iI, 20)
  13.     iY(iI, 21) = iY(iI, 1)
  14.   Next iI
  15.   For iJ = 0 To 21
  16.     iY(0, iJ) = iY(20, iJ)
  17.     iY(21, iJ) = iY(1, iJ)
  18.   Next iJ
  19.   For iI = 1 To 20
  20.     For iJ = 1 To 20
  21.       iH = 9 * iY(iI, iJ)
  22.       iH = iH + iY(iI - 1, iJ - 1) + iY(iI - 1, iJ) + iY(iI - 1, iJ + 1) + iY(iI, iJ - 1)
  23.       iH = iH + iY(iI, iJ + 1) + iY(iI + 1, iJ - 1) + iY(iI + 1, iJ) + iY(iI + 1, iJ + 1)
  24.       iX(iI, iJ) = iL(iH)
  25.     Next iJ
  26.   Next iI
  27.   lG = lG + 1
  28.   lblG.Caption = "Поколение № " & Trim$(Str$(lG))
  29.   picXY.Cls
  30.   picXY.FillStyle = vbFSSolid
  31.   picXY.FillColor = RGB(0, 255, 0)
  32.   For iI = 1 To 20
  33.     For iJ = 1 To 20
  34.       If 1 = iX(iI, iJ) Then
  35.         picXY.Circle ((CSng(iI) - 1) + 0.5, (CSng(iJ) - 1) + 0.5), 0.3, RGB(0, 255, 0)
  36.       End If
  37.     Next iJ
  38.   Next iI
  39. End Sub

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


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

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

9   голосов , оценка 3.667 из 5

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

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

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