当我逐像素前进时,Pygame没有画任何东西

时间:2019-05-23 02:18:14

标签: python pygame

我试图制作一个将显示mandelbrot集的python程序,并且尝试逐像素渲染它,但它仅显示黑色。

我正在运行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()

mandelbrot是在我的代码中较早定义的

我希望得到mandlebrot集的图像,但是我只有一个黑色的pygame窗口。

2 个答案:

答案 0 :(得分:0)

您需要在矩形上指定线宽。它默认为0,所以我认为pygame不会绘制没有轮廓的单像素填充矩形。

在末尾添加宽度1可以绘制像素:

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

答案 1 :(得分:0)

您应该将绘图函数和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()