Вывод по нажатию мыши
Есть код, который рисует поле, помогите, как сделать так, что бы при нажатие на одну из клеток, выводило её координаты, а если нажималось, не на поле, выводило-"Мимо". Например нажав на самую левую верхнюю клетку, выводило - 0, 0
import pygame
def main():
pygame.init()
size = 550, 550
screen = pygame.display.set_mode(size)
pygame.display.set_caption('Инициализация игры')
board = Board(5, 7)
board.set_view(15, 15, 70)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((0, 0, 0))
board.render(screen)
pygame.display.flip()
pygame.quit()
class Board:
# создание поля
def __init__(self, width, height):
self.width = width
self.height = height
self.board = [[0] * width for _ in range(height)]
# значения по умолчанию
self.left = 10
self.top = 10
self.cell_size = 30
# настройка внешнего вида
def set_view(self, left, top, cell_size):
self.left = left
self.top = top
self.cell_size = cell_size
def render(self, screen):
for y in range(self.height):
for x in range(self.width):
pygame.draw.rect(screen, pygame.Color(255, 255, 255),
(x * self.cell_size + self.left,
y * self.cell_size + self.top, self.cell_size, self.cell_size), 1)
if __name__ == '__main__':
main()
Ответы (1 шт):
Автор решения: Вадим Королёв
→ Ссылка
Получить координаты можно путём получения координат курсора мыши и делением их на высоту и ширину клетки, а затем вывести на экран
## Вне цикла
font = pygame.font.SysFont('название шрифта', размер шрифта)
## В главном игровом цикле
## Получение координат мыши
mpos = pygame.mouse.get_pos()
## Нажал ли юзер на мышь?
mpressed = pygame.mouse.get_pressed()
if mpressed[0]: ## Левая кнопка мыши
raw_x = mpos[0] // board.cell_size
raw_y = mpos[1] // board.cell_size
if raw_x > board.width - 1 or raw_y > board.height - 1:
text_surface = font.render("Мимо", True, (кортеж RGB))
else:
text_surface = font.render(str(raw_x) + ";" + str(raw_y), True, (кортеж RGB))
screen.blit(text_surface, (кортеж координат))