努力让一个正常运作的高分班上班。这是我目前的代码。如果我添加更多玩家对象,则列表会变得更大,看起来像John [1] booboomcgoo [1],其中[1]是赢得的游戏数量。但是,我现在陷入困境,因为当同一个玩家再次玩时,我无法弄清楚如何通过在文本文件中搜索字符串来替换以更高价值赢得的游戏,如果它与先前输入的那个相匹配,那么它将游戏增加1个值。
我甚至不确定这种方法是否可行,或者我对此问题的一般方法是否错误。任何帮助表示赞赏。 PS我已经注释掉了稍后我会用来在屏幕上显示信息的代码,请忽略。
class display_top_scores():
def __init__(self, players_name, gameswon):
self.players_name = players_name
self.gameswon = gameswon
self.scores_list = []
self.times_won = []
def show_scores(self):
text_file = open("topscores.txt", "w+")
self.scores_list.append(self.players_name)
text_file.writelines(self.scores_list)
#print(scores_list)
self.times_won.append(self.gameswon)
s = str(self.times_won)
text_file.writelines(s)
text_file.close()
text_file = open("topscores.txt", "r+")
for line in text_file:
print(line)
#print(times_won)
#print("I am here1")
#font = pygame.font.SysFont("Arial", 30)
#print("I am here2")
#screen.blit(menu_background, [0, 0])
#print("Iam here3")
## textonscreen = drawText('Here are the top scores for easy mode:', font, screen, 600, 400, colors.Colors.wheat)
## #print("Iam here4")
## textonscreen.draw_menu_text()
## #print("Iam here5")
## pygame.display.update()
## #print("Iam here6")
## textonscreen = drawText('%s has won %d times.' % (self.players_name, self.gameswon), font, screen, 600, 450, colors.Colors.wheat)
## #print("Iam here4")
## textonscreen.draw_menu_text()
## #print("Iam here5")
## pygame.display.update()
## #print("Iam here6")
players_name = "boboomcgoo"
showscore = display_top_scores(players_name, 1)
showscore.show_scores()
players_name = "John"
showscore = display_top_scores(players_name, 1)
showscore.show_scores()
players_name = "booboomcgoo"
showscore = display_top_scores(players_name, 1)
showscore.show_scores()
答案 0 :(得分:1)
除非你的存储空间受到极大的限制,否则你不需要进入并编辑每场比赛后玩的游戏数量。相反,只需在每场比赛后添加一个日志条目。在文件中,为每个游戏的日期,其规则集(如果需要),其玩家及其结果存储条目。您可以将此日志存储为JSON对象(import json
),CSV行(import csv
),SQLite数据库(import sqlite3
)或其他任何格式。
open(filename, 'a')
)打开日志文件,写出新结果,然后关闭文件。追加模式可确保旧游戏的记录不会被覆盖。或者在SQLite中,INSERT INTO
您的日志表。import threading
),这样它就不会阻止您的事件处理线程。或者,您可以选择将它们全部解析为from concurrent import futures
,并对此list
执行各种sum
操作。实际上,SQLite可以使用list
为您执行此操作。