我正在尝试创建一个基本游戏,但我对python编程场景还不熟悉。我遇到过两个类(一个玩家和一个敌人类)的问题,我想从玩家和敌人那里获取健康等类变量,反之亦然。有什么方法可以做到这一点?
以下是更好地强调我所要求的代码:
class Player(object):
def __init__(self, image):
self.x = 100
self.y = 240
self.health = 30
self.defense = 25
self.image = image
self.black = (0, 0, 0)
self.draw()
def draw(self):
screen.blit(self.image, (self.x, self.y))
line = pygame.draw.rect(screen, self.black, (80, 300, 100, 5))
def attack(self):
pass
class Enemy(object):
def __init__(self, image):
self.x = 480
self.y = 240
self.health = 20
self.defense = 15
self.image = image
self.black = (0, 0, 0)
self.draw()
def draw(self):
screen.blit(self.image, (self.x, self.y))
line = pygame.draw.rect(screen, self.black, (460, 300, 100, 5))
def attack(self):
pass
基本上,我不明白如何从一个类中获取类似“self.health”的内容,并轻松地从其他类中访问它。我已经尝试了一些使用返回方法等的方法,但我很好奇是否有任何简单的方法可以做到这一点。感谢帮助!
答案 0 :(得分:0)
此代码创建一个类,在特殊的__init__
方法中,它为各种成员变量分配值。
class Player(object):
def __init__(self, image):
self.x = 100
self.y = 240
self.health = 30
self.defense = 25
self.image = image
self.black = (0, 0, 0)
self.draw()
这些成员变量在Python中也称为 properties 。如果你有一个Player实例的引用(Player类的一个实例):
p = Player()
您可以随意访问这些属性:
print(p.health)
也许您需要某种“主循环”或控制器类,可以访问玩家和敌人,并可以相应地设置其属性:
class MainLoop(object):
def __init__(self):
self.player_1 = Player()
self.enemy_1 = Enemy()
def run(self):
if fight(): # fight() is some function of your game
self.player_1.health -= 10
self.enemy_1.health -= 20