Pygame ничего не рисует, когда я иду пиксель за пикселем - PullRequest
1 голос
/ 23 мая 2019

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

Я использую Python 3.7 и использую Pygame версии 1.9.4. Единственное, что не работает - это рендеринг.

import pygame
pygame.init()
screen = pygame.display.set_mode((1000,1000))
carryOn=True
pressed=False
for i in range(len(mandelbrot)):
    for j in range(len(mandelbrot[i])):
        if j:
            pygame.draw.rect(screen, (0,0,0), (j, i, 1,1))
        else:
            pygame.draw.rect(screen, (255,255,255),(j, i, 1,1))
pygame.display.flip()
while carryOn:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            carryOn=False

    pygame.time.Clock().tick(40)
pygame.quit()

Мандельброт определен ранее в моем коде

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Вы должны поместить свои функции рисования и flip () в цикл while, если вы рисуете на экран.

#I assume this is your main loop?
while carryOn:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            carryOn=False

    # clear the screen with black
    screen.fill((0,0,0)

    # assume mandelbrot is a 2D-Array
    for i in range(len(mandelbrot)):
        for j in range(len(mandelbrot[i])):
            if j:
                pygame.draw.rect(screen, (0,0,0), (j, i, 1,1))
            else:
                pygame.draw.rect(screen, (255,255,255),(j, i, 1,1))

    # display.flip should be in the while loop
    pygame.display.flip()
    pygame.time.Clock().tick(40)

pygame.quit()
0 голосов
/ 23 мая 2019

Вам необходимо указать ширину линии на ваших прямоугольниках. По умолчанию он равен 0, и поэтому я думаю, что Pygame не будет рисовать прямоугольник, заполненный одним пикселем, без контура.

Добавление ширины 1 в конце приводит к отрисовке пикселей:

pygame.draw.rect(screen, (255,255,255),(j, i, 1, 1), 1)

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