forked from 24_LitvintsevaVD/YP_2026_litvintseva
Первый коммит
This commit is contained in:
37
draw1.py
Executable file
37
draw1.py
Executable file
@@ -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()
|
||||||
82
draw2.py
Executable file
82
draw2.py
Executable file
@@ -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()
|
||||||
125
e.py
Executable file
125
e.py
Executable file
@@ -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()
|
||||||
Reference in New Issue
Block a user