Je suis nouveau en Python et je suis auto-apprentissage, par conséquent, beaucoup d'aide est nécessaire. J'essaie d'utiliser le package graphics.py écrit par John Zelle pour afficher, dessiner et déplacer plusieurs objets image à la fois. J'ai un objet Enemy de classe qui prend en compte la vitesse, la position startX une position startY. J'ai aussi une méthode de mouvement dans cette classe qui prendra la position startX et l'ajoutera à la vitesse.Dessiner et déplacer plusieurs objets image à la fois en python
class Enemy(object):
def __init__(self, speed, startXpos, startYpos):
self.speed = speed
self.x = startXpos
self.y = startYpos
def move(self):
self.x += self.speed
Dans la méthode principale, j'ai utilisé graphics.py pour dessiner l'objet Image de Enemy. Tous les ennemis ont la même image et commencent à la même position de départ, mais la vitesse de déplacement des ennemis est différente.
win = GraphWin("Enemy", 1000, 500)
myEnemies = []
e = Image(Point(50, 200), "enemy.gif") # use speed as y position, too
e.draw(win) # add it to the window
e2 = Image(Point(50, 200), "enemy.gif") # use speed as y position, too
e2.draw(win) # add it to the window
e3 = Image(Point(50, 200), "enemy.gif") # use speed as y position, too
e3.draw(win) # add it to the window
enemy1 = Enemy(40, 50, 0)
enemy2= Enemy(50, 50, 0)
enemy3 = Enemy(60,50, 0)
myEnemies.append((enemy1,e))
myEnemies.append((enemy2,e2))
myEnemies.append((enemy3,e3))
for i in range(40): # main animation loop
for enemy in myEnemies: # loop through the enemy list
enemy[0].move()
time.sleep(1) # wait a second...
win.close()
Les objets image ne bougent pas. Qu'est-ce que je fais mal ici?
'Enemy' est une sous-classe si' object', que voulez-vous que Enemy fasse en appelant simplement la fonction move d'un objet qui ne change qu'un attribut. Par conséquent, "Ennemi" ne devrait-il pas être une sous-classe de quelque chose d'autre? – abccd
mettez votre time.sleep à l'intérieur pour la boucle ennemie –
Vous devriez obtenir 'AttributeError' puisque vous appelez la fonction' .move() 'sur l'objet' tuple'. –