import pygame
import math

# Инициализация Pygame
pygame.init()

# Настройки окна
win_width = 800
win_height = 600
game_window = pygame.display.set_mode((win_width, win_height))
pygame.display.set_caption("Rocket orbit")

# Цвета
black = (0, 0, 0)
white = (255, 255, 255)
blue = (0, 0, 255)
green = (0, 255, 0)
red = (255, 0, 0)
yellow = (255, 255, 0)

# Загрузка звуков
explosion_sound = pygame.mixer.Sound('explosion.wav')

# Настройки Земли
earth_radius = 100
earth_color = green
earth_pos = (win_width / 2, win_height / 2)
earth = pygame.image.load('earth.png')
earth_rect = earth.get_rect(center=(win_width / 2, win_height / 2))

# Начальные настройки ракеты
rocket_radius = 20
rocket_speed = 3
rocket_angle = -90
rocket_color = blue
rocket_x = win_width / 2 + earth_radius + 50
rocket_y = win_height / 2
rocket_direction = math.radians(rocket_angle)

# Настройки взрыва
explosion_max_size = 150
explosion_speed = 5
explosion_color = yellow
explosion_size = 1
explosion_counter = 0
collision = False

# Основной игровой цикл
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    # Очищаем экран
    game_window.fill(black)

    # Рисуем Землю
    game_window.blit(earth, earth_rect)
    # Рисуем ракету
    if rocket_y < win_height / 2 + earth_radius - rocket_radius:
        rocket_speed = 3
        rocket_angle -= 1
        rocket_direction = math.radians(rocket_angle)
        rocket_x = earth_pos[0] + math.cos(rocket_direction) * (earth_radius + 50)
        rocket_y = earth_pos[1] + math.sin(rocket_direction) * (earth_radius + 50)
        rocket_pos = (rocket_x - rocket_radius, rocket_y - rocket_radius)
        rocket_image = pygame.Surface((rocket_radius * 2, rocket_radius * 2), pygame.SRCALPHA)
        pygame.draw.circle(rocket_image, rocket_color, (rocket_radius, rocket_radius), rocket_radius)
        rotated_rocket = pygame.transform.rotate(rocket_image, rocket_angle)
        game_window.blit(rotated_rocket, rocket_pos)
    else:
        # Столкновение ракеты с Землей
        if not collision:
            collision = True
            explosion_sound.play()
        if explosion_size < explosion_max_size:
            explosion_size += 3
            explosion = pygame.Surface((explosion_size, explosion_size), pygame.SRCALPHA)
            pygame.draw.circle(explosion, yellow, (explosion_size // 2, explosion_size // 2), explosion_size // 2)
            explosion_rect = explosion.get_rect(center=(rocket_x, rocket_y))
            game_window.blit(explosion, explosion_rect)
        else:
            # Удаляем ракету после взрыва
            rocket_x = earth_pos[0] + earth_radius + 50
            rocket_y = earth_pos[1]
            explosion_size = 1
            collision = False
            
    # Обновляем экран
    pygame.display.update()

pygame.quit()