Python 增加另一个类的分数
我试图在一个游戏中设置一个分数,我用python/pygame编程 我的分数在以下情况下有效:Python 增加另一个类的分数,python,Python,我试图在一个游戏中设置一个分数,我用python/pygame编程 我的分数在以下情况下有效: global score score = 0 伪: if player_rect.coliderect(baddie_rect): score +=1 然后我将分数显示在屏幕上 但是我想把这个分数用在另一个类的函数中。在主类中调用该函数的位置 所以 在碰撞函数中,我想增加分数,这是在一个玩家类中。但是我想在主课上打印分数。我使用的是这样的缩写代码: class player:
global score
score = 0
伪:
if player_rect.coliderect(baddie_rect):
score +=1
然后我将分数显示在屏幕上
但是我想把这个分数用在另一个类的函数中。在主类中调用该函数的位置
所以
在碰撞函数中,我想增加分数,这是在一个玩家类中。但是我想在主课上打印分数。我使用的是这样的缩写代码:
class player:
.
.
.
global score
score = 0
def __init(self):
self.score=0
def get_score(self):
return self.score
def set_score(self, score):
self.score = score
def collision():
.
.
if player_rect.coliderect(baddie_rect):
self.score +=1
当我试图在发生碰撞时获得分数时:
class main():
player = player()
player.colision()
print player.get_score()
没有发生任何事情,分数不会增加
有什么建议吗
class Player:
def __init(self):
self.score=0
def collision():
if player_rect.coliderect(baddie_rect):
self.score +=1
class main():
player = Player()
player.collision()
print(player.score)
这里不需要全局变量。直接访问或设置实例属性
score
。如果您需要使用self.score执行更复杂的操作,您可以这样做,这将允许您在不更改语法的情况下定义类似getter-/setter的行为。您的代码,除了“全局”(完全不必要)似乎是正确的之外。确实,在Python中,首选的是属性而不是访问方法,但在本例中,这不应该是错误
为什么不将collision()中的代码更改为:
然后试着看看错误是否在其他地方,也许在
player\u rect.coliderect(baddie\u rect):
我不是说错误就在那里,但我希望你能从简单到复杂我发现分数需要是在scoreboard类开始时初始化的自对象,而不是全局变量:
#Scoreboard class
class Scoreboard:
def __init__(self):
self.player_score = 0
def update_score(self):
self.player_score += 1
#Main file
score = Scoreboard()
if player_rect.coliderect(baddie_rect):
score.update_score()
print(score.player_score)
在collision()
中,您增加player.score
,而不是全局分数。如果要更新全局分数,应调用score=self.score
#Scoreboard class
class Scoreboard:
def __init__(self):
self.player_score = 0
def update_score(self):
self.player_score += 1
#Main file
score = Scoreboard()
if player_rect.coliderect(baddie_rect):
score.update_score()
print(score.player_score)