我的PyGame的一个要求是实现一个基本的高分功能(显示名称和分数)。我的高分数据库工作得很好,因为它将“子列表”存储到整个数据库列表中:例如[['Bob',10],['Jim',17]]
。我还导入itemgetter
以帮助我根据“子列表”(sorted(database, key=itemgetter(1))
)中的索引对列表进行排序。这使得得分最高的用户始终显示在此列表的最后。这基于以下代码:
def highscore_data(dodged,database):
database.append(high_score("",dodged)) #function that asks the players name
print "*******"
return sorted(database, key=itemgetter(1))
我总是希望在我的游戏中显示整个数据库列表中的最后一个“子列表”(因为它总是包含最高分)。但是,每当输入新的高分时,它只会显示该分数。 这是显示高分的代码:
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
gameDisplay.blit(background,(0,0))
font = pygame.font.Font('freesansbold.ttf',87)
TextSurf, TextRect = text_objects('HIGH SCORE',font, white)
TextRect.center = ((display_width/2),(display_height/2-150))
gameDisplay.blit(TextSurf, TextRect)
font = pygame.font.SysFont(None, 60)
text = font.render("TEAM: "+str(database[-1][0]), True, white)
gameDisplay.blit(text,(display_width/2-95,display_height/2))
font = pygame.font.SysFont(None, 60)
text = font.render("SCORE: "+str(database[-1][1]), True, white)
gameDisplay.blit(text,(display_width/2-95,display_height/2+50))
database[-1][0]
和database[-1][1]
尝试获取整个列表的最后一个“子列表”([-1]),以及玩家的名字[0]和得分[1] 。一个例子是:[['Bob',10],['Jim',17]
。吉姆的得分最高(因为它在大名单的末尾排序),所以这就是我要在屏幕上显示的那个。尽管如此,它总是显示最新的高分,在这种情况下将是“鲍勃”。据我所知,我认为做一个list[-1]
将检索列表中的最终索引?
任何建议/帮助将不胜感激。