Advertisement
Benkex

Új buborékos

Aug 28th, 2019
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.47 KB | None | 0 0
  1. # -*- coding: cp1250 -*-
  2. from Tkinter import *
  3.  
  4. from random import randint
  5.  
  6. from time import sleep, time
  7.  
  8. from math import sqrt
  9.  
  10. from keyboard import is_pressed
  11.  
  12. height = 500
  13. width = 800
  14. ablak = Tk()
  15.  
  16. ablak.title("Buborék Pukkaszto.")
  17. v = Canvas(ablak, width = width, height = height, bg = 'darkblue')
  18. v.pack()
  19.  
  20.  
  21.  
  22. hajo1 = v.create_polygon(7, 2, 7, 28, 30, 15, fill = 'red')
  23. hajo2 = v.create_oval(0, 0, 30, 30, outline = 'red')
  24. hajo_r = 15
  25. kp_x = width / 2
  26. kp_y = height / 2
  27. v.move(hajo1, kp_x, kp_y)
  28. v.move(hajo2, kp_x, kp_y)
  29.  
  30. hseb = 5
  31. def hajomozgatas():
  32.     x, y = v.coords(hajo2)[:2]
  33.     if is_pressed('up_arrow') and y-hseb>0:
  34.         v.move(hajo1, 0, -hseb)
  35.         v.move(hajo2, 0, -hseb)
  36.     elif is_pressed('down_arrow') and y++30+hseb<height:
  37.         v.move(hajo1, 0, hseb)
  38.         v.move(hajo2, 0, hseb)
  39.     if is_pressed('left_arrow') and x-hseb>0:
  40.         v.move(hajo1, -hseb, 0)
  41.         v.move(hajo2, -hseb, 0)
  42.     elif is_pressed('right_arrow') and x+30+hseb<width:
  43.         v.move(hajo1, hseb, 0)
  44.         v.move(hajo2, hseb, 0)
  45. #v.bind_all('<Key>', hajomozgatas)
  46.  
  47. bubid = list()
  48. bubr = list()
  49. bubse = list()
  50. minbubr = 10
  51. maxbubr = 30
  52. maxbubse = 10
  53. diff = 100
  54.  
  55. def buborekgyartas():
  56.     x = width + diff
  57.     y = randint(0, height)
  58.     r = randint(minbubr, maxbubr)
  59.  
  60.     id1 = v.create_oval(x - r, y - r, x + r, y + r, outline = 'white')
  61.     bubid.append(id1)
  62.     bubr.append(r)
  63.     bubse.append(randint(1, maxbubse))
  64.  
  65.  
  66. def buborekmozgat():
  67.     for i in range(len(bubid)):
  68.         v.move(bubid[i], -bubse[i], 0)
  69.  
  70. def koorker(azonosito):
  71.     poz = v.coords(azonosito)
  72.     x = (poz[0] + poz[2])/2
  73.     y = (poz[1] + poz[3])/2
  74.     return x, y
  75.  
  76. def bubtorol(i):
  77.     del bubr[i]
  78.     del bubse[i]
  79.     v.delete(bubid[i])
  80.     del bubid[i]
  81.  
  82. def bubtakarit():
  83.     for i in range(len(bubid)-1, -1, -1):
  84.         x, y = koorker(bubid[i])
  85.         if x < -diff:
  86.             bubtorol(i)
  87. def tavolsag(id1, id2):
  88.     x1, y1 = koorker(id1)
  89.     x2, y2 = koorker(id2)
  90.     return sqrt((x2 - x1)**2 + (y2 - y1)**2)
  91.  
  92. def utkozes():
  93.     pontok = 0
  94.     for bub in range(len(bubid)-1, -1, -1):
  95.         if tavolsag(hajo2, bubid[bub]) < (hajo_r + bubr[bub]):
  96.             pontok += (bubr[bub] + bubse[bub])
  97.             bubtorol(bub)
  98.     return pontok
  99.  
  100. v.create_text(50, 30, text = 'IDŐ', fill = 'white')
  101. v.create_text(150, 30, text = 'PONSZÁM', fill = 'white')
  102. idoszoveg = v.create_text(50, 50, fill = 'white')
  103. pontszoveg = v.create_text(150, 50, fill = 'white')
  104.  
  105. def pontmutat(pontszam):
  106.     v.itemconfig(pontszoveg, text = str(pontszam))
  107.  
  108. def idotmutat(maradekido):
  109.      v.itemconfig(idoszoveg, text = str(maradekido))
  110.  
  111.  
  112.  
  113. bubvsz = 10
  114. idolimit = 60
  115. bonuszpont = 1000
  116. pontszam = 0
  117. bonusz = 0
  118. vege = time() + idolimit
  119. while time() < vege:
  120.     hajomozgatas()
  121.     if randint(1, bubvsz) == 1:
  122.         buborekgyartas()
  123.     buborekmozgat()
  124.     bubtakarit()
  125.     pontszam += utkozes()
  126.     if (int(pontszam / bonuszpont)) > bonusz:
  127.         bonusz += 1
  128.         vege += idolimit
  129.     pontmutat(pontszam)
  130.     idotmutat(int(vege - time()))                                  
  131.     ablak.update()
  132.     sleep(0.01)
  133.  
  134.  
  135. v.create_text(kp_x, kp_y, \
  136.     text = 'Vége a játéknak', fill = 'white', font = ('Helvetica', 30))
  137. v.create_text(kp_x, kp_y + 30, \
  138.     text = 'Pontszámod: '+ str(pontszam), fill = 'white')
  139. v.create_text(kp_x, kp_y + 45,  \
  140.     text = 'Bonuszidö: '+ str(bonusz*idolimit), fill = 'white')
  141.  
  142. ablak.update()
  143. ablak.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement