Я пробовал кодировать много способов, о которых я могу думать, но ни один из них, который не дает мне ошибок, также не обновляет мой результат. Все, что у меня есть, это «Оценка: 0» в верхнем правом углу экрана, и он должен меняться всякий раз, когда лазерный луч, выпущенный с моего корабля, сталкивается с вражеским кораблем. Вот моя последняя попытка. В моем classes.py файл, в Корабельный конструктор класса я инициализируется счет:не может обновить счет
self.score = 0
и установить 2 staticmethods в классе Ship:
@staticmethod
def set_score(score):
for ship in Ship.List:
ship.score = score
@staticmethod
def get_score():
for ship in Ship.List:
return ship.score
который тупой способ указать мой корабль учитывая, что есть только один, но это единственный способ, которым я знаю и работает без ошибок области. В processes.py файле у меня есть:
for laser in classes.Ship_laser.List:
if pygame.sprite.spritecollide(laser, classes.Enemy_ship.List, True):
laser.destroy()
classes.Ship.set_score += 50
return classes.Ship.set_score()
и внутри файла classes.py в классе GameScene я ставлю вне цикла в то время:
myriadProFont = pygame.font.SysFont('Myriad Pro', 30)
и внутри время цикла:
show_score = myriadProFont.render('Score: %s' %Ship.get_score(), 1, (255,255,255),None)
screen.blit(show_score, (550,30))
Все это показывает мне оценку со значением 0 (или любым значением, которое я помещал в конструктор класса корабля в этой строке self.score = 0). Я знаю, что линия
classes.Ship.set_score += 50
не может быть правильным, поскольку set_score является функцией, а не переменная, но после того, как около 30 попыток объединить эти элементы и ничего не обновляет счет, я просто не знаю, что еще сделать ,
Извините, Тони, оценка все еще не обновляется. Поскольку корабль - это экземпляр, а корабль - это класс, который я сделал некоторые настройки: – user3653835
в методах в вашем классе self - это экземпляр - независимо от того, что вы также можете назвать своим экземпляр внешне. Я думаю, вам нужно выполнить некоторую отладку, есть ли атрибут оценки, фактически обновляющийся в вашем экземпляре? когда вы возвращаете ship.set_score(), что вы делаете с этим возвращаемым значением, так как neiter ваша или моя версия set_score возвращает что-либо. –
Кажется, оценка не обновляется в моем экземпляре. Я не понимаю ваш последний вопрос: возвращаемое значение не сохраняется в set_score() и возвращается в get_score() и используется в «show_score = myriadProFont.render (« Оценка: % s '% ship.get_score(), 1, (255,255,255), None) "line? Любое значение, которое передается в конструкторе класса Ship (self.score =' value '), отображается и остается отображаемым независимо от того, что – user3653835