pygame给网格线绘制坐标轴
时间: 2023-08-05 19:03:45 浏览: 212
以下是使用 Pygame 绘制网格线并标注坐标轴的示例代码:
```python
import pygame
# 定义常量
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
GRID_SIZE = 20
AXIS_COLOR = pygame.Color("black")
# 初始化 Pygame
pygame.init()
# 创建窗口并设置窗口标题
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Grid with Axes")
# 创建字体对象
font = pygame.font.Font(None, 18)
# 绘制网格线
for x in range(0, SCREEN_WIDTH, GRID_SIZE):
pygame.draw.line(screen, pygame.Color("gray"), (x, 0), (x, SCREEN_HEIGHT))
for y in range(0, SCREEN_HEIGHT, GRID_SIZE):
pygame.draw.line(screen, pygame.Color("gray"), (0, y), (SCREEN_WIDTH, y))
# 绘制坐标轴
pygame.draw.line(screen, AXIS_COLOR, (0, SCREEN_HEIGHT / 2), (SCREEN_WIDTH, SCREEN_HEIGHT / 2))
pygame.draw.line(screen, AXIS_COLOR, (SCREEN_WIDTH / 2, 0), (SCREEN_WIDTH / 2, SCREEN_HEIGHT))
# 绘制坐标
for x in range(0, SCREEN_WIDTH, GRID_SIZE):
for y in range(0, SCREEN_HEIGHT, GRID_SIZE):
text = font.render(f"({x - SCREEN_WIDTH / 2}, {SCREEN_HEIGHT / 2 - y})", True, pygame.Color("black"))
screen.blit(text, (x + 2, y + 2))
# 更新窗口
pygame.display.update()
# 游戏循环
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
```
在这段代码中,我们首先定义了常量 `SCREEN_WIDTH` 和 `SCREEN_HEIGHT` 分别表示窗口的宽度和高度,`GRID_SIZE` 表示网格的大小,`AXIS_COLOR` 表示坐标轴的颜色。然后我们初始化 Pygame,创建窗口并设置窗口标题。接下来,我们创建了一个字体对象,用于绘制坐标。然后,我们使用 `pygame.draw.line()` 函数绘制了网格线和坐标轴,并使用两个循环嵌套绘制了坐标。需要注意的是,我们在绘制坐标时需要将垂直坐标系翻转一下,因为 Pygame 的坐标系原点在左上角,而数学中的坐标系原点在左下角。最后,我们进入游戏循环,等待用户关闭窗口。
阅读全文