-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdéplacement dragon
80 lines (62 loc) · 2.24 KB
/
déplacement dragon
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
##DEPLACMENT TOUTE DIRECTION AVEC LES TOUCHES ZQSD
import tkinter as tk
# définition des déplacements (choix de la variation dx de la position)
gauche = lambda: can.move('perso', -5, 0)
droite = lambda: can.move('perso', 5, 0)
bas = lambda: can.move('perso', 0, 5)
haut = lambda: can.move('perso', 0, -5)
# association de chaque touche avec un état
touches = {
'q': {
'etat': False,
'action': gauche #correspond à la fonction 'gauche' définie au dessus
},
'd': {
'etat': False,
'action': droite #correspond à la fonction 'droite'
},
's': {
'etat': False,
'action': bas #correspond à la fonction 'bas'
},
'z': {
'etat': False,
'action': haut #correspond à la fonction 'haut'
},
}
# changement de l'état quand une touche est actionnée
def appui(evt):
t = evt.keysym
if t in touches: touches[t]['etat'] = True
# quand on appui sur une des touche, l'état associé dans "touches" devient "True" et actionne le déplacement correspondant
def relache(evt):
t = evt.keysym
if t in touches: touches[t]['etat'] = False
# quand on relâche la touche, l'état redevient "False" et le déplacement s'arrète
def controleur():
fen.after(40, controleur)
for t in touches:
t = touches[t]
if t['etat']:
t['action']()
# initialisation globale
"""l'initialisation sera celle déja en place pour le jeu, içi elle n'a pas beaucoup d'importance et permet seulement de tester le programme"""
fen = tk.Tk()
fen.title("mouvement du dragon")
can = tk.Canvas(fen, width=500, height=500, bg="white")
can.pack(padx=5, pady=5)
# lecture et convertion de Lian Chu
""" ici j'ai seulement mis un rectangle car je n'arrive pas à mettre d'image, mais idéalement il faudrait l'image du perso"""
can.create_rectangle(200, 200, 300, 300,
fill='black', width=10, outline='blue',
tags='perso')
fen.bind('<KeyPress-q>', appui)
fen.bind('<KeyPress-s>', appui)
fen.bind('<KeyPress-d>', appui)
fen.bind('<KeyPress-z>', appui)
fen.bind('<KeyRelease-q>', relache)
fen.bind('<KeyRelease-s>', relache)
fen.bind('<KeyRelease-d>', relache)
fen.bind('<KeyRelease-z>', relache)
controleur()
fen.mainloop()