当前位置: 首页 > 知识库问答 >
问题:

游戏窗口是黑色的

慕凡
2023-03-14

我正在写一个简单的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)

共有1个答案

杜弘光
2023-03-14

您似乎没有将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文件。图像保存在

  • 卡洛斯·巴罗斯 编辑:也许我应该这么说,但这个游戏是一个类似反击或英雄联盟的游戏,我没有做这个游戏。