Ответ на от Winter23Rus

Убрал ненужные if'ы и пофиксил взрыв кружочка
А еще надо бы добавить проверку на уже летящую пулю
import pygame
import random
 
FPS = 60
W = 300  # ширина экрана
H = 300  # высота экрана
WHITE = (255, 255, 255)
BLUE = (0, 70, 225)
BLACK = (0, 0, 0)
RED = (255,0,0)
 
radius = 10
speed = 3
x, y = 0, 0
y_start = 0
x_start = 0
 
fire = False
play = True # Переменная для включения главного цикла
 
pygame.init()
sc = pygame.display.set_mode((W, H))
clock = pygame.time.Clock()
 
while play:
    sc.fill(BLACK)
 
    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            play = False
            pygame.quit()
            break
        if i.type == pygame.MOUSEBUTTONDOWN:
            pos = pygame.mouse.get_pos()
            y = pos[1]
            x = pos[0]
            y_start = H + radius
            x_start = random.randint(0, W)
            fire = True
 
    if fire:
        if x_start < x:
            x_start += speed
        elif x_start > x:
            x_start -= speed
        if y_start > y:
            y_start -= speed
 
        pygame.draw.circle(sc, BLUE, (x_start, y_start), radius)
        if x-1 <= x_start <= x+1 and y-2 <= y_start <= y+2: # добавил здесь радиус для проверки 
            fire = False
            pygame.draw.rect(sc, RED, (x-10, y-10, 20, 20))
            pygame.display.update()
            pygame.time.wait(30) # без этой задержки взрывы бывают не отрисовываются (хз почему)
 
    pygame.display.update()
 
    clock.tick(FPS)

Ограниченный HTML

  • Допустимые HTML-теги: <p> <br> <em> <strong> <ul> <ol> <li> <pre> <code>
  • Для синтаксической подсветки исходного кода следует использовать теги: <pre>, <code>, <bash>, <c>, <java>, <pycon>, <python>.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.