Advertisement
Guest User

Untitled

a guest
Oct 15th, 2017
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.09 KB | None | 0 0
  1. import pygame, time, sys, random
  2. from pygame.locals import *
  3.  
  4. board = [[0 for x in range(100)] for y in range(100)]
  5.  
  6. def glider(board, x, y):
  7.     board[x+1][y] = 1
  8.     board[x+2][y+1] = 1
  9.     board[x][y+2] = 1
  10.     board[x+1][y+2] = 1
  11.     board[x+2][y+2] = 1
  12.     return board
  13.  
  14. def friends(board, x, y):
  15.     cnt = 0
  16.     if board[x-1][y] == 1:
  17.         cnt += 1
  18.     if board[x+1][y] == 1:
  19.         cnt += 1
  20.     if board[x][y-1] == 1:
  21.         cnt += 1
  22.     if board[x][y+1] == 1:
  23.         cnt += 1
  24.     if board[x-1][y-1] == 1:
  25.         cnt += 1
  26.     if board[x-1][y+1] == 1:
  27.         cnt += 1
  28.     if board[x+1][y+1] == 1:
  29.         cnt += 1
  30.     if board[x+1][y-1]:
  31.         cnt += 1
  32.     return cnt
  33. def rndm(board, n):
  34.     w = len(board) - 1
  35.     h = len(board[0]) - 1
  36.     for i in range(n):
  37.         rw = random.randint(1, w)
  38.         rh = random.randint(1, h)
  39.         board[rw][rh] = 1
  40.     return board
  41.  
  42.  
  43.  
  44. def nextstep(board):
  45.     w = len(board)    - 1
  46.     h = len(board[0]) - 1
  47.     step = [[0 for x in range(w+1)] for y in range(h+1)]
  48.     for x in range(1, w):
  49.         for y in range(1, h):
  50.             frn = friends(board, x, y)
  51.  
  52.             if board[x][y] == 1 and frn < 2:
  53.                 step[x][y] = 0
  54.             if board[x][y] == 1 and frn == 2 or frn == 3:
  55.                 step[x][y] = 1
  56.             if board[x][y] == 1 and frn > 3:
  57.                 step[x][y] = 0
  58.             if board[x][y] == 0 and frn == 3:
  59.                 step[x][y] = 1
  60.     return step
  61. def draw(windowSurface):
  62.     windowSurface.fill((0, 0, 0))
  63.     w = len(board) - 1
  64.     h = len(board[0]) - 1
  65.     for x in range(1, w):
  66.         for y in range(1, h):
  67.             if board[x][y] == 1:
  68.                 pygame.draw.rect(windowSurface, (255, 255, 255), (x * 5, y * 5, 5, 5))
  69.  
  70.  
  71. if __name__ == '__main__':
  72.     pygame.init()
  73.     windowSurface = pygame.display.set_mode((500, 500), 0, 32)
  74.     pygame.display.set_caption('Game of Life')
  75.     clock = pygame.time.Clock()
  76.     #rboard = rndm(board, 5000)
  77.     #board = glider(board, 20, 20)
  78.     paused = False
  79.     drawing  = False
  80.     speed = 10
  81.     while True:
  82.         draw(windowSurface)
  83.         for event in pygame.event.get():
  84.             if event.type == QUIT:
  85.                 pygame.quit()
  86.                 sys.exit()
  87.             if pygame.key.get_pressed()[pygame.K_SPACE] != 0:
  88.                 paused = not paused
  89.             if pygame.key.get_pressed()[pygame.K_r] != 0:
  90.                     board = rndm(board, 1000)
  91.             if pygame.key.get_pressed()[pygame.K_c] != 0:
  92.                 board = [[0 for x in range(100)] for y in range(100)]
  93.             if pygame.key.get_pressed()[pygame.K_UP] != 0:
  94.                 speed += 9
  95.             if pygame.key.get_pressed()[pygame.K_DOWN] != 0:
  96.                 speed -= 9
  97.             if pygame.mouse.get_pressed()[0]:
  98.                 x, y = pygame.mouse.get_pos()
  99.                 board[x / 5][y / 5] = 1
  100.             else:
  101.                  clock.tick(speed)
  102.         if not paused:
  103.             board = nextstep(board)
  104.             #time.sleep(0.1)
  105.  
  106.         pygame.display.update()
  107.  
  108.         #time.sleep(0.1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement