import pygame import sys import math pygame.init() # Настройки экрана WIDTH, HEIGHT = 1200, 800 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Горный пейзаж") # Цвета SKY = (255, 200, 125) # небо SUN = (255, 255, 0) # солнце BEIGE = (245, 220, 200) # полоса MOUNTAINS_FAR = (255, 100, 0) # дальние горы MOUNTAINS_NEAR = (150, 0, 0) # ближние горы GROUND = (200, 100, 200) # земля def rotate_point(point, center, angle_deg): """Поворачивает точку относительно центра по часовой стрелке""" angle_rad = math.radians(angle_deg) x, y = point cx, cy = center x -= cx y -= cy x_rotated = x * math.cos(angle_rad) + y * math.sin(angle_rad) y_rotated = -x * math.sin(angle_rad) + y * math.cos(angle_rad) return (x_rotated + cx, y_rotated + cy) def draw_mountain_rotated(surface, color, points, center, angle): """Рисует повёрнутую гору""" rotated_points = [rotate_point(p, center, angle) for p in points] pygame.draw.polygon(surface, color, rotated_points) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill(SKY) pygame.draw.rect(screen, BEIGE, (0, 120, WIDTH, 200)) pygame.draw.circle(screen, SUN, (WIDTH//2, 80), 50) rotate_center = (WIDTH//3, 300) far_mountains_points = [ (-100, 520), (0, 420), (100, 440), (200, 400), (300, 430), (400, 390), (500, 420), (600, 380), (700, 410), (800, 370), (900, 400), (1000, 360), (1100, 390), (1200, 350), (1300, 380), (1400, 340), (1500, 420), (1600, 520) ] draw_mountain_rotated(screen, MOUNTAINS_FAR, far_mountains_points, rotate_center, 10) pygame.draw.polygon(screen, MOUNTAINS_NEAR, [(-200, HEIGHT-150), (-50, 590), (100, 630), (250, 570), (400, 610), (550, 550), (700, 590), (850, 530), (1000, 570), (1150, 510), (1300, 550), (1450, 490), (1600, 530), (1750, 450), (1900, HEIGHT-170)]) pygame.draw.rect(screen, GROUND, (0, HEIGHT-165, WIDTH, 1000)) pygame.display.flip() pygame.quit() sys.exit()