我正在写一个简单的mandelbrot渲染器。在程序计算并绘制所有内容后,它将保存曲面并进行blits。这很好,但在我添加了更新显示功能后,它只显示一个黑屏。我需要更新每次迭代,因为我将添加一些文本和其他内容。我只包括了节目的重要部分。有人知道为什么会这样吗?
def keys(): #Recognises key-presses
global x
global y
global zoom
global mdb
global z
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pressed=pygame.key.get_pressed()
if pressed[pygame.K_UP]: y += 1/z
if pressed[pygame.K_DOWN]: y -= 1/z
if pressed[pygame.K_LEFT]: x -= 1/z
if pressed[pygame.K_RIGHT]: x += 1/z
if pressed[pygame.K_i]: zoom+=1
if pressed[pygame.K_o]: zoom-=1
if pressed[pygame.K_SPACE]:
z=z*zoom
mdbprint(mandelbrot(x*z-width/2, y*-1*z-height/2, z))
mdb=pygame.Surface((width,height))
zoom=1
def draw_variables():
global mdb
w.blit(mdb, (0, 0))
pygame.display.update()
#---------------------------------------------------------------------------
mdbprint(mandelbrot(x-width/2,y-height/2,z))
mdb=pygame.Surface((width,height))
print(time.perf_counter())
while True:
keys()
draw_variables()
clock.tick(30)
您似乎没有将mdb
表面传递给mdbprint()
,但它是一个全局的,并且它是您在w
上blit的,因此我假设这就是mdbprint()
所利用的(否则不清楚mdb是用于什么的。但是,您似乎总是按照以下顺序拥有这两行内容:
mdbprint(mandelbrot(x*z-width/2, y*-1*z-height/2, z))
mdb=pygame.Surface((width,height))
这意味着在你绘制到mdb
之后,他们用一个全新的表面覆盖变量,然后扔掉旧的表面。新的表面当然会是空的。
顺便说一下,通常只需通过fill()
ing清除曲面,而不是从新曲面开始。
我正在用pyplay写一个蛇游戏,但我只是提示一个黑色的窗口没有任何错误。 我检查了类似的问题,他们错误地使用了screen对象。然而,这里的情况似乎不是这样,因为它只创建了一次? 知道我做错了什么吗?因为我没有收到任何错误信息,所以我不明白为什么只显示一个黑屏。按键输入事件工作正常。
我对glfw有一个小问题。 我的代码非常简单,我只想创建一个空窗口。 } 此代码编译,但当我运行它时,我只有一个白色窗口。窗口的标题是正确的,但里面的一切都是白色的......我尝试像那样使用glClearColor。 但是我的窗户仍然是白色的....我用的是visual studio 2015。 怎么弄个黑窗? 编辑: 忘了补充这个:glfwMakeContextCurrent(window);
我正在为平台游戏做教程,但我的Pygame窗口显示一个黑屏。 我不知道怎么解决这个问题。 我尝试再次关闭和打开Visual Studio Code,但没有任何结果。
有人知道这个黑色矩形是什么吗?这是我的主要任务。py: 这是我的马里奥。py: 最后,我的levels.py: 我使用的是Windows10计算机,python版本为3.8。3和pygame版本1.9。6.
我运行以下代码: 当我运行代码时,pygame窗口打开,但它是一个空白(黑色)屏幕。我还收到以下错误消息:Traceback(最近一次呼叫last): 文件"C:/用户/Draco/OneDrive/文档/编程/graphics.py",第13行,screen.blit(img(0,0))TypeError:'pyplay.Surface'对象不可调用 我试图打开的图像保存为JPG文件。图像保存在
卡洛斯·巴罗斯 编辑:也许我应该这么说,但这个游戏是一个类似反击或英雄联盟的游戏,我没有做这个游戏。