Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.79 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter.font import Font
  3. import random
  4.  
  5. def move():
  6. #"deplacement de la balle"
  7.     global x1, y1, dx, dy
  8.     global xraq, yraq, temps,score, score_hold,t
  9.  
  10.     x1, y1 = x1 +dx, y1 + dy
  11.     if x1 >460:
  12.         x1, dx, dy = 460, -dx, dy
  13.     if y1 >460:
  14.         y1, dx, dy = 460, dx, -dy
  15.         score-=1
  16.     if x1 <10:
  17.         x1, dx, dy = 10, -dx, dy
  18.     if y1 <10:
  19.         y1, dx, dy = 10, dx, -dy
  20.  
  21.     if (y1+30>=yraq):
  22.         if x1>=xraq and x1<xraq+100:
  23.             y1, dx, dy = yraq-30, dx, -dy
  24.             score+=1
  25.  
  26.  
  27.     can1.coords(oval1,x1,y1,x1+30,y1+30)
  28.  
  29.     global x2, y2, dx2, dy2
  30.     x2, y2 = x2 +dx2, y2 + dy2
  31.     if x2 >460:
  32.         x2, dx2, dy2 = 460, -dx2, dy2
  33.     if y2 >460:
  34.         y2, dx2, dy2 = 460, dx2, -dy2
  35.         score-=1
  36.     if x2 <10:
  37.         x2, dx2, dy2 = 10, -dx2, dy2
  38.     if y2 <10:
  39.         y2, dx2, dy2 = 10, dx2, -dy2
  40.  
  41.     if (y2+30>=yraq):
  42.         if x2>=xraq and x2<xraq+100:
  43.             y2, dx2, dy2 = yraq-30, dx2, -dy2
  44.             score+=1
  45.  
  46.     can1.coords(oval2,x2,y2,x2+30,y2+30)
  47.  
  48.     global x3, y3, dx3, dy3
  49.     x3, y3 = x3 +dx3, y3 + dy3
  50.     if x3 >460:
  51.         x3, dx3, dy3 = 460, -dx3, dy3
  52.     if y3 >460:
  53.         y3, dx3, dy3 = 460, dx3, -dy3
  54.         score-=1
  55.     if x3 <10:
  56.         x3, dx3, dy3 = 10, -dx3, dy3
  57.     if y3 <10:
  58.         y3, dx3, dy3 = 10, dx3, -dy3
  59.  
  60.     if (y3+30>=yraq):
  61.         if x3>=xraq and x3<xraq+100:
  62.             y3, dx3, dy3 = yraq-30, dx3, -dy3
  63.             score+=1
  64.  
  65.     can1.coords(oval3,x3,y3,x3+30,y3+30)
  66.  
  67.     global x4, y4, dx4, dy4
  68.     x4, y4 = x4 +dx4, y4 + dy4
  69.     if x4 >460:
  70.         x4, dx4, dy4 = 460, -dx4, dy4
  71.     if y4 >460:
  72.         y4, dx4, dy4 = 460, dx4, -dy4
  73.         score-=1
  74.     if x4 <10:
  75.         x4, dx4, dy4 = 10, -dx4, dy4
  76.     if y4 <10:
  77.         y4, dx4, dy4 = 10, dx4, -dy4
  78.  
  79.     if (y4+30>=yraq):
  80.         if x4>=xraq and x4<xraq+100:
  81.             y4, dx4, dy4 = yraq-30, dx4, -dy4
  82.             score+=1
  83.  
  84.     can1.coords(oval4,x4,y4,x4+30,y4+30)
  85.  
  86.     # deplacement raquette
  87.     global draq,raquette
  88.  
  89.     yraq+=draq
  90.     if yraq<5:
  91.         yraq=5
  92.         draq=0
  93.     if yraq>395:
  94.         yraq=395
  95.         draq=0
  96.  
  97.     can1.move(raquette, draq,-0)
  98.  
  99.     # collision
  100.  
  101.     # balle 1 avec balle2
  102.     if(abs(x1-x2)<30 and abs(y1-y2)<30):
  103.         dx, dy = random.randint(-15,15),random.randint(-15,15)
  104.         dx2, dy2 = random.randint(-15,15),random.randint(-15,15)
  105.  
  106.     # balle 1 avec balle 3
  107.     if(abs(x1-x3)<30 and abs(y1-y3)<30):
  108.         dx, dy = random.randint(-15,15),random.randint(-15,15)
  109.         dx3, dy3 = random.randint(-15,15),random.randint(-15,15)
  110.  
  111.     # balle 1 avec balle 4
  112.     if(abs(x1-x4)<30 and abs(y1-y4)<30):
  113.         dx, dy = random.randint(-15,15),random.randint(-15,15)
  114.         dx4, dy4 = random.randint(-15,15),random.randint(-15,15)
  115.  
  116.  
  117.     # balle 2 avec balle 3
  118.     if(abs(x2-x3)<30 and abs(y2-y3)<30):
  119.         dx2, dy2 = random.randint(-15,15),random.randint(-15,15)
  120.         dx3, dy3 = random.randint(-15,15),random.randint(-15,15)
  121.  
  122.     # balle 2 avec balle 4
  123.     if(abs(x2-x4)<30 and abs(y2-y4)<30):
  124.         dx2, dy2 = random.randint(-15,15),random.randint(-15,15)
  125.         dx4, dy4 = random.randint(-15,15),random.randint(-15,15)
  126.  
  127.  
  128.     # balle 3 avec balle 4
  129.     if(abs(x4-x3)<30 and abs(y4-y3)<30):
  130.         dx4, dy4 = random.randint(-15,15),random.randint(-15,15)
  131.         dx3, dy3 = random.randint(-15,15),random.randint(-15,15)
  132.  
  133.  
  134.     if flag >0:
  135.         fen1.after(20,move) # => boucler, apres 20 millisecondes
  136.  
  137.  
  138.     # gestion temps,   on passe ici toutes les 20ms...
  139.  
  140.     t+=1
  141.     if t>=50:   # soit 50x20ms=1s
  142.         t=0
  143.         temps-=1
  144.         can1.create_text(80,50, text=str(temps+1), font=font, fill= 'grey')
  145.         can1.create_text(80,50, text=str(temps), font=font, fill= 'red')
  146.  
  147.  
  148.     if temps==0:        # game over
  149.         stop_it()
  150.  
  151.     if score_hold != score:
  152.         can1.create_text(250,50, text=str(score_hold), font=font, fill= 'grey')
  153.         can1.create_text(250,50, text=str(score), font=font, fill= 'cyan')
  154.         score_hold=score
  155.  
  156. def stop_it():
  157. #  arret de l'animation"
  158.     global flag
  159.     flag =0
  160.  
  161. def start_it():
  162. #  demarrage de l'animation"
  163.     global flag,temps,score
  164.     if flag ==0: # pour ne lancer qu une seule boucle
  165.         flag =1
  166.         temps=60
  167.         score=0
  168.         can1.create_text(80,50, text=str(0), font=font, fill= 'grey')
  169.         can1.create_text(80,50, text=str(60), font=font, fill= 'red')
  170.         move()
  171.  
  172. def change():
  173.     global dx,dy,dx2,dy2
  174.     dx, dy = random.randint(-15,15),random.randint(-15,15)
  175.     dx2, dy2 = random.randint(-15,15),random.randint(-15,15)
  176.     dx3, dy3 = random.randint(-15,15),random.randint(-15,15)
  177.     dx4, dy4 = random.randint(-15,15),random.randint(-15,15)
  178.  
  179. def key(event):
  180.     global xraq
  181.     xraq=0
  182.     if event.keysym == 'Up':
  183.         xraq=15
  184.     if event.keysym == "Down":
  185.         xraq=-15
  186.  
  187.  
  188.  
  189. #========== Programme principal =============
  190. # les variables suivantes seront utilisables de maniere globale :
  191. x1, y1 = random.randint(50,450),random.randint(50,450)
  192. dx, dy = random.randint(-15,15),random.randint(-15,15) # 'pas' du deplacement
  193. x2, y2 = random.randint(50,450),random.randint(50,450)
  194. dx2, dy2 = random.randint(-15,15),random.randint(-15,15) # 'pas' du deplacement
  195. x3, y3 = random.randint(50,450),random.randint(50,450)
  196. dx3, dy3 = random.randint(-15,15),random.randint(-15,15)
  197. x4, y4 = random.randint(50,450),random.randint(50,450)
  198. dx4, dy4 = random.randint(-15,15),random.randint(-15,15)
  199.  
  200. xraq,yraq=460,220
  201. draq=0
  202.  
  203. score=0
  204. score_hold=1
  205. temps=60
  206. t=0
  207.  
  208. flag =0 # commutateur
  209. # Creation du widget principal ("parent") :
  210. fen1 = Tk()
  211. fen1.title("Animations avec tkinter")
  212. # creation des widgets "enfants" :
  213. can1 = Canvas(fen1,bg='grey',height=500, width=500)
  214. can1.pack(side=LEFT, padx =5, pady =5)
  215.  
  216. oval1 = can1.create_oval(x1, y1, x1+30, y1+30, width=2, fill="blue")
  217. oval2 = can1.create_oval(x2, y2, x2+30, y2+30, width=2, fill="red")
  218. oval3 = can1.create_oval(x3, y3, x3+30, y3+30, width=2, fill="yellow")
  219. oval4 = can1.create_oval(x4, y4, x4+30, y4+30, width=2, fill="black")
  220.  
  221.  
  222. raquette = can1.create_rectangle(xraq,yraq, xraq+20,yraq+100, fill='green')
  223.  
  224.  
  225. bou1 = Button(fen1,text='Quitter', width =8, command=fen1.destroy)
  226. bou1.pack(side=BOTTOM)
  227. bou2 = Button(fen1, text='Demarrer', width =8, command=start_it)
  228. bou2.pack()
  229. bou3 = Button(fen1, text='Arreter', width =8, command=stop_it)
  230. bou3.pack()
  231. bou4 = Button(fen1, text='Change', width =8, command=change)
  232. bou4.pack()
  233. text1 = Label(fen1, text="fleches gauche/droite , space=stop")
  234. text1.pack()
  235.  
  236. font=Font(family='Liberation Serif', size=50, weight='bold' )
  237. can1.create_text(250,50, text=str(score), font=font, fill= 'cyan')
  238. can1.create_text(80,50, text=str(temps), font=font, fill= 'red')
  239.  
  240.  
  241.  
  242. fen1.bind("<Key>", key)
  243.  
  244. fen1.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement