-
Notifications
You must be signed in to change notification settings - Fork 0
/
button.py
61 lines (45 loc) · 3.55 KB
/
button.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import pygame.font # Модуль font дозволяє показувати текст на екрані
from settings import Settings
class Button:
def __init__(self, ai_game, msg): # параметр msg містить текст
"""Ініціалізація атрибутів кнопки"""
self.screen = ai_game.screen
self.screen_rect = self.screen.get_rect()
# Задати розміри та властивості кнопки
self.wight, self.height = 300, 50 # Розміри кнопки
self.button_color = (100, 100, 150) # Колір кнопки
self.text_color = (200, 200, 250) # Колір тексту
self.font = pygame.font.SysFont(None, 48) # Визначаємо атрибут font (текст):
# None -> повернення до уставної гарнітури, 48 -> розмір тексту
# Створити об'єкт rect кнопки та відцентрувати його
self.rect = pygame.Rect(0, 0, self.wight, self.height) # Створюємо rect кнопки з її розмірами в 0,0
self.rect.center = self.screen_rect.center # center -> розташування в центрі екрана
# Повідомлення на кнопці треба показати лише один раз
self._prep_msg(msg)
def _prep_msg(self, msg):
"""Перетворити текст на зображення та розмістити по центру кнопки"""
self.msg_image = self.font.render(msg, True, self.text_color, self.button_color) # Перетворити текст
# на зображення. True -> умикнути згладжування країв картинки
self.msg_image_rect = self.msg_image.get_rect() # Створюємо rect на базі зображення
self.msg_image_rect.center = self.rect.center # Прирівняємо центри кнопки та тексту
def draw_button(self):
# Намалювати порожню кнопку, а тоді -- повідомлення
self.screen.fill(self.button_color, self.rect) # Створюємо прямокутну частину кнопки
self.screen.blit(self.msg_image, self.msg_image_rect) # Малюємо зображення тексту на екрані
class Greeting(Button):
def __init__(self, ai_game, msg): # параметр msg містить текст
"""Ініціалізація атрибутів кнопки"""
super().__init__(ai_game, msg)
self.screen = ai_game.screen
self.screen_rect = self.screen.get_rect()
# Задати розміри та властивості кнопки
self.wight, self.height = 1100, 160 # Розміри кнопки
self.button_color = (100, 100, 150) # Колір кнопки
self.text_color = (200, 200, 250) # Колір тексту
self.font = pygame.font.SysFont(None, 60) # Визначаємо атрибут font (текст):
# None -> повернення до уставної гарнітури, 48 -> розмір тексту
# Створити об'єкт rect кнопки та відцентрувати його
self.rect = pygame.Rect(0, 0, self.wight, self.height)
self.rect.center = (self.screen_rect.width / 2, 200)
# Повідомлення на кнопці треба показати лише один раз
self._prep_msg(msg)