我正在使用 pygame 模塊制作游戲,并且我有一個玩家類:
class Player(pygame.sprite.Sprite):
def __init__(self, name, position, axsis, movment, idle, walk = None, jump = None):
pygame.sprite.Sprite.__init__(self)
self.name = name
self.idle = idle
self.walk = walk
self.jump = jump
self.image = self.idle[0]
self.movment = movment
self.left, self.right = axsis
self.pos = vec(position[0],position[1])
我正在使用 json 資料型別添加我的角色,并在呼叫類后嘗試添加影片,但我做不到
示例代碼
class Game():
def __init__(self,json_file):
self.player_attribute = json_file
def character(self):
self.npc = []
for i in self.player_attribute:
self.npc.append(Player(i['name'],
i['position'],
i['axsis'],
i['movment']))
self.animation()
return self.npc
def add_animation(self):
for i in self.npc:
i.idle = "images\ghost.png"
def main_loop()
self.character
當我嘗試這個時,我收到一個錯誤
self.image = self.idle[0] TypeError: init () 缺少 1 個必需的位置引數:'idle'
呼叫類后如何添加類的變數
uj5u.com熱心網友回復:
目前尚不清楚“空閑”引數在您的代碼中應該表示什么。但是,出現例外的原因是您在構造 Player 物件時沒有為 'idle' 傳遞任何引數。你需要這樣的東西:
self.npc.append(Player(i['name'],
i['position'],
i['axsis'],
i['movment'],
i['idle']))
您可以這樣做,也可以將默認引數傳遞給 Player 建構式,以便在初始化時不需要顯式傳遞 idle:
class Player(pygame.sprite.Sprite):
def __init__(self, name, position, axsis, movment, idle=[1], walk = None, jump = None):
您可以稍后修改它的內容,但是我建議您在實體化該物件屬性時要小心,因為它可能會在以后咬你(型別錯誤或值錯誤)。
如果是我,我會將它從 init 中移出,或者在知道所有值及其型別之前不構建物件(請參閱構建器設計模式)。
希望這有幫助:) 干杯!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/350741.html
