PyGame создает сетку, добавляя квадраты - PullRequest
1 голос
/ 29 апреля 2020

Я пытаюсь понять, как python и Pygame работает Итак, я пытаюсь go построить эту квадратную сетку из: http://programarcadegames.com/index.php?lang=en&chapter=array_backed_grids#step_07 Удалось сделать строку с 10 квадратами, но как-то я застрял на части, что я должен сделать фактическую сетку, создав другую для l oop и получить этот результат

enter image description here

мой код выглядит следующим образом :

import pygame
pygame.init()

win = pygame.display.set_mode((728, 728))
tile_width = 64
tile_height = 64
margin = 8  # space between the boxes
white = (255, 255, 255)

clock = pygame.time.Clock()

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    x, y = margin, margin
    for column in range(10):
        for row in range(0, column):
            rect = pygame.Rect(x, y, tile_width, tile_height)
            pygame.draw.rect(win, white, rect)
            x = x + tile_width + margin
            y = y + tile_width + margin

    pygame.display.update()

pygame.quit()

1 Ответ

1 голос
/ 29 апреля 2020

Вы должны сбросить y перед внутренним l oop, и вы должны увеличить x после внутреннего l oop, а не внутреннего l oop:

run = True
while run:
    # [...]

    x = margin
    for column in range(10):
        y = margin
        for row in range(10):
            rect = pygame.Rect(x, y, tile_width, tile_height)
            pygame.draw.rect(win, white, rect)
            y = y + tile_height + margin
        x = x + tile_width + margin

    pygame.display.update()

В качестве альтернативы вы можете вычислить x и y в l oop, в зависимости от row и column:

run = True
while run:
    # [...]

    for column in range(10):
        x = margin + column * (tile_height + margin)
        for row in range(10):
            y = margin + row * (tile_width + margin) 
            rect = pygame.Rect(x, y, tile_width, tile_height)
            pygame.draw.rect(win, white, rect)

    pygame.display.update()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...