Как сделать кнопку на Pygame?
Как мне сделать кнопку "exit"
, чтобы при нажатии на нее игра закрывалась?
#import module
import pygame
#setup
pygame.init()
screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
clock = pygame.time.Clock()
running = True
menu = True
#load font
font = pygame.font.SysFont('Arial', 32)
#load text
close = font.render("exit",0,(255, 255, 255))
#game code
while running:
screen.fill("black")
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if menu:
screen.blit(close, (32, (screen.get_height()-32)-64))
else:
pass
pygame.display.update()
clock.tick(60)
pygame.quit()
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Чтобы создать кликабельную кнопку в Pygame, вы можете выполнить следующие шаги:
Создайте поверхность для кнопки. Поверхность должна соответствовать размеру и форме кнопки.
Нарисуйте текст и рамку кнопки на поверхности.
Создайте объект
pygame.Rect
, который представляет границы кнопки.Создайте обработчик событий
pygame.event.MOUSEBUTTONDOWN
, который проверяет, нажата ли мышь внутри границ кнопки.Вызовите функцию
pygame.display.update()
, чтобы отобразить кнопку на экране.
import sys
import pygame
pygame.init()
clock = pygame.time.Clock()
# Создаём окно Pygame
window_size = (400, 400)
screen = pygame.display.set_mode(window_size)
pygame.display.set_caption('Pygame Кликабельная кнопка')
# Создаем объект шрифта
font = pygame.font.Font(None, 24)
# Создайте поверхность для кнопки
button_surface = pygame.Surface((150, 50))
# Отображение текста на кнопке
text = font.render("Click Me", True, (0, 0, 0))
text_rect = text.get_rect(
center=(button_surface.get_width() /2,
button_surface.get_height()/2))
# Создайте объект pygame.Rect, который представляет границы кнопки
button_rect = pygame.Rect(125, 125, 150, 50) # Отрегулируйте положение
while True:
clock.tick(60)
screen.fill((155, 255, 155))
# Получаем события из очереди событий
for event in pygame.event.get():
# Проверьте событие выхода
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# Проверяем событие нажатия кнопки мыши
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
# Вызовите функцию on_mouse_button_down()
if button_rect.collidepoint(event.pos):
print("Button clicked!")
# Проверьте, находится ли мышь над кнопкой.
# Это создаст эффект наведения кнопки.
if button_rect.collidepoint(pygame.mouse.get_pos()):
pygame.draw.rect(button_surface, (127, 255, 212), (1, 1, 148, 48))
else:
pygame.draw.rect(button_surface, (0, 0, 0), (0, 0, 150, 50))
pygame.draw.rect(button_surface, (255, 255, 255), (1, 1, 148, 48))
pygame.draw.rect(button_surface, (0, 0, 0), (1, 1, 148, 1), 2)
pygame.draw.rect(button_surface, (0, 100, 0), (1, 48, 148, 10), 2)
# Показать текст кнопки
button_surface.blit(text, text_rect)
# Нарисуйте кнопку на экране
screen.blit(button_surface, (button_rect.x, button_rect.y))
# Обновить состояние
pygame.display.update()