Как я могу использовать двоичный список для рисования квадратов в PyGame? - PullRequest
0 голосов
/ 05 января 2019

Мне было интересно, смогу ли я нарисовать изображение, используя список единиц и нулей, где 1 будет означать

pygame.draw.rect(DISPLAY_SURF,(0,0,0), (0,0,10,10))

и 0 означают пробел. это будет выглядеть примерно так:

blockMap = [
    [0,1,1,0,0,0,1,1,0],
    [0,1,1,0,0,0,1,1,0],
    [0,0,0,0,0,0,0,0,0],
    [1,0,0,0,0,0,0,0,1],
    [0,1,1,1,1,1,1,1,0],
    [0,0,0,0,0,0,0,0,0]]

Я не пробовал много, потому что я просмотрел весь интернет безуспешно и, очевидно, не мог присвоить целое число строке.

blockMap = [
    [0,1,1,0,0,0,1,1,0],
    [0,1,1,0,0,0,1,1,0],
    [0,0,0,0,0,0,0,0,0],
    [1,0,0,0,0,0,0,0,1],
    [0,1,1,1,1,1,1,1,0],
    [0,0,0,0,0,0,0,0,0]]

in blockMap if 1:
    pygame.draw.rect(DISPLAY_SURF, (0,0,0), (0,0,10,10))
else:
    pygame.draw.rect(DISPLAY_SURF, ((BG_COLOUR)), (0,0,10,10))

Это должно быть изображение смайлика в черном на белом фоне, но это не так. Я знаю, что это совершенно неправильно, я пытался целую вечность, и это была просто очень отчаянная попытка, над которой я просто надеялся работать.

1 Ответ

0 голосов
/ 05 января 2019

Вы даете постоянные аргументы функции рисования. Вам нужно изменить координаты в соответствии с матрицей.

например:

square_size = 30 # example
for y, row in enumerate(blockMap):
    for x, val in enumerate(row):

        upper_left_point = x * square_size, y * square_size
        upper_right_point = (x + 1) * square_size, y * square_size
        lower_left_point = x * square_size, (y + 1) * square_size
        lower_right_point = (x + 1) * square_size, (y + 1) * square_size

        pointlist = [upper_left_point, 
                    upper_right_point,
                    lower_right_point,
                    lower_left_point]

        pygame.draw.polygon(Surface, color, pointlist, width=0)

Это очень простой пример, поэтому постарайтесь полностью понять код перед его использованием. Вам нужно будет знать эти концепции, прежде чем вы начнете что-либо визуализировать.

Не забудьте настроить квадратные размеры в соответствии с размером экрана.

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