Spaces:
Runtime error
Runtime error
| import pygame | |
| import asyncio | |
| import random | |
| # define some colors | |
| BLACK = (0, 0, 0) | |
| WHITE = (255, 255, 255) | |
| GREEN = (0, 255, 0) | |
| RED = (255, 0, 0) | |
| BLUE = (0, 0, 255) | |
| YELLOW = (255, 255, 0) | |
| pygame.init() | |
| screen = pygame.display.set_mode((500,500)) | |
| pygame.display.set_caption("Conway's Game of Life") | |
| # create a grid of squares | |
| grid = [[False for _ in range(500)] for _ in range(500)] | |
| # create a font for displaying numbers | |
| font = pygame.font.Font('freesansbold.ttf', 30) | |
| # create a function to display the grid | |
| def draw_grid(): | |
| for row in range(500): | |
| for col in range(500): | |
| if grid[row][col]: | |
| pygame.draw.rect(screen, GREEN, (col*50, row*50, 50, 50)) | |
| else: | |
| pygame.draw.rect(screen, BLACK, (col*50, row*50, 50, 50)) | |
| pygame.display.flip() | |
| # create a function to update the grid | |
| def update_grid(neighbors): | |
| for row in range(500): | |
| for col in range(500): | |
| # get the number of neighbors | |
| num_neighbors = sum([grid[r][c] for r, c in neighbors if grid[r][c]]) | |
| # update the grid | |
| grid[row][col] = num_neighbors == 3 or (num_neighbors == 2 and grid[row][col]) | |
| # create a function to display the neighbors | |
| def draw_neighbors(row, col): | |
| neighbors = [(r, c) for r, c in [(row-1, col), (row-1, col-1), (row, col-1), (row+1, col-1), (row+1, col), (row+1, col+1), (row, col+1), (row-1, col+1)]] | |
| for neighbor in neighbors: | |
| if neighbor in grid: | |
| update_grid(neighbors) | |
| else: | |
| grid.append(neighbor) | |
| update_grid(neighbors) | |
| draw_grid() | |
| # create a function to handle the events | |
| def event_handler(event): | |
| if event.type == pygame.QUIT: | |
| pygame.quit() | |
| quit() | |
| elif event.type == pygame.KEYDOWN: | |
| if event.key == pygame.K_ESCAPE: | |
| pygame.quit() | |
| quit() | |
| elif event.key == pygame.K_r: | |
| draw_grid() | |
| elif event.key == pygame.K_SPACE: | |
| draw_neighbors(50, 50) | |
| # create the main function | |
| async def main(): | |
| while True: | |
| # handle events | |
| for event in pygame.event.get(): | |
| event_handler(event) | |
| # update the grid | |
| await asyncio.sleep(1) | |
| # run the game | |
| asyncio.run(main()) |