Хочу сделать одиночную нажатие кнопки мыши в pygame
import pygame
import random
pygame.init()
WIDTH,HEIGHT = 800,600
SCREEN = pygame.display.set_mode((WIDTH,HEIGHT))
BG = pygame.transform.scale(pygame.image.load('images/bg.jpeg'), (WIDTH , HEIGHT)).convert()
pinky = pygame.transform.scale(pygame.image.load('images/pinky.png'), (60,120))
clock = pygame.time.Clock()
aim = pygame.transform.scale(pygame.image.load('images/aim.png'), (75,75))
class Baloons:
def __init__(self, x, y):
self.x = x
self.y = y
self.img = pinky
self.rects = pinky.get_rect()
def draw(self, window):
window.blit(self.img, (self.x, self.y))
def move(self, speed):
self.y -= speed
def main():
run = True
FPS = 60
speed = 3
baloons = []
scores = 0
lost = 0
lose = False
wave = 5
def redraw():
SCREEN.blit(BG, (0,0))
# Рендерим тут, так как scores не обновится
scores_font = pygame.font.SysFont('Roboto Mono', 40)
lost_font = pygame.font.Font(None, 30)
scores_render = scores_font.render(f'Scores: {scores}', True, 'black')
losts_render = lost_font.render(f'Пропущенно {lost}/10 шариков', True, 'red')
SCREEN.blit(scores_render,(10,10))
SCREEN.blit(losts_render,(WIDTH-losts_render.get_width()-10,15))
record_open = open('record.txt')
record_show = record_open.read().strip()
if scores > int(record_show):
record_write = open('record.txt', 'w')
record_write.write(str(scores))
record_render = scores_font.render(f'Record: {record_show}', True, 'Black')
SCREEN.blit(record_render,(10,scores_render.get_height() + 10))
for baloon in baloons:
baloon.draw(SCREEN)
mouse_x, mouse_y = pygame.mouse.get_pos()
SCREEN.blit(aim,(mouse_x-37 , mouse_y-35))
pygame.display.flip()
while run:
clock.tick(FPS)
redraw()
if len(baloons) == 0:
wave+= 2
for i in range(wave):
baloon = Baloons(random.randint(50,WIDTH - 100), random.randint(700,1500))
baloons.append(baloon)
mouse_x, mouse_y = pygame.mouse.get_pos()
for baloon in baloons:
# mouse[0] = x, mouse[1] = y.Бір біріне азайтамыз, коллизияны табу ушин
if baloon.rects.collidepoint(mouse_x - baloon.x,
mouse_y - baloon.y) and pygame.mouse.get_pressed()[0]:
baloons.remove(baloon)
scores += 10
if baloon.y < -100:
baloons.remove(baloon)
lost += 1
baloon.move(speed)
if lost >= 10:
run = False
continue
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
def main_menu():
run = True
while run:
SCREEN.blit(BG,(0,0))
start_font = pygame.font.SysFont('Raleway', 100)
start_render = start_font.render('Играть', True, 'Yellow')
SCREEN.blit(start_render,(WIDTH/2 - start_render.get_width() + 100, HEIGHT/2 - start_render.get_height()))
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == pygame.MOUSEBUTTONDOWN:
main()
pygame.display.flip()
main_menu()
Источник: Stack Overflow на русском