From 4d79e57dfdb4ec4a017d5cd10777f4dce8d021c9 Mon Sep 17 00:00:00 2001 From: vlitvintseva <24_LitvintsevaVD@iux.local> Date: Tue, 17 Mar 2026 18:55:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=BC=D0=B8=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- draw1.py | 37 ++++++++++++++++ draw2.py | 82 ++++++++++++++++++++++++++++++++++++ e.py | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 244 insertions(+) create mode 100755 draw1.py create mode 100755 draw2.py create mode 100755 e.py diff --git a/draw1.py b/draw1.py new file mode 100755 index 0000000..37652f2 --- /dev/null +++ b/draw1.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +import pygame +from pygame.draw import * + +pygame.init() +FPS = 30 +screen = pygame.display.set_mode((800, 500)) + +def pezag(screen): + # Небо + rect(screen, (230, 200, 160), (0, 0, 800, 500)) + # дальний фон + rect(screen, (240, 210, 190), (0, 200, 800, 80)) + # солнце + circle(screen, (255, 230, 0), (400, 150), 60) + # горы задний план + polygon(screen, (250, 150, 50), [(0,250), (200,120), (350,260), (600,130), (800,250)]) + # средний слой + polygon(screen, (180, 70, 50), [(0,350), (150,300), (250,360), (400,310), (600,370), (800,320), (800,500), (0,500)]) + # передний слой + rect(screen, (170, 130, 140), (0, 380, 800, 120)) + +# Вызов функции отрисовки +pezag(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() diff --git a/draw2.py b/draw2.py new file mode 100755 index 0000000..d35e605 --- /dev/null +++ b/draw2.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 + +import pygame +from pygame.draw import * + +pygame.init() +FPS = 30 +screen = pygame.display.set_mode((800, 500)) + +def draw_landscape(screen): + # 1. Общий фон неба + screen.fill((255, 220, 180)) + + # 2. Солнце + circle(screen, (255, 240, 0), (450, 135), 55) + + # 3. Светло-розовая полоса неба + rect(screen, (255, 205, 215), (0, 150, 800, 110)) + + # 4. ЗАДНИЙ ХРЕБЕТ (с мелкими деталями) + # Здесь добавлено больше "зубцов", чтобы форма была ломаной + back_mountain_points = [ + (-50, 280), (10, 260), (100, 190), (180, 130), (230, 170), + (280, 210), (380, 230), (460, 205), (510, 215), (560, 140), + (650, 100), (710, 140), (780, 180), (850, 150), (850, 280) + ] + polygon(screen, (245, 155, 65), back_mountain_points) + + # 5. Светло-оранжевая полоса ("облака" под задним хребтом) + rect(screen, (255, 215, 160), (0, 260, 800, 45)) + + # 6. НИЖНИЙ ХРЕБЕТ (тёмно-оранжевый/коричневый) + # Делаем форму более рваной и агрессивной + middle_mountain_points = [ + (-10, 420), (50, 310), (140, 430), (220, 300), (260, 350), + (310, 290), (400, 380), (450, 340), (530, 280), (620, 260), + (730, 360), (780, 290), (820, 350), (820, 420) + ] + polygon(screen, (175, 75, 55), middle_mountain_points) + + # 7. Вода (нижняя часть) + rect(screen, (165, 135, 150), (0, 420, 800, 80)) + + # 8. ПЕРЕДНИЙ ПЛАН (самые тёмные скалы) + dark_color = (45, 25, 45) + + # Левая скала с изломами + left_cliff = [(-10, 330), (20, 340), (110, 370), (160, 450), (210, 510), (-10, 510)] + polygon(screen, dark_color, left_cliff) + + # Правая скала с изломами + right_cliff = [(810, 380), (750, 420), (690, 470), (730, 510), (810, 510)] + polygon(screen, dark_color, right_cliff) + + # 9. Птицы (в форме галочек V) + def draw_bird(x, y, size): + # Рисуем две линии для каждого крыла + lines(screen, (50, 30, 20), False, [(x, y), (x + size//2, y + size//4), (x + size, y - size//4)], 3) + + # Группа птиц в центре + birds = [(350, 215, 18), (440, 230, 16), (460, 260, 14), (370, 280, 20)] + for b in birds: + draw_bird(b[0], b[1], b[2]) + + # Птицы на воде (отражения) + draw_bird(580, 430, 15) + draw_bird(650, 460, 12) + +# Основной цикл +draw_landscape(screen) +pygame.display.update() + +finished = False +clock = pygame.time.Clock() + +while not finished: + clock.tick(FPS) + for event in pygame.event.get(): + if event.type == pygame.QUIT: + finished = True + +pygame.quit() diff --git a/e.py b/e.py new file mode 100755 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()