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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
| import tkinter as tk
from random import randrange
def sol_move(delay=250):
canvas.move('sol', -20, 0)
iid = sol_items.pop(0)
canvas.coords(iid, 380, 380, 400, 400)
sol_items.append(iid)
root.after(delay, sol_move)
blocage=0
def obstacle_move (delay=250):
global blocage
canvas.move('obstacle',-20,0)
canvas.move('obstacle_up',-20,0)
canvas.move('obstacle_down',-20,0)
obs=obstacle_up_items.pop(0)
obs=obstacle_down_items.pop(0)
if blocage%3==0:
proba=randrange(0,11)
print(f3)
if proba<4: # création d'un obstacle
obs=canvas.create_rectangle( 380, 360, 400, 380, fill='grey', tag='obstacle_up')
obstacle_up_items.append(obs)
obs_d=canvas.create_rectangle( 380, 380, 400, 400, fill='grey', tag='obstacle')
obstacle_down_items.append(obs_d)
elif proba>7: # création d'un trou
obs=canvas.create_rectangle( 380, 380, 400, 400, fill='grey90', outline='grey90', tag='obstacle_down')
obstacle_down_items.append(obs)
obs_u=canvas.create_rectangle( 380, 360, 400, 380, fill='grey90', outline='grey90', tag='obstacle')
obstacle_up_items.append(obs_u)
else: # recopie d'un terrain "normal"
obs_u=canvas.create_rectangle( 380, 360, 400, 380, fill='grey90', outline='grey90', tag='obstacle')
obs_d=canvas.create_rectangle( 380, 380, 400, 400, fill='grey', tag='obstacle')
obstacle_up_items.append(obs_u)
obstacle_down_items.append(obs_d)
else : # recopie d'un terrain "normal"
obs_u=canvas.create_rectangle( 380, 360, 400, 380, fill='grey90', outline='grey90', tag='obstacle')
obs_d=canvas.create_rectangle( 380, 380, 400, 400, fill='grey', tag='obstacle')
obstacle_up_items.append(obs_u)
obstacle_down_items.append(obs_d)
canvas.tag_lower('obstacle_up')
canvas.tag_lower('obstacle')
blocage +=1
root.after(delay, obstacle_move)
inprogress = False
def sauter(e=None):
global inprogress
if inprogress:
return
inprogress = True
def gen_move():
for n in range(20):
if n <= 9:
yield -1
else:
yield 1
g_move = gen_move()
def _saut(delay=60):
global inprogress
global Y1,Y2
try:
direction = next(g_move)
canvas.move('carre', 0, direction * 5)
canvas.update_idletasks()
print(Y1,Y2)
root.after(delay, _saut)
except StopIteration:
inprogress = False
_saut()
root = tk.Tk()
root.geometry('800x600+350+100')
canvas = tk.Canvas(root, width=400, height=400, bg='grey90')
canvas.pack()
obstacle_up_items=[]
obstacle_down_items=[]
sol_items = []
y0 = 380
y1 = y0 +20
y2 = 360
y3 = y2+20
for j in range(20): #liste des obstacles
x0 = j*20
x1 = x0 + 20
iie = canvas.create_rectangle(x0, y2, x1, y3, fill='grey90', outline='grey90', tag='obstacle_up')
obstacle_up_items.append(iie)
for k in range(20): #liste des trous
x0 = k*20
x1 = x0 + 20
iif = canvas.create_rectangle(x0, y0, x1, y1, fill='grey90', outline='grey90', tag='obstacle_down')
obstacle_down_items.append(iif)
for i in range(20): #liste du sol
x0 = i*20
x1 = x0 + 20
iid = canvas.create_rectangle(x0, y0, x1, y1, fill='grey', tag='sol')
sol_items.append(iid)
X1=40
X2=X1+20
Y1=360
Y2=Y1+20
f2=canvas.create_rectangle((X1,Y1,X2,Y2),fill='blue',tag="carre") #Perso bleu
canvas.tag_raise('carre')
f3=canvas.find_overlapping(X1+2,Y1+2,X2-2,Y2-2)
for iid in f3:
print (canvas.gettags(iid))
print (canvas.type(iid))
sol_move()
obstacle_move()
root.bind("<space>",sauter)
tk.mainloop() |
Partager