Okonar

Калькулятор

Nov 9th, 2023
11
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.73 KB | None | 0 0
  1. #Загружаємо бібліотеки з функціями для калькулятора
  2. import pygame
  3. from pygame.locals import *
  4. from math import *
  5.  
  6.  
  7.  
  8.  
  9. # Запускаємо функції pygame
  10. pygame.init()
  11.  
  12.  
  13.  
  14.  
  15. # Створюємо екран калькулятора
  16. screen = pygame.display.set_mode((400, 600)) #Створення вікна
  17. pygame.display.set_caption("Calculator") #Задаємо вікну назву
  18.  
  19.  
  20.  
  21.  
  22. # Створємо змінні з кольорами
  23. BLACK = (0, 0, 0)
  24. WHITE = (255, 255, 255)
  25. GRAY = (200, 200, 200)
  26.  
  27.  
  28.  
  29.  
  30. # Задаємо шрифт для тексту
  31. font = pygame.font.SysFont(None, 48)
  32.  
  33.  
  34.  
  35.  
  36. # Визначаємо кнопки калькулятора
  37. buttons = [
  38. ["7", "8", "9", "/","√"],
  39. ["4", "5", "6", "*","("],
  40. ["1", "2", "3", "-",")"],
  41. ["0", ".", "=", "+","C"],
  42. ['sin','cos','pow',',','10']
  43. ]
  44.  
  45.  
  46.  
  47.  
  48. # Задаємо кнопкам розміри
  49. button_width = 70 #Ширина
  50. button_height = 70 #Довжина
  51. button_margin = 10 #Задаємо значення відстані між кнопками
  52.  
  53.  
  54.  
  55.  
  56. # Відображення калькулятора
  57. display_rect = pygame.Rect(button_margin, button_margin, 400 - 2 * button_margin, 80) #Створюємо відстань між кнопками
  58. display_text = "" #Поле для введення математичних дій
  59.  
  60.  
  61.  
  62.  
  63. # Ігровий цикл
  64. running = True #Змінна з True значенням
  65. while running: # Початок циклу
  66. screen.fill(WHITE) #Заливка фону білим кольором
  67.  
  68.  
  69.  
  70.  
  71. # Відображення кнопок калькулятора
  72. for row in range(len(buttons)):
  73. for col in range(len(buttons[row])):
  74. button_rect = pygame.Rect(
  75. button_margin + col * (button_width + button_margin),
  76. 200 + button_margin + row * (button_height + button_margin),
  77. button_width,
  78. button_height
  79. )
  80. pygame.draw.rect(screen, GRAY, button_rect)
  81.  
  82.  
  83.  
  84.  
  85. # Відображення тексту на кнопках
  86. button_text = font.render(buttons[row][col], True, BLACK)
  87. text_rect = button_text.get_rect(center=button_rect.center)
  88. screen.blit(button_text, text_rect)
  89.  
  90.  
  91.  
  92.  
  93. pygame.draw.rect(screen, GRAY, display_rect) ## Відображення дисплею калькулятора
  94. display_text_surface = font.render(display_text, True, BLACK) #Цей рядок коду конвертує текст в зображення, що можна відображати на екрані
  95. screen.blit(display_text_surface, display_rect.move(10, 10)) #Цей рядок коду розміщує зображення тексту на заданій поверхні екрану
  96.  
  97.  
  98.  
  99.  
  100. # Обробник подій
  101. for event in pygame.event.get():
  102. #Завершує роботу Pygame.
  103. if event.type == QUIT:
  104. running = False
  105.  
  106.  
  107.  
  108.  
  109. elif event.type == MOUSEBUTTONDOWN: #Умовний оператор, який перевіряє тип події. У цьому випадку, якщо подія є натисканням кнопки миші.
  110. mouse_pos = pygame.mouse.get_pos() #Отримуємо поточне положення курсору миші відносно вікна гри.
  111. for row in range(len(buttons)): #Обробка кнопок калькулятора по порядку
  112. for col in range(len(buttons[row])): #Обробка стовпців у поточному рядку калькулятора
  113.  
  114.  
  115.  
  116.  
  117. #Створення прямокутників для кнопок
  118. button_rect = pygame.Rect(
  119. button_margin + col * (button_width + button_margin),
  120. 200 + button_margin + row * (button_height + button_margin),
  121. button_width,
  122. button_height
  123. )
  124.  
  125.  
  126.  
  127.  
  128. #Перевіряємо, чи курсор миші перетинаєся з поточною кнопкою.
  129. if button_rect.collidepoint(mouse_pos):
  130. button_value = buttons[row][col] #Отримуємо значення поточної кнопки.
  131. if button_value == 'C': #Умовний оператор нажимання кнопки C
  132. display_text = "" #При нажиманні кнопки C стирається поле вводу
  133. elif button_value == "=": #Умовний оператор нажимання кнопки = , розрахування математичного прикладу
  134. try: #Намагаємося обчислити приклад , перевіряє на помилку
  135.  
  136.  
  137.  
  138.  
  139. display_text = str(eval(display_text)) #Вивод результата математичної обробки в display_text(поле вводу)
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148. except: #Якщо не змогло обчислитись , то заходе в цей умовний оператор
  149. display_text = "Error" #При помилці в полі введення пише Error
  150. else: #При натисканні другої кнопки - відображає його в поле вводу
  151. if button_value == '√':
  152. display_text += 'sqrt'
  153. else: display_text += button_value
  154.  
  155.  
  156.  
  157.  
  158. pygame.display.update() #Оновлення дисплею
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
Advertisement
Add Comment
Please, Sign In to add comment