Advertisement
Chl_Snt

Pizza TZ

Feb 4th, 2025
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.47 KB | None | 0 0
  1. import math
  2. import random
  3. import time
  4. import tkinter as tk
  5.  
  6. root = tk.Tk()
  7. root.geometry("750x600")
  8. root.title("Мини-пиццерия")
  9. root.iconbitmap("pizza.ico")
  10. root.wm_resizable(False, False)
  11.  
  12. WIDTH = 510
  13. HEIGHT = 510
  14. CC = WIDTH // 2, HEIGHT // 2
  15.  
  16. canvas = tk.Canvas(root, width=510, height=510)
  17. canvas.place(x=150, y=0)
  18. f = None
  19.  
  20. sizes = ["small", "medium", "big"]
  21.  
  22.  
  23. class Base:
  24.     def __init__(self, canvas, type):
  25.         self.canvas = canvas
  26.         self.id = None
  27.         self.type = type
  28.         self.size = 0
  29.         self.pos = []
  30.         self.sauce = False
  31.         self.fill = {
  32.             "pepp": 0,
  33.             "chicken": 0,
  34.             "cheese": 0,
  35.             "mush": 0,
  36.             "meat": 0
  37.         }
  38.         self.obj = []
  39.         self.speed = 0
  40.         self.set()
  41.  
  42.  
  43.     def set(self):
  44.         if self.type == "small":
  45.             self.size = 300
  46.         elif self.type == "medium":
  47.             self.size = 400
  48.         else:
  49.             self.size = 500
  50.  
  51.         self.pos = [CC[0] - self.size / 2, CC[1] - self.size / 2,
  52.                     CC[0] + self.size / 2, CC[1] + self.size / 2]
  53.         self.id = self.canvas.create_oval(self.pos, fill="#f5deb3")
  54.         self.obj.append(self.id)
  55.  
  56.     def draw(self):
  57.         global order
  58.         if canvas.coords(self.id)[0] <= 600:
  59.             for id in self.obj:
  60.                 self.canvas.move(id, self.speed, 0)
  61.  
  62.         else:
  63.             canvas.delete(self.id)
  64.             for id in self.obj:
  65.                 canvas.delete(id)
  66.             canvas.delete(order)
  67.             size = random.choice(sizes)
  68.             order = canvas.create_text(90, 20, text=f"Новая пицца: {size}")
  69.             self.__init__(canvas, size)
  70.  
  71.  
  72. size = random.choice(sizes)
  73. order = canvas.create_text(90, 20, text=f"Новая пицца: {size}")
  74. pizza = Base(canvas, size)
  75.  
  76.  
  77. def add_sauce():
  78.     pos = [CC[0] - (pizza.size - 50) / 2, CC[1] - (pizza.size - 50) / 2,
  79.            CC[0] + (pizza.size - 50) / 2, CC[1] + (pizza.size - 50) / 2]
  80.     pizza.obj.append(canvas.create_oval(pos, fill="tomato"))
  81.     pizza.sauce = True
  82.     ready()
  83.  
  84.  
  85. def add_pepp():
  86.     pos = [CC[0] - (pizza.size - 50) / 2 - 100, CC[1] - (pizza.size - 50) / 2 - 100,
  87.            CC[0] + (pizza.size - 50) / 2 - 100, CC[1] + (pizza.size - 50) / 2 - 100]
  88.     size = 30
  89.  
  90.     for n in range(3):
  91.         spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  92.         distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  93.         while distance > (pos[2] - pos[0]) / 2.5:
  94.             spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  95.             distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  96.  
  97.         pizza.obj.append(canvas.create_oval(spawn[0], spawn[1], spawn[0] + size, spawn[1] + size, fill="red"))
  98.         pizza.fill["pepp"] += 3
  99.  
  100.  
  101. def add_chicken():
  102.     pos = [CC[0] - (pizza.size - 50) / 2 - 100, CC[1] - (pizza.size - 50) / 2 - 100,
  103.            CC[0] + (pizza.size - 50) / 2 - 100, CC[1] + (pizza.size - 50) / 2 - 100]
  104.     size = 30
  105.  
  106.     for n in range(3):
  107.         spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  108.         distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  109.         while distance > (pos[2] - pos[0]) / 2.5:
  110.             spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  111.             distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  112.  
  113.         pizza.obj.append(canvas.create_rectangle(spawn[0], spawn[1], spawn[0] + size, spawn[1] + size, fill="beige"))
  114.         pizza.fill["chicken"] += 3
  115.  
  116.  
  117. def add_cheese():
  118.     pos = [CC[0] - (pizza.size - 50) / 2 - 100, CC[1] - (pizza.size - 50) / 2 - 100,
  119.            CC[0] + (pizza.size - 50) / 2 - 100, CC[1] + (pizza.size - 50) / 2 - 100]
  120.     size = 50
  121.    
  122.  
  123.     for n in range(3):
  124.         spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  125.         distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  126.         while distance > (pos[2] - pos[0]) / 2.5:
  127.             spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  128.             distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  129.  
  130.         pizza.obj.append(canvas.create_polygon(spawn[0], spawn[1],
  131.                                                spawn[0] + size, spawn[1],
  132.                                                spawn[0] + size / 2, spawn[1] + size, fill="gold"))
  133.         pizza.fill["cheese"] += 3
  134.  
  135.  
  136. def add_mush():
  137.     pos = [CC[0] - (pizza.size - 50) / 2 - 100, CC[1] - (pizza.size - 50) / 2 - 100,
  138.            CC[0] + (pizza.size - 50) / 2 - 100, CC[1] + (pizza.size - 50) / 2 - 100]
  139.     size = 30
  140.  
  141.     for n in range(3):
  142.         spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  143.         distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  144.         while distance > (pos[2] - pos[0]) / 2.5:
  145.             spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  146.             distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  147.  
  148.         pizza.obj.append(
  149.             canvas.create_oval(spawn[0], spawn[1], spawn[0] + size, spawn[1] + size / 2, fill="darkorange4"))
  150.         pizza.obj.append(canvas.create_rectangle(spawn[0] + size / 3, spawn[1] + size / 2,
  151.                                                  spawn[0] + 2 * size / 3, spawn[1] + size, fill="darkorange4"))
  152.  
  153.         pizza.fill["mush"] += 3
  154.  
  155.  
  156. def add_meat():
  157.     pos = [CC[0] - (pizza.size - 50) / 2 - 100, CC[1] - (pizza.size - 50) / 2 - 100,
  158.            CC[0] + (pizza.size - 50) / 2 - 100, CC[1] + (pizza.size - 50) / 2 - 100]
  159.     size = 15
  160.  
  161.     for n in range(3):
  162.         spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  163.         distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  164.         while distance > (pos[2] - pos[0]) / 2.5:
  165.             spawn = random.randint(pos[0], pos[2]), random.randint(pos[1], pos[3])
  166.             distance = math.sqrt((spawn[0] - CC[0]) ** 2 + (spawn[1] - CC[1]) ** 2)
  167.  
  168.         pizza.obj.append(canvas.create_oval(spawn[0], spawn[1], spawn[0] + size, spawn[1] + size, fill="orangered2"))
  169.         pizza.fill["meat"] += 3
  170.  
  171.  
  172. def ready():
  173.     global f
  174.     f = tk.Button(text="В печь!", command=finish)
  175.     f.place(x=620, y=500)
  176.  
  177.  
  178. sauce = tk.Button(text="Добавить соус", command=add_sauce)
  179. sauce.place(x=10, y=550)
  180.  
  181. pepp = tk.Button(text="Добавить пепперони", command=add_pepp)
  182. pepp.place(x=115, y=550)
  183.  
  184. chicken = tk.Button(text="Добавить курицы", command=add_chicken)
  185. chicken.place(x=255, y=550)
  186.  
  187. cheese = tk.Button(text="Добавить сыр", command=add_cheese)
  188. cheese.place(x=380, y=550)
  189.  
  190. mush = tk.Button(text="Добавить грибы", command=add_mush)
  191. mush.place(x=485, y=550)
  192.  
  193. meat = tk.Button(text="Добавить колбаски", command=add_meat)
  194. meat.place(x=600, y=550)
  195.  
  196.  
  197. def money():
  198.     bank = 0
  199.     for item in pizza.fill:
  200.         bank += pizza.fill[item]
  201.     if pizza.type == "small":
  202.         bank += 100
  203.     elif pizza.type == "medium":
  204.         bank += 150
  205.     else:
  206.         bank += 200
  207.     return bank
  208.  
  209.  
  210. def finish():
  211.     global f
  212.     pizza.speed = 2
  213.     f.destroy()
  214.     pizza.obj.append(canvas.create_text(CC[0], CC[1], text=f"Цена пиццы: {money()} рублей."))
  215.  
  216.  
  217. while True:
  218.     root.update_idletasks()
  219.     root.update()
  220.     pizza.draw()
  221.     time.sleep(0.01)
  222.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement