pygame游戏得分排行榜
时间: 2023-07-06 13:31:41 浏览: 132
在Pygame中,可以使用文件系统和字典来实现游戏得分排行榜。以下是一个简单的Pygame游戏得分排行榜示例:
```python
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((400, 300))
clock = pygame.time.Clock()
# 加载得分排行榜
high_scores = {}
try:
with open("high_scores.txt", "r") as f:
for line in f:
name, score = line.strip().split(",")
high_scores[name] = int(score)
except FileNotFoundError:
pass
# 设置字体
font = pygame.font.Font(None, 36)
# 游戏得分
score = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 保存得分排行榜
with open("high_scores.txt", "w") as f:
for name, score in high_scores.items():
f.write("{},{}\n".format(name, score))
pygame.quit()
sys.exit()
# 更新游戏得分
score += 1
# 显示当前得分和排行榜
text1 = font.render("Score: {}".format(score), True, (255, 255, 255))
text2 = font.render("High Scores:", True, (255, 255, 255))
screen.fill((0, 0, 0))
screen.blit(text1, (100, 100))
screen.blit(text2, (100, 150))
y = 200
for name, score in sorted(high_scores.items(), key=lambda x: x[1], reverse=True):
text = font.render("{}: {}".format(name, score), True, (255, 255, 255))
screen.blit(text, (100, y))
y += 36
# 更新得分排行榜
name = input_name()
if name:
high_scores[name] = score
score = 0
pygame.display.update()
def input_name():
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.unicode.isalpha():
return event.unicode
return None
```
在这个示例中,我们首先加载了之前保存的得分排行榜。我们使用一个字典来存储每个玩家的得分。在游戏循环中,我们使用内置计时器来更新游戏得分,并在屏幕上显示它。我们还使用了Pygame的文本绘制功能来绘制得分排行榜,然后在屏幕上显示它。
在这个示例中,我们定义了一个input_name函数,来等待玩家输入他们的名字,然后将他们的名字和得分添加到得分排行榜中。如果玩家没有输入名字,则不会更新得分排行榜。在程序退出之前,我们将得分排行榜保存到文件中。