【问题标题】:Squares vertices in a 22x16 grid in pygamepygame中22x16网格中的正方形顶点
【发布时间】:2021-01-04 15:43:01
【问题描述】:

这是我在 pygame 中创建 22x16 网格的代码:

import pygame  
pygame.init()

screen = pygame.display.set_mode((440, 320))

class Grid:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def draw(self):
        pygame.draw.rect(screen, GREY, [self.x * WIDTH, self.y * HEIGHT, WIDTH, HEIGHT], 1)
        pygame.display.update()


cols = 22
rows = 16
WIDTH = 20
HEIGHT = 20
BLACK = (0, 0, 0)
GREY = (127,127,127)
grid = [0 for i in range(cols)]

for node in range(cols):
    grid[node] = [0 for node in range(rows)]

for x in range(cols):
    for y in range(rows):
        grid[x][y] = Grid(x, y)

for x in range(cols):
    for y in range(rows):
        grid[x][y].draw()

while True: 
    event = pygame.event.get()
    if event == pygame.QUIT:
        pygame.quit()

我如何找到这个网格中每个正方形的顶点并绘制它们? 画出verices并不重要,但很高兴看到它们以便以后更好地理解。

【问题讨论】:

  • 我不明白你的问题。你想知道角点(顶点)的坐标吗? - column * WIDTH, row * HEIGHT
  • 好吧,既然你有一个网格,你可以生成两个 for 循环。一个用于行(x 轴)上的行,一个用于列(y 轴)。其中间隙大小分别为heightwidth

标签: python-3.x pygame


【解决方案1】:

列索引column和行索引row的图块的角点(顶点)可以计算如下:

tl = column     * WIDTH, row     * HEIGHT
tr = (column+1) * WIDTH, row     * HEIGHT
bl = column     * WIDTH, (row+1) * HEIGHT
br = (column+1) * WIDTH, (row+1) * HEIGHT

不过,这可以通过使用pygame.Rect 对象来简化:

tile_rect = pygame.Rect(column * WIDTH, row * HEIGHT, WIDTH, HEIGHT)

tl = tile_rect.topleft
tr = tile_rect.topright
bl = tile_rect.bottomleft
tt = tile_rect.bottomright

【讨论】:

  • 嗯,是的,我需要知道顶点以便稍后制作一个 prims 迷宫
猜你喜欢
  • 1970-01-01
  • 2012-01-03
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多