-
Notifications
You must be signed in to change notification settings - Fork 0
/
game_of_life.py
55 lines (44 loc) · 1.66 KB
/
game_of_life.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import pygame
from copy import deepcopy
from random import choice
SCHERM = BREEDTE, HOOGTE = 1280,720
SNELHEID = 20
TEGEL = 10
K, R = BREEDTE // TEGEL, HOOGTE // TEGEL
pygame.init()
speelveld = pygame.display.set_mode(SCHERM)
klok = pygame.time.Clock()
# huidig_veld = [[(k//(r+1)) % 2 for k in range(K)] for r in range(R)]
huidig_veld = [[choice([0, 1]) for k in range(K)] for r in range(R)]
volgend_veld= [[0 for k in range(K)] for r in range(R)]
def regels(huidig_veld, x, y):
aantal_buren = 0
for j in range(y - 1, y + 2):
for i in range(x - 1, x + 2):
if huidig_veld[j][i]:
aantal_buren += 1
if huidig_veld[y][x]:
aantal_buren -= 1
if aantal_buren == 2 or aantal_buren == 3:
return 1
return 0
else:
if aantal_buren == 3:
return 1
return 0
while True:
speelveld.fill(pygame.Color('black'))
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
[pygame.draw.line(speelveld, pygame.Color('darkslategray'), (x, 0), (x, HOOGTE)) for x in range(0, BREEDTE, TEGEL)]
[pygame.draw.line(speelveld, pygame.Color('darkslategray'), (0, y), (BREEDTE, y)) for y in range(0, HOOGTE, TEGEL)]
for x in range(1, K - 1):
for y in range(1, R - 1):
if huidig_veld[y][x]:
pygame.draw.rect(speelveld, pygame.Color('forestgreen'), (x * TEGEL + 2, y * TEGEL + 2, TEGEL - 2, TEGEL - 2))
volgend_veld[y][x] = regels(huidig_veld, x, y)
# Het 'volgende' veld wordt nu het 'huidige' veld
huidig_veld = deepcopy(volgend_veld)
pygame.display.flip()
klok.tick(SNELHEID)