fork download
  1. # -*- coding: cp1251 -*-
  2. from Tkinter import * #из ткинтера импортируем всё
  3. import random #импортируем рандом
  4.  
  5.  
  6. root = Tk() #Создаем окно с именем тетрис задаем размеры для окна с игрой и очками и заливаем цветом
  7. root.title("Тетрис Родиона")
  8. root.geometry(("%dx%d")%(400, 510))
  9. mainFrame = Frame(root, width = 200, height = 510)
  10. pointFrame = Frame(root, width = 200, height = 500, bg = '#272822')
  11. can = Canvas(mainFrame, bg = "#272822",width = 200, height = 500)
  12. mainFrame.grid(row = 0, column = 0)
  13. pointFrame.grid(row = 0, column = 1)
  14. can.pack()
  15.  
  16. class Cube(): # Объявляю класс куб c функцией инит с переменной селф сингл куб
  17. def __init__(self, xBeginCoords, yBeginCoords):
  18. self.singleCube = can.create_rectangle(xBeginCoords, yBeginCoords, \
  19. xBeginCoords + 20, \
  20. yBeginCoords + 20 ,\
  21. outline = '#272822')
  22. self.isActive = False
  23. self.maxHeight = 25
  24. def stop_figure(self): # еше функция для этого класса для остановки фигуры если пространство занято
  25. for x in self.figureCoords:
  26. allCubes[x[0]][x[1]].give_true()
  27. self.get_max()
  28. self.check_line()
  29. self.create_figure()
  30.  
  31. def get_max(self):
  32. self.possibleHeight = min(self.figureCoords[x][0] for x in range(4))
  33. if self.maxHeight > self.possibleHeight:
  34. self.maxHeight = self.possibleHeight
  35.  
  36. def give_true(self):
  37. self.isActive = True
  38.  
  39. def give_end_color(self):
  40. can.itemconfig(self.singleCube, fill = "#0ec0e2", outline = 'white')
  41. self.give_true()
  42.  
  43. def take_color(self):
  44. can.itemconfig(self.singleCube, fill = '#272822', outline = '#272822')
  45. self.isActive = False
  46.  
  47. def give_color(self, ftype):
  48. if ftype == 0:
  49. can.itemconfig(self.singleCube, fill = "#fd7521", outline = 'white') # операторы условия для заливки цвета
  50.  
  51. if ftype == 1:
  52. can.itemconfig(self.singleCube, fill = "#ae739a", outline = 'white')
  53.  
  54. if ftype == 2:
  55. can.itemconfig(self.singleCube, fill = "#f92672", outline = 'white')
  56.  
  57. if ftype == 3:
  58. can.itemconfig(self.singleCube, fill = "#a6e22a", outline = 'white')
  59.  
  60. if ftype == 4:
  61. can.itemconfig(self.singleCube, fill = "#66d9ef", outline = 'white')
  62.  
  63. def create_figure(self):
  64. self.figureType = random.randint(0, 4)
  65. self.rotate = 0
  66. if self.figureType == 0:
  67. self.figureCoords = [[0, 3], [0, 4], [0, 5], [1, 4]]
  68. for x in self.figureCoords:
  69. allCubes[x[0]][x[1]].give_color(self.figureType)
  70. if self.figureType == 1:
  71. self.figureCoords = [[0, 3], [0, 4], [0, 5], [0, 6]]
  72. for x in self.figureCoords:
  73. allCubes[x[0]][x[1]].give_color(self.figureType)
  74. if self.figureType == 2:
  75. self.figureCoords = [[0, 3], [0, 4], [1, 3], [1, 4]]
  76. for x in self.figureCoords:
  77. allCubes[x[0]][x[1]].give_color(self.figureType)
  78. if self.figureType == 3:
  79. self.figureCoords = [[0, 3], [0, 4], [1, 4], [1, 5]]
  80. for x in self.figureCoords:
  81. allCubes[x[0]][x[1]].give_color(self.figureType)
  82. if self.figureType == 4:
  83. self.figureCoords = [[0, 3], [0, 4], [1, 4], [2, 4]]
  84.  
  85. self.move_down()
  86.  
  87.  
  88. class Moving_Cubes(Cube): # Объявляю класс мувинг кубс с параметром куб для его вызова
  89. def move_down(self):
  90. if self.maxHeight == 0:
  91. exit()
  92. try:
  93. for x in self.figureCoords:
  94. allCubes[x[0]+1][x[1]]
  95. except IndexError:
  96.  
  97. self.stop_figure()
  98.  
  99. return # возвращаю значение
  100. else:
  101. for x in self.figureCoords:
  102. if allCubes[x[0]+1][x[1]].isActive == True:
  103. self.stop_figure()
  104.  
  105. return
  106. for x in self.figureCoords:
  107. allCubes[x[0]][x[1]].take_color()
  108. for x in self.figureCoords:
  109. allCubes[x[0]+1][x[1]].give_color(self.figureType)
  110. x[0] += 1
  111.  
  112. can.after(100, self.move_down)
  113.  
  114. def move_left(self, event):
  115. for x in self.figureCoords:
  116. if x[1] == 0 or allCubes[x[0]][x[1]-1].isActive == True:
  117. return
  118. else:
  119. for x in self.figureCoords:
  120. allCubes[x[0]][x[1]].take_color()
  121. for x in self.figureCoords:
  122. allCubes[x[0]][x[1]-1].give_color(self.figureType)
  123. x[1] -= 1
  124.  
  125. def move_right(self, event):
  126. for x in self.figureCoords:
  127. if x[1] == 9 or allCubes[x[0]][x[1]+1].isActive == True:
  128. return
  129. else:
  130. for x in self.figureCoords:
  131. allCubes[x[0]][x[1]].take_color()
  132. for x in self.figureCoords:
  133. allCubes[x[0]][x[1]+1].give_color(self.figureType)
  134. x[1] += 1
  135.  
  136. def check_line(self):
  137. self.y = min(self.figureCoords)
  138. while self.y[0] < 25:
  139. x = 0
  140. while x < 10:
  141. if allCubes[self.y[0]][x].isActive == False:
  142. break
  143. elif x == 9:
  144. for z in range(0, 10):
  145. allCubes[self.y[0]][z].take_color()
  146. allCubes[self.y[0]][z].isActive = False
  147. self.move_the_line_down()
  148. x += 1
  149. self.y[0] += 1
  150.  
  151. def move_the_line_down(self):
  152. self.begin_moving = self.y[0]-1
  153. while self.begin_moving >= self.maxHeight:
  154. for x in range(10):
  155. if allCubes[self.begin_moving][x].isActive == True:
  156. allCubes[self.begin_moving][x].take_color()
  157. allCubes[self.begin_moving + 1][x].give_end_color()
  158. self.begin_moving -= 1
  159.  
  160. def rotate_figure(self, event):
  161. if self.figureType == 0:
  162. if self.rotate == 0:
  163. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1]].take_color()
  164. allCubes[self.figureCoords[0][0] - 1][self.figureCoords[0][1] + 1].give_color(self.figureType)
  165. self.figureCoords[0][0] -= 1
  166. self.figureCoords[0][1] += 1
  167. self.rotate += 1
  168.  
  169. elif self.rotate == 1:
  170. allCubes[self.figureCoords[3][0]][self.figureCoords[3][1]].take_color()
  171. allCubes[self.figureCoords[3][0] - 1][self.figureCoords[3][1] - 1].give_color(self.figureType)
  172. self.figureCoords[3][0] -= 1
  173. self.figureCoords[3][1] -= 1
  174. self.rotate += 1
  175.  
  176. elif self.rotate == 2:
  177. allCubes[self.figureCoords[2][0]][self.figureCoords[2][1]].take_color()
  178. allCubes[self.figureCoords[2][0] + 1][self.figureCoords[2][1] - 1].give_color(self.figureType)
  179. self.figureCoords[2][0] += 1
  180. self.figureCoords[2][1] -= 1
  181. self.rotate += 1
  182.  
  183. elif self.rotate == 3:
  184. allCubes[self.figureCoords[2][0]][self.figureCoords[2][1]].take_color()
  185. allCubes[self.figureCoords[2][0] - 1][self.figureCoords[2][1] + 1].give_color(self.figureType)
  186. self.figureCoords[2][0] -= 1
  187. self.figureCoords[2][1] += 1
  188.  
  189. allCubes[self.figureCoords[3][0]][self.figureCoords[3][1]].take_color()
  190. allCubes[self.figureCoords[3][0] + 1][self.figureCoords[3][1] + 1].give_color(self.figureType)
  191. self.figureCoords[3][0] += 1
  192. self.figureCoords[3][1] += 1
  193.  
  194. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1]].take_color()
  195. allCubes[self.figureCoords[0][0] + 1][self.figureCoords[0][1] - 1].give_color(self.figureType)
  196. self.figureCoords[0][0] += 1
  197. self.figureCoords[0][1] -= 1
  198.  
  199. self.rotate = 0
  200.  
  201. if self.figureType == 1:
  202. if self.rotate == 0:
  203. for x in range(1, 4):
  204. allCubes[self.figureCoords[x][0]][self.figureCoords[x][1]].take_color()
  205. allCubes[self.figureCoords[x][0] - x][self.figureCoords[x][1] - x].give_color(self.figureType)
  206. self.figureCoords[x][0] -= x
  207. self.figureCoords[x][1] -= x
  208. self.rotate = 1
  209. else:
  210. for x in range(1, 4):
  211. allCubes[self.figureCoords[x][0]][self.figureCoords[x][1]].take_color()
  212. allCubes[self.figureCoords[x][0] + x][self.figureCoords[x][1] + x].give_color(self.figureType)
  213. self.figureCoords[x][0] += x
  214. self.figureCoords[x][1] += x
  215. self.rotate = 0
  216.  
  217. if self.figureType == 2:
  218. return
  219.  
  220. if self.figureType == 3:
  221. if self.rotate == 0:
  222. allCubes[self.figureCoords[3][0]][self.figureCoords[3][1]].take_color()
  223. allCubes[self.figureCoords[3][0] - 2][self.figureCoords[3][1]].give_color(self.figureType)
  224. self.figureCoords[3][0] -= 2
  225.  
  226. allCubes[self.figureCoords[2][0]][self.figureCoords[2][1]].take_color()
  227. allCubes[self.figureCoords[2][0] - 1][self.figureCoords[2][1] + 1].give_color(self.figureType)
  228. self.figureCoords[2][0] -= 1
  229. self.figureCoords[2][1] += 1
  230.  
  231. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1]].take_color()
  232. allCubes[self.figureCoords[0][0] + 1][self.figureCoords[0][1] + 1].give_color(self.figureType)
  233. self.figureCoords[0][0] += 1
  234. self.figureCoords[0][1] += 1
  235. self.rotate = 1
  236.  
  237. else:
  238. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1]].take_color()
  239. allCubes[self.figureCoords[0][0] - 1][self.figureCoords[0][1] - 1].give_color(self.figureType)
  240. self.figureCoords[0][0] -= 1
  241. self.figureCoords[0][1] -= 1
  242.  
  243. allCubes[self.figureCoords[2][0]][self.figureCoords[2][1]].take_color()
  244. allCubes[self.figureCoords[2][0] + 1][self.figureCoords[2][1] - 1].give_color(self.figureType)
  245. self.figureCoords[2][0] += 1
  246. self.figureCoords[2][1] -= 1
  247.  
  248. allCubes[self.figureCoords[3][0]][self.figureCoords[3][1]].take_color()
  249. allCubes[self.figureCoords[3][0] + 2][self.figureCoords[3][1]].give_color(self.figureType)
  250. self.figureCoords[3][0] += 2
  251. self.rotate = 0
  252.  
  253. if self.figureType == 4:
  254. if self.rotate == 0:
  255. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1]].take_color()
  256. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1] + 2].give_color(self.figureType)
  257. self.figureCoords[0][1] += 2
  258.  
  259. allCubes[self.figureCoords[1][0]][self.figureCoords[1][1]].take_color()
  260. allCubes[self.figureCoords[1][0] + 1][self.figureCoords[1][1] + 1].give_color(self.figureType)
  261. self.figureCoords[1][0] += 1
  262. self.figureCoords[1][1] += 1
  263.  
  264. allCubes[self.figureCoords[3][0]][self.figureCoords[3][1]].take_color()
  265. allCubes[self.figureCoords[3][0] - 1][self.figureCoords[3][1] - 1].give_color(self.figureType)
  266. self.figureCoords[3][0] -= 1
  267. self.figureCoords[3][1] -= 1
  268. self.rotate = 1
  269.  
  270. elif self.rotate == 1:
  271. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1]].take_color()
  272. allCubes[self.figureCoords[0][0] + 2][self.figureCoords[0][1]].give_color(self.figureType)
  273. self.figureCoords[0][0] += 2
  274.  
  275. allCubes[self.figureCoords[1][0]][self.figureCoords[1][1]].take_color()
  276. allCubes[self.figureCoords[1][0] + 1][self.figureCoords[1][1] - 1].give_color(self.figureType)
  277. self.figureCoords[1][0] += 1
  278. self.figureCoords[1][1] -= 1
  279.  
  280. allCubes[self.figureCoords[3][0]][self.figureCoords[3][1]].take_color()
  281. allCubes[self.figureCoords[3][0] - 1][self.figureCoords[3][1] + 1].give_color(self.figureType)
  282. self.figureCoords[3][0] -= 1
  283. self.figureCoords[3][1] += 1
  284. self.rotate = 2
  285.  
  286. elif self.rotate == 2:
  287. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1]].take_color()
  288. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1] - 2].give_color(self.figureType)
  289. self.figureCoords[0][1] -= 2
  290.  
  291. allCubes[self.figureCoords[1][0]][self.figureCoords[1][1]].take_color()
  292. allCubes[self.figureCoords[1][0] - 1][self.figureCoords[1][1] - 1].give_color(self.figureType)
  293. self.figureCoords[1][0] -= 1
  294. self.figureCoords[1][1] -= 1
  295.  
  296. allCubes[self.figureCoords[3][0]][self.figureCoords[3][1]].take_color()
  297. allCubes[self.figureCoords[3][0] + 1][self.figureCoords[3][1] + 1].give_color(self.figureType)
  298. self.figureCoords[3][0] += 1
  299. self.figureCoords[3][1] += 1
  300. self.rotate = 3
  301.  
  302. elif self.rotate == 3:
  303. allCubes[self.figureCoords[0][0]][self.figureCoords[0][1]].take_color()
  304. allCubes[self.figureCoords[0][0] - 2][self.figureCoords[0][1]].give_color(self.figureType)
  305. self.figureCoords[0][0] -= 2
  306.  
  307. allCubes[self.figureCoords[1][0]][self.figureCoords[1][1]].take_color()
  308. allCubes[self.figureCoords[1][0] - 1][self.figureCoords[1][1] + 1].give_color(self.figureType)
  309. self.figureCoords[1][0] -= 1
  310. self.figureCoords[1][1] += 1
  311.  
  312. allCubes[self.figureCoords[3][0]][self.figureCoords[3][1]].take_color()
  313. allCubes[self.figureCoords[3][0] + 1][self.figureCoords[3][1] - 1].give_color(self.figureType)
  314. self.figureCoords[3][0] += 1
  315. self.figureCoords[3][1] -= 1
  316. self.rotate = 0
  317.  
  318.  
  319. class Appearance():
  320. def __init__(self):
  321. self.level = Label(pointFrame, width = 5, text = 'Уровень', font = 'Arial 18', fg = '#f2e12e', bg = '#272822').pack(side ='left')
  322. self.levelValue = Entry(pointFrame, width = 5, fg = '#f2e12e', bg = '#272822').pack(side = 'right')
  323. self.score = Label(pointFrame, width = 5, text = 'Очки', font = 'Arial 18', fg = '#f2e12e', bg = '#272822').pack(side = 'bottom')
  324.  
  325. allCubes = [[Moving_Cubes(x1, y1) for x1 in range(2, 200, 20)] \
  326. for y1 in range(2, 500, 20)]
  327.  
  328. Scores = Appearance()
  329. allCubes[0][1].create_figure()
  330.  
  331. root.bind('<Left>', allCubes[0][1].move_left) # биндю кнопки для своих функций
  332. root.bind('<Right>', allCubes[0][1].move_right)
  333. root.bind('<Up>', allCubes[0][1].rotate_figure)
  334. mainloop()# your code goes here
Runtime error #stdin #stdout #stderr 0.03s 27232KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "prog.py", line 6, in <module>
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1813, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable