Как я могу определить прикосновение к изображению в pygame на сенсорном экране? Я искал, но не могу найти, как определить прикосновение к конкретному изображению.
Как определить щелчки на сенсорном экране в Python?
2 сентября 2021 в 04:04
505
1
Ответы (1)
2 сентября 2021 в 15:03
Чтобы определить, касались ли изображения, вы можете использовать событие MOUSEBUTTONDOWN
. См. Обнаружение щелчка мышью Pygame.
Загрузите изображение с помощью pygame.image.load()
. Обведите ограничивающий прямоугольник (pygame.Rect
). Создайте pygame.Mask
из изображения с помощью pygame.mask.from_surface
:
image = pygame.image.load('image.png').convert_alpha()
image _rect = image.get_rect(topleft = (x, y))
image_mask = pygame.mask.from_surface(image)
Используйте событие MOUSEBUTTONDOWN
, чтобы определить, был ли нажат мышь в прямоугольной области изображения. Проверьте, установлен ли соответствующий бит в маске изображения:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
image_x, image_y = event.pos[0] - image_rect.x, event.pos[1] - image_rect.y
if image_rect.collidepoint(event.pos) and image_mask.get_at((image_x, image_y)):
print("touched")
Минимальный пример:
import pygame
pygame.init()
window = pygame.display.set_mode((400, 400))
font = pygame.font.SysFont(None, 100)
clock = pygame.time.Clock()
text = font.render("Text", True, (255, 255, 0))
bomb = pygame.image.load('Bomb-256.png').convert_alpha()
bomb_rect = bomb.get_rect(center = window.get_rect().center)
bomb_mask = pygame.mask.from_surface(bomb)
click_count = 0
click_text = font.render('touch: ' + str(click_count), True, "black")
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.MOUSEBUTTONDOWN:
image_x, image_y = event.pos[0] - bomb_rect.x, event.pos[1] - bomb_rect.y
if bomb_rect.collidepoint(event.pos) and bomb_mask.get_at((image_x, image_y)):
click_count += 1
click_text = font.render('touch: ' + str(click_count), True, "black")
window.fill((255, 255, 255))
window.blit(bomb, bomb_rect)
window.blit(click_text, click_text.get_rect(topleft = (20, 20)))
pygame.display.flip()
pygame.quit()
exit()
Вы читали документацию?
да, я читал, но не понимаю, так как я новичок в python.
Я предлагаю вам сначала сосредоточиться на основах pygame (отображение изображений, ввод данных с помощью мыши, обнаружение столкновений), а затем перейти к взаимодействию с сенсорным устройством.
Я делаю игру с птицами, но чтобы она работала на Android, мне нужно обнаруживать прикосновение
Если вы никогда даже не использовали Python, не говоря уже о сенсорном вводе, этот проект может оказаться слишком сложным. Начните с чего-то меньшего и простого, помня о своей конечной цели. Все, что я перечислил ранее, необходимо будет изучить, помимо прочего.
Я сделал игру flappy bird для ноутбука
Если вы уже знаете, как использовать pygame и читаете документацию, то в чем именно заключается ваш вопрос? Вы описали конкретную проблему с вашим кодом, чтобы найти здесь помощь.
Я спрашиваю, есть ли простой способ узнать, коснулись ли изображения
Обнаружение щелчка мышью Pygame и Как я могу добавить изображение или значок в прямоугольник кнопки в Pygame? - работает также с сенсорным экраном
Измените вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией, чтобы найти адекватный ответ.