summaryrefslogtreecommitdiff
path: root/life.py
diff options
context:
space:
mode:
Diffstat (limited to 'life.py')
-rw-r--r--life.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/life.py b/life.py
new file mode 100644
index 0000000..02627ea
--- /dev/null
+++ b/life.py
@@ -0,0 +1,73 @@
+import pygame
+import numpy as np
+import time
+
+# Инициализация Pygame
+pygame.init()
+
+# Определение размеров окна
+WINDOW_SIZE = (500, 500)
+
+# Создание окна
+screen = pygame.display.set_mode(WINDOW_SIZE)
+
+# Определение цветов
+BLACK = (0, 0, 0)
+WHITE = (255, 255, 255)
+
+# Определение размера клетки
+CELL_SIZE = 10
+
+# Определение размера сетки
+GRID_SIZE = (WINDOW_SIZE[0] // CELL_SIZE, WINDOW_SIZE[1] // CELL_SIZE)
+
+# Создание массива клеток
+cells = np.zeros((GRID_SIZE[0], GRID_SIZE[1]))
+
+# Определение начального состояния клеток
+cells[2, 1] = 1
+cells[2, 2] = 1
+cells[2, 3] = 1
+cells[1, 3] = 1
+cells[0, 2] = 1
+
+# Функция для отрисовки клетки
+def draw_cell(x, y):
+ pygame.draw.rect(screen, WHITE, (x * CELL_SIZE, y * CELL_SIZE, CELL_SIZE, CELL_SIZE))
+
+# Функция для отрисовки всех клеток
+def draw_cells():
+ for x in range(GRID_SIZE[0]):
+ for y in range(GRID_SIZE[1]):
+ if cells[x, y] == 1:
+ draw_cell(x, y)
+
+# Функция для обновления состояния клеток
+def update_cells():
+ global cells
+ new_cells = np.zeros((GRID_SIZE[0], GRID_SIZE[1]))
+ for x in range(GRID_SIZE[0]):
+ for y in range(GRID_SIZE[1]):
+ # Подсчет количества живых соседей
+ num_neighbors = (
+ cells[(x - 1) % GRID_SIZE[0], (y - 1) % GRID_SIZE[1]]
+ + cells[x % GRID_SIZE[0], (y - 1) % GRID_SIZE[1]]
+ + cells[(x + 1) % GRID_SIZE[0], (y - 1) % GRID_SIZE[1]]
+ + cells[(x - 1) % GRID_SIZE[0], y % GRID_SIZE[1]]
+ + cells[(x + 1) % GRID_SIZE[0], y % GRID_SIZE[1]]
+ + cells[(x - 1) % GRID_SIZE[0], (y + 1) % GRID_SIZE[1]]
+ + cells[x % GRID_SIZE[0], (y + 1) % GRID_SIZE[1]]
+ + cells[(x + 1) % GRID_SIZE[0], (y + 1) % GRID_SIZE[1]]
+ )
+ # Обновление состояния клетки
+ if cells[x, y] == 1 and num_neighbors in [2, 3]:
+ new_cells[x, y] = 1
+ elif cells[x, y] == 0 and num_neighbors == 3:
+ new_cells[x, y] = 1
+ cells = new_cells
+
+# Цикл игры
+while True:
+ # Очистка экрана
+ screen.fill
+ time.sleep(2)