Bonjour à tous,

J'ai quelques petits problèmes, je suis en train de développer un Space Invaders sur Space Python.

J'avais fait un programme beaucoup trop redondant et répétitif au niveau du code.

Le professeur m'a donc demandé de simplifier le code et de faire un programme plus léger en modifiant les coordonnées avec "canvas.coords".

Pourtant ça ne marche pas.

Est ce que par hasard vous sauriez comment m'aider ?

Voici mon code (original) :

# Créé par rdesplat, le 19/11/2012
from __future__ import division
from lycee import *
import Tkinter

fenetre = Tkinter.Tk()
fond=Tkinter.Canvas(fenetre, width=400, height=300, background='darkgray')

x = 0
y = 0
u = 340
v = 20
a = 350
b = 10

def createrectangle(u,v,a,b,c1,c2):
fond.create_rectangle(x+u,y+v,x+a,y+b,fill=c1,outline=c2)
fond.create_rectangle(x+u-3,y+v,x+a,y+b,fill=c1,outline=c2)

def createennemi():
fond.create_rectangle

fond.pack()
# LIGNE 1

# l1 h2 l2 h1
ca='dark green'
cb='gray'

"""
Il faut impérativement créer une fonction de dessin des aliens
pour éviter la redondance du code et pouvoir faire des modifs facilement
"""

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite


u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

#Ligne 2

x = 0
y = 0
u = 340
v = 20
a = 350
b = 10


# l1 h2 l2 h1
ca='dark green'
cb='gray'

v = v+20
b = b+20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite

u = u-20
a = a-20

createrectangle(u,v,a,b,ca,cb)#deuxième 15
createrectangle(u-3,v+3,u,b+3,ca,cb)#gauche
createrectangle(a,v+3,a+3,b+3,ca,cb)#droite




#VAISSEAU DU HEROS

# l1 h2 l2 h1
fond.create_rectangle(185,280,190,260,fill='gray',outline='black')#Tireur gauche
fond.create_rectangle(210,280,215,260,fill='gray',outline='black')#Tireur droite
# xbas ybas xsommet ysommet xbasdroite y basdroite
fond.create_polygon(185, 280, 200, 250, 215, 280, fill="black", outline="gray")
# l1 h2 l2 h1
fond.create_oval(185,286,193,278,fill='yellow', outline="red")#Propulseur gauche
fond.create_oval(207,286,215,278,fill='yellow', outline="red")#Propulseur droit
fond.create_oval(192,292,208,278,fill='yellow', outline="red")#Effet vitesse
# x1 y1 x2 y2
fond.create_line(187,245,187,255, fill='red')#Tir gauche
fond.create_line(212,245,212,255, fill='red')#Tir droite

fenetre.mainloop()
Et celui que j'ai essayé de changer :

# Créé par rdesplat, le 19/11/2012
from __future__ import division
from lycee import *
import Tkinter

fenetre = Tkinter.Tk()
fond=Tkinter.Canvas(fenetre, width=400, height=300, background='darkgray')

x = 0
y = 0
u = 340
v = 20
a = 350
b = 10

def createrectangle(u,v,a,b,c1,c2):
L=[]
L.append(fond.create_rectangle(x+u,y+v,x+a,y+b,fill=c1,outline=c2))
fond.create_rectangle(x+a,y+v+3,x+a+3,y+b+3,fill=c1,outline=c2)
return L

def deplacerect(L,):
fond.coords(L[0], u-20, a+20)

def brasgauche(u,v,a,b,c1,c2):
L=[]
fond.create_rectangle(x+u-3,y+v+3,x+u,y+b+3,fill=c1,outline=c2)

def coord():
fond.coords(createrectangle, u-20, a+20)

fond.pack()
ca='dark green'
cb='gray'


# LIGNE 1

# l1 h2 l2 h1


createrectangle(u,v,a,b,ca,cb)#deuxième 1

createrectangle(u,v,a,b,ca,cb)#deuxième 1




#VAISSEAU DU HEROS

# l1 h2 l2 h1
fond.create_rectangle(185,280,190,260,fill='gray',outline='black')#Tireur gauche
fond.create_rectangle(210,280,215,260,fill='gray',outline='black')#Tireur droite
# xbas ybas xsommet ysommet xbasdroite y basdroite
fond.create_polygon(185, 280, 200, 250, 215, 280, fill="black", outline="gray")
# l1 h2 l2 h1
fond.create_oval(185,286,193,278,fill='yellow', outline="red")#Propulseur gauche
fond.create_oval(207,286,215,278,fill='yellow', outline="red")#Propulseur droit
fond.create_oval(192,292,208,278,fill='yellow', outline="red")#Effet vitesse
# x1 y1 x2 y2
fond.create_line(187,245,187,255, fill='red')#Tir gauche
fond.create_line(212,245,212,255, fill='red')#Tir droite

fenetre.mainloop()

Merci à tout ceux qui pourront m'aider,

Cordialement,
cornufreud

"La définition de l'éternité, c'est la jouissance infinie de l'existence" - Hugo Cornuel