【问题标题】:Internal leaderboard for Python gamePython 游戏的内部排行榜
【发布时间】:2014-05-03 22:45:55
【问题描述】:

首先,我对编程还是比较陌生,所以请放轻松。

我正在用 Python2.7 编写一个类似街机的游戏,我想实现一个排行榜,例如,可以存储 10 对用户名和所获得的分数。为了给你一个想法,它应该看起来或多或少像这样:

1. AAA 100
2. BBB 10
3. CCC 1

...等等。这样,它应该能够跟踪 10 个分数。

当玩家完成游戏并在排行榜上得分最高时,应提示他输入最多 15 个字符的名称并保存分数。此外,游戏代码应允许玩家从开始菜单查看排行榜,即点击“排行榜”时应该可以看到最高分。

我已经尝试寻找一种方法来做到这一点,但不幸的是,结果要么涵盖了在线排行榜,要么只保存了有史以来最高的分数,要么对于我作为一个编程初学者来说太复杂而无法掌握。我也不能确定这些可能性是否允许读取游戏本身的排行榜。

如果有人能帮我解决这个问题,我将不胜感激。

(如果我不够清楚(写这篇文章时我很累),我唯一的问题是打开和读取/写入包含排行榜的不同文件并在游戏中显示它。但是我没有,希望它出现在 Shell 中。)

编辑:

pygame.font.init()
font = pygame.font.Font(None, 30)
readfile = open("leaderboard.txt", "r")
text = font.render(readfile, True, (27,100,225))
textRect = text.get_rect()
textRect.centerx = screen.get_rect().centerx
textRect.centery = screen.get_rect().centery
screen.blit(text, textRect)

按照建议我尝试了渲染命令,到目前为止我已经想出了这个,但我收到一条错误消息:

Traceback (most recent call last):
File "L:\game.py", line 97, in <module>
text = font.render(open("leaderboard.txt", "r"), True, (27,100,225))
TypeError: text must be a string or unicode

【问题讨论】:

  • 您需要将其分解为更小的问题并研究并单独尝试每个问题 - 在游戏过程中跟踪得分,提示用户输入,将用户/得分保存到文件中,读取文件并按分数排序...就目前而言,这是一个非常广泛的问题(唯一有效的答案是为您编写的完整程序),所以对于 specific 关于 specific 编程问题。
  • 一个选项 - 将其存储为文本文件,每当制作乐谱时读取它,将每个乐谱/名称保存在数组中,插入新乐谱,然后重新保存文本文件。
  • @Ant P 好吧,我唯一的问题实际上是在不同的文件中存储和读取分数,以及在它们变得多余时删除它们。我可以很容易地跟踪分数,使用变量并提示玩家输入名称;我只是想在必要的情况下解释游戏的工作原理。我只是缺乏如何跟踪这些分数然后从游戏文件中读取它们的知识。我发现了很多使用 Python 读取文件的结果,但我没有找到任何关于在游戏中读取它的内容。
  • @Louis 这听起来和我想的差不多,但是在游戏中该怎么做呢?
  • @MMM - 在 pygame 中,我认为您需要构建一个表面,在其上渲染文本,然后将该表面放置到显示器上。

标签: python python-2.7 pygame


【解决方案1】:

创建一个表面 - 然后使用 pygame.font Module - 特别是 render() 方法将文本绘制到表面上。

然后像往常一样将表面放在显示器上。

【讨论】:

  • 这看起来很有帮助!我会尽快尝试并发布结果。
  • 我实际上在代码的其他地方使用了 render() 所以我现在觉得有点愚蠢......无论如何,现在我已经尝试使用从代码,它似乎不起作用。请告诉我哪里出错了。
  • 没有看到你的代码 - 我不知道。只要你有变量中的数据并且它们是有效的字符串,那么它应该可以工作 - 但我有一段时间没有使用 pygame,所以我可能无法帮助你的代码。
  • 我已经用我使用的代码更新了问题,我只是忘了在评论中提到它,对不起
  • 在您发布的代码中,您尝试渲染文件,而不是从文件中读取数据 - 使用 read 或可能是 readlines,然后尝试渲染该数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多