From b1d681cd96afbf3e8cff335341718de8da9521a1 Mon Sep 17 00:00:00 2001 From: 24_OskinEA <24_OskinEA@iux.local> Date: Wed, 18 Mar 2026 10:44:44 +0300 Subject: [PATCH] 1 --- e.py | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 e.py diff --git a/e.py b/e.py new file mode 100644 index 0000000..34c8a0b --- /dev/null +++ b/e.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 + +import pygame +from pygame.draw import * + +pygame.init() +FPS = 30 +# Устанавливаем размер окна как на референсе +screen = pygame.display.set_mode((800, 400)) + +def draw_scenery(screen): + # --- Небо (Теплые цвета, как на референсе) --- + # Мы используем несколько перекрывающихся прямоугольников с альфа-смешиванием (прозрачностью) + # для достижения мягкого градиентного эффекта. + + # Создаем поверхность для неба с поддержкой прозрачности + sky_surface = pygame.Surface((800, 400), pygame.SRCALPHA) + + # 1. Основной, самый светлый оранжевый/желтый фон + sky_base_color = (255, 220, 180) + rect(sky_surface, sky_base_color, (0, 0, 800, 400)) + + # 2. Мягкая розовая полоса + pink_band_color = (255, 190, 210, 80) # Добавлено альфа-значение 80 для прозрачности + rect(sky_surface, pink_band_color, (0, 100, 800, 100)) + + # 3. Мягкая оранжевая полоса + orange_band_color = (255, 170, 110, 60) # Усиленная прозрачность + rect(sky_surface, orange_band_color, (0, 200, 800, 100)) + + # Отрисовываем небо на основном экране + screen.blit(sky_surface, (0, 0)) + + # --- Солнце (Ярко-желтый круг, как на референсе) --- + sun_color = (255, 240, 0) + # Смещаем немного вправо для композиции + sun_center = (450, 110) + sun_radius = 50 + circle(screen, sun_color, sun_center, sun_radius) + + # --- Дальний хребет (Светло-оранжевый, СЛОЖНАЯ ФОРМА) --- + # В этом массиве точек добавлено много промежуточных значений x и y, + # чтобы создать зубчатый, ломаный силуэт, как на твоем референсе. + distant_ridge_points = [ + (-10, 210), (50, 180), (120, 220), (180, 150), + (250, 200), (320, 160), (380, 200), (450, 140), + (520, 180), (600, 90), (680, 170), (750, 130), + (810, 160), + (810, 250), # Правый нижний угол + (-10, 250) # Левый нижний угол + ] + distant_ridge_color = (255, 150, 50) + polygon(screen, distant_ridge_color, distant_ridge_points) + + # --- Средний хребет (Темно-красный/коричневый, СЛОЖНАЯ ФОРМА) --- + # Этот хребет имеет свои уникальные зубцы и выемки, + # отличные от первого, чтобы добавить глубины. + middle_ridge_points = [ + (-10, 240), (70, 200), (140, 240), (200, 180), + (280, 240), (350, 200), (420, 240), (480, 170), + (560, 220), (630, 160), (700, 210), (760, 180), + (810, 210), + (810, 350), # Правый нижний угол + (-10, 350) # Левый нижний угол + ] + middle_ridge_color = (170, 70, 60) + polygon(screen, middle_ridge_color, middle_ridge_points) + + # --- Поверхность воды (Как на референсе) --- + water_color = (190, 160, 170) + water_rect = (0, 340, 800, 60) + rect(screen, water_color, water_rect) + + # --- Передний план (Темные силуэты, УГЛОВАТАЯ ФОРМА) --- + # Мы используем сложные полигоны, чтобы они выглядели как обрывистые скалы, + # а не просто блоки. + foreground_color = (50, 20, 50) # Очень темно-фиолетовый/черный + + # Левый силуэт + left_foreground_points = [(-10, 260), (120, 310), (120, 410), (-10, 410)] + polygon(screen, foreground_color, left_foreground_points) + + # Правый силуэт + right_foreground_points = [(810, 270), (700, 340), (700, 410), (810, 410)] + polygon(screen, foreground_color, right_foreground_points) + + # --- Птицы (Как на референсе) --- + def draw_bird(screen, color, center, scale=1.0): + # Аппроксимация формы "V" двумя слегка изогнутыми линиями + x, y = center + width = 15 * scale + height = 8 * scale + # Левое крыло + arc(screen, color, (x - width, y - height / 2, width * 2, height), 3.14159/4, 3.14159 * 0.9, 2) + # Правое крыло + arc(screen, color, (x - width / 2, y - height / 2, width * 2, height), 3.14159 * 0.1, 3.14159 * 0.75, 2) + + bird_color = (80, 50, 40) # Темно-коричневый + + # Птицы в небе (разного размера для перспективы) + draw_bird(screen, bird_color, (380, 180), 1.2) + draw_bird(screen, bird_color, (450, 190), 1.0) + draw_bird(screen, bird_color, (480, 210), 0.9) + draw_bird(screen, bird_color, (400, 230), 1.1) + + # Птицы в воде (отражения, более размытые и тусклые) + water_bird_color = (100, 80, 70) + draw_bird(screen, water_bird_color, (600, 340), 1.0) + draw_bird(screen, water_bird_color, (670, 380), 0.8) + draw_bird(screen, water_bird_color, (750, 370), 0.9) + +# Вызов функции отрисовки +draw_scenery(screen) + +pygame.display.update() +clock = pygame.time.Clock() +finished = False + +while not finished: + clock.tick(FPS) + for event in pygame.event.get(): + if event.type == pygame.QUIT: + finished = True + +pygame.quit()