python - 如何显示来自不同类的两个实例的总和?
问题描述
我需要显示总分,现在它来自 AmicoMedusa 类的 self.points 和 AmicoMedusa2 的 self.points。我似乎无法让它工作。现在它会更新分数,但分数是分开的。
这是我的代码:
class AmicoMedusa :
def __init__(self):
self.images = []
self.points = 0
self.eaten = 0
for i in range(1, 3):
img3 = pygame.image.load(os.path.join('Assets', 'medusa1.png'))
self.images.append(img3)
self.image = self.images[0]
self.rect = self.image.get_rect()
def ripeti(self):
self.rect.x -= 6
if self.rect.x < -1200:
amico_gruppo.add(medusa)
self.rect.x = 1200
self.rect.y = random.randrange(0, 600)
def checkcollision(self, medusa, tartaruga):
col = pygame.sprite.collide_rect(medusa, tartaruga)
if col == True:
amico_gruppo.remove(medusa)
if col == False:
self.ripeti()
def punti(self):
eat_list = pygame.sprite.spritecollide(self, amico_gruppo, False) # perche False?
for medusa in eat_list:
if self.rect.contains(medusa):
self.eaten = 1 # self.rect.colliderect(medusa)
if self.eaten == 1:
col = self.rect.collidelist(eat_list)
if col == -1:
self.eaten = 0 # set damage back to 0
self.points += 1 # add 1 point
medusaSuono.play()
myfont2.render_to(screen, (120, 25), str(self.points), (255, 255, 255), None, size=30)
class AmicoMedusa2 (pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.images = []
self.points = 0
self.eaten = 0
for i in range(1, 3):
img4 = pygame.image.load(os.path.join('Assets', 'medusa3.png'))
self.images.append(img4)
self.image = self.images[0]
self.rect = self.image.get_rect()
def ripeti(self):
self.rect.x -= 7
if self.rect.x < -1200:
amico_gruppo.add(medusa2)
self.rect.x = 1200
self.rect.y = random.randrange(0, 600)
def checkcollision2(self, medusa2, tartaruga):
col = pygame.sprite.collide_rect(medusa2, tartaruga)
if col == True:
amico_gruppo.remove(medusa2)
if col == False:
self.ripeti()
def punti(self):
eat_list = pygame.sprite.spritecollide(self, amico_gruppo, False) # perche False?
for medusa in eat_list:
if self.rect.contains(medusa):
self.eaten = 1 # self.rect.colliderect(medusa)
if self.eaten == 1:
col = self.rect.collidelist(eat_list)
if col == -1:
self.eaten = 0 # set damage back to 0
self.points += 2 # add 1 point
medusaSuono.play()
myfont2.render_to(screen, (250, 25), str(self.points), (255, 255, 255), None, size=30)
可能吗?如何将这两个值加在一起并将其作为总分呈现到屏幕上?
解决方案
您可以从两个类的实例中访问成员变量:
medusa1 = AmicoMedusa()
medusa2 = AmicoMedusa2()
# [...]
# Calculate cumulative score
total = medusa1.points + medusa2.points
有时最好不要直接使用类成员,因此可以将“getter”函数添加到两个类中:
class AmicoMedusa :
# [...]
def getPoints( self ):
return self.points
但是总数的总和仍然大致相同:
# Calculate cumulative score
total = medusa1.getPoints() + medusa2.getPoints()
推荐阅读
- html - 具有不同卡片高度的引导布局在某些分辨率上被打破
- oop - 传递给构造函数或创建
- javascript - 如何在 Angular 上使用 hashids?
- emacs - 如何让emacs加载ess
- javascript - KonvaJS:如何在调整大小时更改文本类属性(字体大小、高度和宽度)?
- ssis - 如何在 ssis 中将 NUMBER 数据类型转换为 DATE 数据类型
- c# - Google Cloud Storage 不会更新现有的默认 Content-Disposition,而是使用 .NET 客户端库创建新的 Content-Disposition 元数据
- php - 如何处理 GCP WordPress 错误“此页面无法正常工作 example.com 当前无法处理此请求。HTTP ERROR 500
- php - 独立 eloquent 不在远程 mysql 数据库中保存 bigint 值
- python - 机器学习:字符串的自动分类 - “未知标签类型”和“错误输入形状”