Guest User

Untitled

a guest
May 6th, 2020
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter.ttk import *
  3. import random
  4.  
  5. tk = Tk()
  6. tk.title('Тетрис')
  7. tk.geometry('550x650+50+50')
  8. tk.configure(bg = '#000000')
  9. tk.resizable(0, 0)
  10. canvas1 = Canvas(tk, width = 330, height = 600)
  11. canvas1.pack(expand = 1, anchor = W)
  12. canvas2 = Canvas(tk, width = 150, height = 150)
  13. canvas2.place(x = 365, y = 25)
  14. canvas3 = Canvas(tk, width = 150, height = 100, bg = '#000000')
  15. canvas3.place(x = 365, y = 200)
  16. canvas4 = Canvas(tk)
  17. canvas4.place(x = 365, y = 350)
  18. for l in range(0, 330, 30):
  19. canvas1.create_line(l, 0, l, 600, fill = "#000000")
  20. for p in range(0, 600, 30):
  21. canvas1.create_line(0, p, 330, p, fill = "#000000")
  22. for g in range(0, 150, 30):
  23. canvas2.create_line(g, 0, g, 150, fill = '#000000')
  24. for j in range(0, 150, 30):
  25. canvas2.create_line(0, j, 150, j, fill = '#000000')
  26. canvas3.create_text(75, 25, text='SCORE:', font=('Courier', 15), fill='red')
  27. ms = Message(canvas4)
  28. ms.configure(text = """Увага!!! Для цієї гри необхідно, аби ви весь час натискали на стрілки або Enter. Для запуску гри натисніть будь-яку з означених клавіш""")
  29. ms.pack()
  30.  
  31. class new_figure:
  32. W = ('#c46210', '#648c11', '#e97451', '#af002a', '#008000', '#5f9ebb', '#867e36', '#5d8aa8', '#ef9999', '#d755b1', '#8a2be2', '#556b2f', '#df00ff')
  33. S = random.choice(W)
  34. block = canvas2.create_rectangle(60, 0, 90, 30, fill = S)
  35. def newcolor():
  36. T = random.choice(new_figure.W)
  37. return T
  38. def newblock():
  39. new_figure.block = canvas2.create_rectangle(60, 0, 90, 30, fill = new_figure.newcolor())
  40.  
  41.  
  42. class old_figure:
  43. Q = ('#c46210', '#648c11', '#e97451', '#af002a', '#008000', '#5f9ebb', '#867e36', '#5d8aa8', '#ef9999', '#d755b1', '#8a2be2', '#556b2f', '#df00ff')
  44. H = random.choice(Q)
  45. block = canvas1.create_rectangle(150, 0, 180, 30, fill = H)
  46. def __init__(self, canvas1):
  47. self.canvas1 = canvas1
  48. self.x = 0
  49. self.y = 0
  50. self.id = old_figure.block
  51. self.canvas1_width = self.canvas1.winfo_width()
  52. self.canvas1_height = self.canvas1.winfo_height()
  53. self.canvas1.pack()
  54. self.movement()
  55. def movement(self):
  56. self.canvas1.move(self.id, self.x, self.y)
  57. self.canvas1.after(1000, self.movement)
  58. def left(self, event):
  59. pos = self.canvas1.coords(self.id)
  60. if min(pos[::2]) == 0 or max(pos[1::2]) == 600:
  61. self.x = 0
  62. self.y = 0
  63. else:
  64. self.x = 0
  65. self.y = 0
  66. self.canvas1.move(self.id, -30, 30)
  67. def right(self, event):
  68. pos = self.canvas1.coords(self.id)
  69. if max(pos[::2]) == 330 or max(pos[1::2]) == 600:
  70. self.x = 0
  71. self.y = 0
  72. else:
  73. self.x = 0
  74. self.y = 0
  75. self.canvas1.move(self.id, 30, 30)
  76. def down(self, event):
  77. pos = self.canvas1.coords(self.id)
  78. pos1 = canvas2.coords(new_figure.block)
  79. if pos[3] == 600:
  80. self.x = 0
  81. self.y = 0
  82. self.id = self.canvas1.create_rectangle(int(pos1[0]) + 90, int(pos1[1]), int(pos1[2]) + 90, int(pos1[3]), fill = new_figure.newcolor())
  83. new_figure.newblock()
  84. elif pos[3] == 570:
  85. self.canvas1.move(self.id, 0, 30)
  86. else:
  87. self.x = 0
  88. self.y = 0
  89. self.canvas1.move(self.id, 0, 60)
  90. def up(self, event):
  91. pos = self.canvas1.coords(self.id)
  92. pos1 = canvas2.coords(new_figure.block)
  93. if pos[3] == 600:
  94. self.x = 0
  95. self.y = 0
  96. self.id = self.canvas1.create_rectangle(int(pos1[0]) + 90, int(pos1[1]), int(pos1[2]) + 90, int(pos1[3]), fill = new_figure.newcolor())
  97. new_figure.newblock()
  98. else:
  99. self.x = 0
  100. self.y = 0
  101. self.canvas1.move(self.id, 0, 30)
  102.  
  103. if __name__ == "__main__":
  104. r = old_figure(canvas1)
  105. tk.bind("<KeyPress-Left>", lambda e: r.left(e))
  106. tk.bind("<KeyPress-Right>", lambda e: r.right(e))
  107. tk.bind("<KeyPress-Down>", lambda e: r.down(e))
  108. tk.bind("<KeyPress-Return>", lambda e: r.up(e))
  109. tk.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment