Bonjour à tous,

Je commence en programmation et j'essaie de créé un petit jeu très simple pour me faire la main.

Le but étant de lancer des projectiles vers des météorites afin de les détruire avant qu'elle ne touche la terre.

Bon pour l'instant, j'ai réussi a créé le "pion" du joueur qui se déplace dans la fenêtre de gauche a droite, et j'ai aussi réussi a faire tirer les projectiles à partir de se même pion.

Mon problème c'est que je ne peu pas tirer plusieurs projectile en même temps. Si je le fais, le projectile précédent s'arrête et en plus j'ai une erreur d'indentation lorsque j'essaie d'effacer le projectile qui atteint le haut de ma fenêtre...

Je vous met mon code source: (soyer indulgent je commence en programmation et j'avoue ne pas avoir tout saisi de la programmation orienté objet )

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 
 
# -*- coding:Latin-1 -*-
 
from tkinter import *
from random import randrange
 
class Joueur(object):
    """ Crée un joueur """
 
    def __init__(self, can, posX, posY):
 
        self.can = can
        self.posX = posX #Utile pour définir
        self.posY = posY #l'emplacement selon le canvas
 
        # Création d'un rectangle de 20 * 20
        self.joueur = self.can.create_rectangle(self.posX, self.posY,
                                                 self.posX+20, self.posY+20,
                                                 fill = "red")
 
        # Gestion des évènements
        self.can.bind("<Motion>", self.move)
        self.can.bind("<Button-1>", self.tire, add = "+")
 
    def move(self, event):
        " Fais bouger le joueur selon la souri "
 
        # Récupère la position de la souri
        self.mouseX = event.x-10
        self.mouseY = event.y+10
 
        self.can.coords(self.joueur, self.mouseX, self.posY,
                        self.mouseX+20, self.posY+20)
 
 
    def tire(self, event):
        " Crée un projectile "
 
        self.lazer = self.can.create_line(self.mouseX+10, self.posY
                                          , self.mouseX+10, self.posY+30,
                                          fill = "blue")
 
        self.deplacetire()
 
    def deplacetire(self):
        " Déplace le projectile jusqu'en haut du canvas "
 
        # Récupère la position du projectile
        self.posLazer = self.can.coords(self.lazer)
        self.posLazerY = self.posLazer[1]
 
        if self.posLazerY > 0:
            self.can.move(self.lazer, 0, -10)
            self.can.after(30, self.deplacetire)
        else:
            self.can.delete(self.lazer)
 
class App(object):
    """ Application principal """
 
    def __init__(self, larg = 200, haut = 200):
 
        self.larg = larg
        self.haut = haut
 
        # Fenetre principal
        self.root = Tk()
 
        # Canvas de la fenetre principal
        self.can = Canvas(self.root, width = self.larg,
                          height = self.haut, bg = "black")
        self.can.pack(side = TOP)
 
        # Bouton pour quitter qui s'ajuste à la largeur
        # de la fenêtre d'où le "int(larg/7)"
        Button(self.root, text="Quitter", bg="dark grey",
               width = int(larg/7), command =
               self.root.quit).pack(side = BOTTOM)
 
        # Appel la classe qui créera le joueur et le
        # positionne au centre
        Joueur(self.can, self.larg/2, self.haut-20)
 
    def mainloop(self):
        "Methode qui referme la fenetre"
        self.root.mainloop()
        self.root.destroy()
 
if __name__ == "__main__":
 
    play = App(600, 600)
    play.mainloop()