Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Загружаємо бібліотеки з функціями для калькулятора
- import pygame
- from pygame.locals import *
- from math import *
- # Запускаємо функції pygame
- pygame.init()
- # Створюємо екран калькулятора
- screen = pygame.display.set_mode((400, 600)) #Створення вікна
- pygame.display.set_caption("Calculator") #Задаємо вікну назву
- # Створємо змінні з кольорами
- BLACK = (0, 0, 0)
- WHITE = (255, 255, 255)
- GRAY = (200, 200, 200)
- # Задаємо шрифт для тексту
- font = pygame.font.SysFont(None, 48)
- # Визначаємо кнопки калькулятора
- buttons = [
- ["7", "8", "9", "/","√"],
- ["4", "5", "6", "*","("],
- ["1", "2", "3", "-",")"],
- ["0", ".", "=", "+","C"],
- ['sin','cos','pow',',','10']
- ]
- # Задаємо кнопкам розміри
- button_width = 70 #Ширина
- button_height = 70 #Довжина
- button_margin = 10 #Задаємо значення відстані між кнопками
- # Відображення калькулятора
- display_rect = pygame.Rect(button_margin, button_margin, 400 - 2 * button_margin, 80) #Створюємо відстань між кнопками
- display_text = "" #Поле для введення математичних дій
- # Ігровий цикл
- running = True #Змінна з True значенням
- while running: # Початок циклу
- screen.fill(WHITE) #Заливка фону білим кольором
- # Відображення кнопок калькулятора
- for row in range(len(buttons)):
- for col in range(len(buttons[row])):
- button_rect = pygame.Rect(
- button_margin + col * (button_width + button_margin),
- 200 + button_margin + row * (button_height + button_margin),
- button_width,
- button_height
- )
- pygame.draw.rect(screen, GRAY, button_rect)
- # Відображення тексту на кнопках
- button_text = font.render(buttons[row][col], True, BLACK)
- text_rect = button_text.get_rect(center=button_rect.center)
- screen.blit(button_text, text_rect)
- pygame.draw.rect(screen, GRAY, display_rect) ## Відображення дисплею калькулятора
- display_text_surface = font.render(display_text, True, BLACK) #Цей рядок коду конвертує текст в зображення, що можна відображати на екрані
- screen.blit(display_text_surface, display_rect.move(10, 10)) #Цей рядок коду розміщує зображення тексту на заданій поверхні екрану
- # Обробник подій
- for event in pygame.event.get():
- #Завершує роботу Pygame.
- if event.type == QUIT:
- running = False
- elif event.type == MOUSEBUTTONDOWN: #Умовний оператор, який перевіряє тип події. У цьому випадку, якщо подія є натисканням кнопки миші.
- mouse_pos = pygame.mouse.get_pos() #Отримуємо поточне положення курсору миші відносно вікна гри.
- for row in range(len(buttons)): #Обробка кнопок калькулятора по порядку
- for col in range(len(buttons[row])): #Обробка стовпців у поточному рядку калькулятора
- #Створення прямокутників для кнопок
- button_rect = pygame.Rect(
- button_margin + col * (button_width + button_margin),
- 200 + button_margin + row * (button_height + button_margin),
- button_width,
- button_height
- )
- #Перевіряємо, чи курсор миші перетинаєся з поточною кнопкою.
- if button_rect.collidepoint(mouse_pos):
- button_value = buttons[row][col] #Отримуємо значення поточної кнопки.
- if button_value == 'C': #Умовний оператор нажимання кнопки C
- display_text = "" #При нажиманні кнопки C стирається поле вводу
- elif button_value == "=": #Умовний оператор нажимання кнопки = , розрахування математичного прикладу
- try: #Намагаємося обчислити приклад , перевіряє на помилку
- display_text = str(eval(display_text)) #Вивод результата математичної обробки в display_text(поле вводу)
- except: #Якщо не змогло обчислитись , то заходе в цей умовний оператор
- display_text = "Error" #При помилці в полі введення пише Error
- else: #При натисканні другої кнопки - відображає його в поле вводу
- if button_value == '√':
- display_text += 'sqrt'
- else: display_text += button_value
- pygame.display.update() #Оновлення дисплею
Advertisement
Add Comment
Please, Sign In to add comment