Add text generation example and game of life output
This commit is contained in:
parent
03a6b82254
commit
ebddce4c6c
84
outputs/game-of-life/conversation.txt
Normal file
84
outputs/game-of-life/conversation.txt
Normal file
@ -0,0 +1,84 @@
|
||||
Sure, I can guide you through creating a simple implementation of Conway's Game of Life using Pygame in Python. The Game of Life is a cellular automaton devised by the British mathematician John Horton Conway. It's a zero-player game, meaning its evolution is determined by its initial state, requiring no further input.
|
||||
|
||||
Make sure you have the `pygame` library installed. If not, you can install it using pip:
|
||||
|
||||
```bash
|
||||
pip install pygame
|
||||
```
|
||||
|
||||
Here is a sample code for the Game of Life using Pygame:
|
||||
|
||||
```python
|
||||
import pygame
|
||||
import numpy as np
|
||||
|
||||
# Initialize pygame
|
||||
pygame.init()
|
||||
|
||||
# Define constants
|
||||
WIDTH, HEIGHT = 800, 600
|
||||
CELL_SIZE = 10
|
||||
GRID_WIDTH, GRID_HEIGHT = WIDTH // CELL_SIZE, HEIGHT // CELL_SIZE
|
||||
|
||||
# Set up the display
|
||||
screen = pygame.display.set_mode((WIDTH, HEIGHT))
|
||||
pygame.display.set_caption("Conway's Game of Life")
|
||||
|
||||
# Initialize the grid
|
||||
def empty_grid(width, height):
|
||||
return np.zeros((width, height), dtype=int)
|
||||
|
||||
def random_grid(width, height):
|
||||
return np.random.randint(2, size=(width, height), dtype=int)
|
||||
|
||||
grid = random_grid(GRID_WIDTH, GRID_HEIGHT)
|
||||
|
||||
# Game of Life logic
|
||||
def update_grid(grid):
|
||||
new_grid = grid.copy()
|
||||
for i in range(grid.shape[0]):
|
||||
for j in range(grid.shape[1]):
|
||||
# Count living neighbors
|
||||
live_neighbors = np.sum(grid[i-1:i+2, j-1:j+2]) - grid[i, j]
|
||||
|
||||
if grid[i, j] == 1 and (live_neighbors < 2 or live_neighbors > 3):
|
||||
new_grid[i, j] = 0
|
||||
elif grid[i, j] == 0 and live_neighbors == 3:
|
||||
new_grid[i, j] = 1
|
||||
return new_grid
|
||||
|
||||
# Game Loop
|
||||
running = True
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
while running:
|
||||
screen.fill((0, 0, 0))
|
||||
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
running = False
|
||||
|
||||
# Update the grid and draw the new state
|
||||
grid = update_grid(grid)
|
||||
|
||||
for i in range(GRID_WIDTH):
|
||||
for j in range(GRID_HEIGHT):
|
||||
color = (255, 255, 255) if grid[i, j] == 1 else (0, 0, 0)
|
||||
rect = (i * CELL_SIZE, j * CELL_SIZE, CELL_SIZE, CELL_SIZE)
|
||||
pygame.draw.rect(screen, color, rect)
|
||||
|
||||
pygame.display.flip()
|
||||
clock.tick(10) # control the simulation speed
|
||||
|
||||
# Quit Pygame
|
||||
pygame.quit()
|
||||
```
|
||||
|
||||
This code sets up a Pygame window with a grid of cells, each of which can be alive (white) or dead (black). The grid updates according to the rules of Conway's Game of Life:
|
||||
|
||||
1. Any live cell with fewer than two live neighbors dies, as if by underpopulation.
|
||||
2. Any live cell with two or three live neighbors lives on to the next generation.
|
||||
3. Any live cell with more than three live neighbors dies, as if by overpopulation.
|
||||
4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.
|
||||
|
||||
The grid initially starts off with a random state. It updates with each tick of the game's clock and is displayed in the Pygame window. The simulation speed can be adjusted by changing the `clock.tick()` parameter.
|
63
outputs/game-of-life/game_of_life.py
Normal file
63
outputs/game-of-life/game_of_life.py
Normal file
@ -0,0 +1,63 @@
|
||||
import pygame
|
||||
import numpy as np
|
||||
|
||||
# Initialize pygame
|
||||
pygame.init()
|
||||
|
||||
# Define constants
|
||||
WIDTH, HEIGHT = 800, 600
|
||||
CELL_SIZE = 10
|
||||
GRID_WIDTH, GRID_HEIGHT = WIDTH // CELL_SIZE, HEIGHT // CELL_SIZE
|
||||
|
||||
# Set up the display
|
||||
screen = pygame.display.set_mode((WIDTH, HEIGHT))
|
||||
pygame.display.set_caption("Conway's Game of Life")
|
||||
|
||||
# Initialize the grid
|
||||
def empty_grid(width, height):
|
||||
return np.zeros((width, height), dtype=int)
|
||||
|
||||
def random_grid(width, height):
|
||||
return np.random.randint(2, size=(width, height), dtype=int)
|
||||
|
||||
grid = random_grid(GRID_WIDTH, GRID_HEIGHT)
|
||||
|
||||
# Game of Life logic
|
||||
def update_grid(grid):
|
||||
new_grid = grid.copy()
|
||||
for i in range(grid.shape[0]):
|
||||
for j in range(grid.shape[1]):
|
||||
# Count living neighbors
|
||||
live_neighbors = np.sum(grid[i-1:i+2, j-1:j+2]) - grid[i, j]
|
||||
|
||||
if grid[i, j] == 1 and (live_neighbors < 2 or live_neighbors > 3):
|
||||
new_grid[i, j] = 0
|
||||
elif grid[i, j] == 0 and live_neighbors == 3:
|
||||
new_grid[i, j] = 1
|
||||
return new_grid
|
||||
|
||||
# Game Loop
|
||||
running = True
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
while running:
|
||||
screen.fill((0, 0, 0))
|
||||
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
running = False
|
||||
|
||||
# Update the grid and draw the new state
|
||||
grid = update_grid(grid)
|
||||
|
||||
for i in range(GRID_WIDTH):
|
||||
for j in range(GRID_HEIGHT):
|
||||
color = (255, 255, 255) if grid[i, j] == 1 else (0, 0, 0)
|
||||
rect = (i * CELL_SIZE, j * CELL_SIZE, CELL_SIZE, CELL_SIZE)
|
||||
pygame.draw.rect(screen, color, rect)
|
||||
|
||||
pygame.display.flip()
|
||||
clock.tick(10) # control the simulation speed
|
||||
|
||||
# Quit Pygame
|
||||
pygame.quit()
|
16
text_generation.py
Normal file
16
text_generation.py
Normal file
@ -0,0 +1,16 @@
|
||||
from dotenv import load_dotenv
|
||||
from openai import OpenAI
|
||||
|
||||
load_dotenv()
|
||||
|
||||
client = OpenAI()
|
||||
|
||||
response = client.chat.completions.create(
|
||||
model = 'gpt-4-1106-preview',
|
||||
messages = [
|
||||
{'role': 'system', 'content': 'You are a helpful Python coding assistant.'},
|
||||
{'role': 'user', 'content': 'Please code the game of life using pygame.'}
|
||||
]
|
||||
)
|
||||
|
||||
print(response.choices[0].message.content)
|
Loading…
Reference in New Issue
Block a user