我正在制作我的第一款游戏,我想为其添加一个高分系统。我已经在这里问过这个问题,因为我不知道从哪里开始。我得到了很大的帮助,并认为我已经完成了此操作,但是在测试之后,我遇到了问题。 在解释问题之前,我将首先列出我的代码的有用部分:
library(anytime)
dataset[apply(dataset, 2, function(x) all(grepl(date_patterns, x)))] <-
apply(dataset[apply(dataset, 2, function(x) all(grepl(date_patterns, x)))], 2,
function(x) format(anydate(x), "%d-%b-%Y"))
这是我最能充分发挥作用的方法,但他有2个问题(1个很大)
首先,当您超过最高分时,您不会收到“您获得了新的最高分!”的消息,它只会显示“得分:(您的分数)”,然后显示“最高得分:(与得分)”
这并没有真正打扰到我,但最大的问题却困扰了我。
最大的问题如下:这段代码会记住高分,并在您每次打败它时对其进行更新,直到您获得10分以上的分数。这样就可以了,直到您获得2位数的分数为止。 这显然是不正确的。我也不知道如何解决这个问题。系统几乎可以完美运行,直到出现两位数,这对我来说毫无意义。
我希望解决方案不会太复杂,并且some1可以帮助我。 我还是编程新手。因此,请尽可能简化说明?
PS:对不起,如果某个地方的英语不好,那不是我的母语...
答案 0 :(得分:2)
您正在比较字符串:
content = str(content)
if content < str(score):
您可以这样做,但是与比较数字时,它的行为方式不同。 例如,如果您在控制台中键入以下内容:
'13' < '7'
它将返回True。 比较字符串时,将比较第一个字符的ascii值。当然,这不是您通常想要的。
因此,如果在对分数进行逻辑运算时使用int变量,它应该可以工作。仅在打印分数时将其转换为str。
答案 1 :(得分:1)
关于您更大的问题。 您正在比较两个字符串。即使9 <10,“ 9”>“ 10”。
这可能有效
def game_over():
while game_over:
screen.fill(black)
text = "Game Over, Press R to restart"
label = myFont.render(text, 1, white)
screen.blit(label, (350, 450))
end_score = "Score:" + str(score)
label_2 = myFont.render(end_score, 1, white)
screen.blit(label_2, (350, 250))
file = open("highscore.txt", "r")
content = file.read()
content = int(content)
if content < int(score):
file = open("highscore.txt", "w")
file.write(str(score))
hs = "You got a new highscore!"
label_3 = myFont.render(hs, 1, white)
screen.blit(label_3, (350, 350))
pygame.display.update()
else:
hs = "Highscore: " + content
label_3 = myFont.render(hs, 1, white)
screen.blit(label_3, (350, 350))
pygame.display.update()
file.close()