-2
私は小惑星に取り組んでいますが、ランダムに動く小惑星の機能は実行されません。ここではコード -オブジェクトを渡しません
class Player():
def __init__(self, canvas):
self.shape = canvas.create_rectangle(910, 540, 960, 590, outline = "blue", fill= "white")
self.pos = canvas.coords(self.shape)
self.xspeed = 0
self.yspeed = 0
def move(self, canvas):
canvas.move(self.shape, self.xspeed, self.yspeed)
self.pos = canvas.coords(self.shape)
class Asteroid():
def __init__(self, canvas):
self.One = canvas.create_oval(0,0, 50, 50, fill="grey")
self.speedx = (10)
self.speedy = (10)
def move(self, canvas):
while True:
self.canvas.move(self.One, self.speedx, self.speedy)
self.canvas.after(20)
self.canvas.update()
def game():
#create window and canvas
parent = Tk()
canvas = Canvas(parent, width = 1920, height = 1080,
background="black")
parent.title("Asteroids")
canvas.pack()
#create player
player = Player(canvas)
enemyOne = Asteroid(canvas)
enemyOne.move(canvas)
であると私はエラーがだから、オブジェクトのキャンバスが小惑星に渡され、DEF移動されていない
AttributeError: 'Asteroid' object has no attribute 'canvas'
をmessage-得ます。渡すキャンバスが過去に働いたことを示すために、class Playerを参照に含めました。ありがとう。
属性ではありませんが、**が渡されています。それを '__init__'(' self.canvas = canvas')の属性として割り当てることができます。それを 'move'に渡す必要はありません。あるいは、それを属性にしたくない場合は、明示的にそれを渡し、 'self 'を介して*アクセスしません。しかし、現在のミックスとマッチは意味をなさない。 – jonrsharpe