在 pygame 中对 22x16 网格中的顶点进行平方

问题描述

这是我在 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)
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 和行索引 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