Python Surface.fill()在我的pygame程序中不起作用,即使它是(0,0,255),并且.fill()函数在主循环中
这是我的密码:Python Surface.fill()在我的pygame程序中不起作用,即使它是(0,0,255),并且.fill()函数在主循环中,python,pygame,Python,Pygame,这是我的密码: 导入pygame pygame.init() win_x=1000 win_y=400 win=pygame.display.set_模式((win_x,win_y)) pygame.display.set_标题(“我认为它是有刻度的二进制排序”) 蓝色=(0,0255) 数组=[3,9,7,5,8,3,1] picarray=[“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”] four=pygame.image.load(“four.png”) 运行=真
导入pygame
pygame.init()
win_x=1000
win_y=400
win=pygame.display.set_模式((win_x,win_y))
pygame.display.set_标题(“我认为它是有刻度的二进制排序”)
蓝色=(0,0255)
数组=[3,9,7,5,8,3,1]
picarray=[“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”]
four=pygame.image.load(“four.png”)
运行=真
运行时:
win.fill(蓝色)
赢。布利特(四,(0,0))
对于范围(0,len(数组)-1)中的i:
对于范围内的(0,len(数组)-1-i):
如果数组[a]>数组[a+1]:
打印(数组)
数组[a],数组[a+1]=数组[a+1],数组[a]
打印(数组)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
pygame.quit()
我已经说过,蓝色是(0,0,255),在我的主循环中是win.fill(蓝色),但由于某种原因,我运行程序时会出现一个黑屏。我认为您需要在
运行循环中调用pygame.display.flip()
,靠近底部:
while run:
win.fill(BLUE)
win.blit(four, (0, 0))
// sort
...
print(array)
// look for quit
...
pygame.display.flip()
将排序和//查找quit
代码移动到单独的函数中也会提高代码质量
您的排序算法称为“气泡排序”,因为最高值“气泡”位于顶部,然后是下一个最高值,依此类推。您还可以通过将最低值推到底部、最高值、最低值、剩余最高值、剩余最低值等等来提高效率。。。尽管代码要复杂得多。这里的代码可能是最简单的排序算法
考虑到要排序的元素的数量,效率真的不是什么大问题
哦,被称为
的字母拼写为两个“l”。)
编辑:
还有一件事。。。pygame要求您的渲染字体,并在特定位置渲染文本以绘制它。除非您在其他地方编写了一些代码来处理所有这些,否则您将将数组打印为标准输出,而不是pygame窗口
这里有一个文本渲染教程:
绘制到屏幕后,您需要使用pygame.display.flip()
或pygame.display.update()
更新屏幕。这应该在循环结束时完成,就像绘制屏幕一样。啊,好的,谢谢。我把它漏掉似乎很愚蠢:)这发生在我们中最好的人身上!谢谢你的回复。我的程序现在已排序,但为了回答您的问题,请稍后在我的数字图像中单击“是”