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() |
Partager