如何用pygame做出兰顿蚂蚁
时间: 2024-02-11 09:27:40 浏览: 89
使用pygame可以很容易地实现兰顿蚂蚁的模拟。下面是一个简单的示例代码:
```python
import pygame
import numpy as np
# 初始化pygame
pygame.init()
# 设置窗口尺寸和标题
width, height = 800, 600
window = pygame.display.set_mode((width, height))
pygame.display.set_caption("Langton's Ant")
# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
# 定义兰顿蚂蚁的初始位置和方向
ant_pos = np.array([width // 2, height // 2])
ant_dir = np.array([0, -1]) # 初始方向向上
# 定义兰顿蚂蚁的移动规则
turn_right = np.array([[0, -1], [1, 0]])
turn_left = np.array([[0, 1], [-1, 0]])
# 创建一个二维数组来表示画布上每个像素的状态
grid_size = 5
grid = np.zeros((width // grid_size, height // grid_size))
# 游戏循环
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 更新兰顿蚂蚁的位置和方向
ant_pos[0] = (ant_pos[0] + ant_dir[0]) % (width // grid_size)
ant_pos[1] = (ant_pos[1] + ant_dir[1]) % (height // grid_size)
ant_dir = np.dot(ant_dir, turn_right if grid[ant_pos[0], ant_pos[1]] == 0 else turn_left)
# 更新当前像素的状态
grid[ant_pos[0], ant_pos[1]] = 1 - grid[ant_pos[0], ant_pos[1]]
# 绘制画布
window.fill(BLACK)
for x in range(width // grid_size):
for y in range(height // grid_size):
if grid[x, y] == 1:
pygame.draw.rect(window, WHITE, (x * grid_size, y * grid_size, grid_size, grid_size))
pygame.display.flip()
# 退出pygame
pygame.quit()
```
这段代码使用numpy库来处理数组,使用pygame库来进行图形绘制。在游戏循环中,首先更新兰顿蚂蚁的位置和方向,然后根据当前像素的状态更新该像素的状态,最后绘制画布。
运行以上代码,你将看到一个兰顿蚂蚁在窗口中移动并改变像素的状态。你可以尝试修改代码来调整窗口大小、格子的大小、兰顿蚂蚁的初始位置和方向等参数,以实现你想要的效果。
阅读全文