Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame, time, sys, random
- from pygame.locals import *
- board = [[0 for x in range(100)] for y in range(100)]
- def glider(board, x, y):
- board[x+1][y] = 1
- board[x+2][y+1] = 1
- board[x][y+2] = 1
- board[x+1][y+2] = 1
- board[x+2][y+2] = 1
- return board
- def friends(board, x, y):
- cnt = 0
- if board[x-1][y] == 1:
- cnt += 1
- if board[x+1][y] == 1:
- cnt += 1
- if board[x][y-1] == 1:
- cnt += 1
- if board[x][y+1] == 1:
- cnt += 1
- if board[x-1][y-1] == 1:
- cnt += 1
- if board[x-1][y+1] == 1:
- cnt += 1
- if board[x+1][y+1] == 1:
- cnt += 1
- if board[x+1][y-1]:
- cnt += 1
- return cnt
- def rndm(board, n):
- w = len(board) - 1
- h = len(board[0]) - 1
- for i in range(n):
- rw = random.randint(1, w)
- rh = random.randint(1, h)
- board[rw][rh] = 1
- return board
- def nextstep(board):
- w = len(board) - 1
- h = len(board[0]) - 1
- step = [[0 for x in range(w+1)] for y in range(h+1)]
- for x in range(1, w):
- for y in range(1, h):
- frn = friends(board, x, y)
- if board[x][y] == 1 and frn < 2:
- step[x][y] = 0
- if board[x][y] == 1 and frn == 2 or frn == 3:
- step[x][y] = 1
- if board[x][y] == 1 and frn > 3:
- step[x][y] = 0
- if board[x][y] == 0 and frn == 3:
- step[x][y] = 1
- return step
- def draw(windowSurface):
- windowSurface.fill((0, 0, 0))
- w = len(board) - 1
- h = len(board[0]) - 1
- for x in range(1, w):
- for y in range(1, h):
- if board[x][y] == 1:
- pygame.draw.rect(windowSurface, (255, 255, 255), (x * 5, y * 5, 5, 5))
- if __name__ == '__main__':
- pygame.init()
- windowSurface = pygame.display.set_mode((500, 500), 0, 32)
- pygame.display.set_caption('Game of Life')
- clock = pygame.time.Clock()
- #rboard = rndm(board, 5000)
- #board = glider(board, 20, 20)
- paused = False
- drawing = False
- speed = 10
- while True:
- draw(windowSurface)
- for event in pygame.event.get():
- if event.type == QUIT:
- pygame.quit()
- sys.exit()
- if pygame.key.get_pressed()[pygame.K_SPACE] != 0:
- paused = not paused
- if pygame.key.get_pressed()[pygame.K_r] != 0:
- board = rndm(board, 1000)
- if pygame.key.get_pressed()[pygame.K_c] != 0:
- board = [[0 for x in range(100)] for y in range(100)]
- if pygame.key.get_pressed()[pygame.K_UP] != 0:
- speed += 9
- if pygame.key.get_pressed()[pygame.K_DOWN] != 0:
- speed -= 9
- if pygame.mouse.get_pressed()[0]:
- x, y = pygame.mouse.get_pos()
- board[x / 5][y / 5] = 1
- else:
- clock.tick(speed)
- if not paused:
- board = nextstep(board)
- #time.sleep(0.1)
- pygame.display.update()
- #time.sleep(0.1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement