就像标题说的,我想用python和pygame创建一个可视化的气泡排序。排序工作得很好,但当它涉及到可视化它永远不会得到正确的输出。你知道吗
代码如下:
import pygame
import sys
import time
pygame.init()
Vector_len = 0
x = 0
numbers_to_order = []
IsRunning = True
Vector_len = eval(input("How many numbers do you want to sort? "))
for i in range(Vector_len):
numbers_to_order.append(0)
for i in range(len(numbers_to_order)):
numbers_to_order[i] = eval(input("Insert number at index "+str(i+1)+": "))
print("Inserted array: "+str(numbers_to_order))
screen = pygame.display.set_mode((1000,500))
while IsRunning:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
IsRunning = False
for i in range(len(numbers_to_order)):
for j in range(len(numbers_to_order)):
try:
if numbers_to_order[j] > numbers_to_order[j+1]:
x = numbers_to_order[j]
numbers_to_order[j] = numbers_to_order[j+1]
numbers_to_order[j+1] = x
except(IndexError):
pass
pygame.draw.rect(screen,(255,255,255),(j*(1000/len(numbers_to_order)),500-(numbers_to_order[j])*50,(1000/len(numbers_to_order)),(numbers_to_order[j])*50))
print((j*(1000/len(numbers_to_order)), (numbers_to_order[j])*50))
pygame.display.flip()
time.sleep(0.05)
print("Sorted array: "+str(numbers_to_order))
pygame.quit()
sys.exit()
运行时,不是正确显示排序的条形图,而是以错误的顺序显示,但排序是正确的。有什么帮助吗?你知道吗
主要的问题是,你必须清除显示在每一帧和绘制整个“名单”在每一帧。请注意,如果在位置处绘制了一个大数字的条形图,则较小数字的条形图不会“清除”该位置。你知道吗
我建议不要在绘制场景的游戏循环中使用嵌套循环。使用主应用程序循环并增加循环中的控制变量
i
和j
:此外,我建议使用^{}
参见示例:
相关问题 更多 >
编程相关推荐