import pygame # Инициализация pygame.init() # Размеры окна WIDTH, HEIGHT = 800, 500 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Северный пейзаж (По образцу)") # --- Цвета --- WHITE = (255, 255, 255) BLACK = (0, 0, 0) SKY_GRAY = (220, 220, 220) # Небо SNOW_WHITE = (255, 255, 255) # Снег COAT_BROWN = (90, 70, 50) # Темно-коричневая шуба STRIP_BROWN = (60, 40, 30) # Полоски HOOD_COLOR = (245, 245, 245) # Капюшон SKIN_COLOR = (230, 215, 200) # Лицо CAT_GRAY = (150, 150, 150) # Серый кот FISH_BLUE = (80, 100, 180) FISH_RED = (200, 50, 50) PI = 3.14 def draw_igloo(surface, x, y): radius = 160 # 1. Основной купол (белый) pygame.draw.circle(surface, WHITE, (x, y), radius) # Срезаем низ прямоугольником снега pygame.draw.rect(surface, SNOW_WHITE, (x - radius, y, radius * 2, radius)) # 2. Контур rect = (x - radius, y - radius, radius * 2, radius * 2) pygame.draw.arc(surface, BLACK, rect, 0, PI, 2) # 3. Сетка линий # Горизонтальные дуги pygame.draw.arc(surface, BLACK, (x - radius + 30, y - radius + 50, (radius - 30)*2, (radius - 50)*2), 0, PI, 1) pygame.draw.arc(surface, BLACK, (x - radius + 10, y - radius + 100, (radius - 10)*2, (radius - 100)*2), 0, PI, 1) # Вертикальная линия по центру pygame.draw.line(surface, BLACK, (x, y - radius), (x, y), 1) # Боковые линии (дугами) pygame.draw.arc(surface, BLACK, (x - 100, y - radius, 80, radius*2), PI/2, PI, 1) pygame.draw.arc(surface, BLACK, (x, y - radius, 80, radius*2), 0, PI/2, 1) def draw_chukcha(surface, x, y): # x, y - координаты низа шубы # 1. Палка (тонкая линия слева) pygame.draw.line(surface, BLACK, (x - 70, y - 10), (x - 70, y - 150), 2) # 2. Ноги (Вертикальные овалы ПОД телом) # Сделаем их темными pygame.draw.ellipse(surface, STRIP_BROWN, (x - 25, y, 20, 35)) # Левая pygame.draw.ellipse(surface, STRIP_BROWN, (x + 5, y, 20, 35)) # Правая # 3. Тело (Трапеция) # Делаем тело чуть выше, чтобы голова поднялась body_height = 70 body_points = [ (x - 30, y - body_height), # Плечи лево (x + 30, y - body_height), # Плечи право (x + 55, y), # Низ право (x - 55, y) # Низ лево ] pygame.draw.polygon(surface, COAT_BROWN, body_points) # Полоски pygame.draw.rect(surface, STRIP_BROWN, (x - 55, y - 10, 110, 10)) # Низ pygame.draw.rect(surface, STRIP_BROWN, (x - 5, y - body_height, 10, body_height)) # Центр # 4. Руки (Овалы по бокам) pygame.draw.ellipse(surface, COAT_BROWN, (x - 75, y - 50, 40, 20)) # Левая pygame.draw.ellipse(surface, COAT_BROWN, (x + 35, y - 50, 40, 20)) # Правая # 5. Голова # Центр головы выше плеч head_y = y - body_height - 15 # Капюшон (белый круг) pygame.draw.circle(surface, HOOD_COLOR, (x, head_y), 38) # Лицо (бежевое) pygame.draw.circle(surface, SKIN_COLOR, (x, head_y), 24) # ЛИЦО # Глаза (прищуренные палочки \ /), ПОДНЯТЫ ВЫШЕ eye_y = head_y - 5 pygame.draw.line(surface, BLACK, (x - 20, eye_y - 3), (x - 4, eye_y + 3), 2) pygame.draw.line(surface, BLACK, (x + 4, eye_y + 3), (x + 20, eye_y - 3), 2) # Рот (дуга вниз), ОПУЩЕН НИЖЕ (чтобы не касался глаз) mouth_y = head_y + 10 pygame.draw.arc(surface, BLACK, (x - 8, mouth_y, 23, 16), 0, PI, 3) def draw_cat(surface, x, y): # Координаты x, y - центр тела # Хвост (толстый, справа) pygame.draw.ellipse(surface, CAT_GRAY, (x + 40, y - 5, 60, 20)) # Лапки (СНИЗУ, вертикальные маленькие овалы) # Задние pygame.draw.ellipse(surface, CAT_GRAY, (x + 20, y + 15, 12, 30)) pygame.draw.ellipse(surface, CAT_GRAY, (x + 35, y + 15, 12, 30)) # Передние pygame.draw.ellipse(surface, CAT_GRAY, (x - 10, y + 15, 12, 30)) pygame.draw.ellipse(surface, CAT_GRAY, (x - 25, y + 15, 12, 30)) # Туловище (Овал) pygame.draw.ellipse(surface, CAT_GRAY, (x - 30, y - 10, 90, 40)) # Голова (Круг слева) pygame.draw.circle(surface, CAT_GRAY, (x - 35, y + 5), 22) # Уши pygame.draw.polygon(surface, CAT_GRAY, [(x - 45, y - 10), (x - 50, y - 20), (x - 35, y - 15)]) pygame.draw.polygon(surface, CAT_GRAY, [(x - 25, y - 15), (x - 20, y - 20), (x - 15, y - 10)]) # Глаза (Белые круги + точки) pygame.draw.circle(surface, WHITE, (x - 42, y + 2), 5) pygame.draw.circle(surface, BLACK, (x - 42, y + 2), 2) pygame.draw.circle(surface, WHITE, (x - 28, y + 2), 5) pygame.draw.circle(surface, BLACK, (x - 28, y + 2), 2) # Рыба fx, fy = x - 55, y + 15 pygame.draw.ellipse(surface, FISH_BLUE, (fx, fy, 30, 12)) pygame.draw.polygon(surface, FISH_RED, [(fx, fy + 6), (fx - 8, fy), (fx - 8, fy + 12)]) # --- Запуск --- running = True clock = pygame.time.Clock() while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # Фон (горизонт посередине иглу) horizon = 220 pygame.draw.rect(screen, SKY_GRAY, (0, 0, WIDTH, horizon)) pygame.draw.rect(screen, SNOW_WHITE, (0, horizon, WIDTH, HEIGHT - horizon)) # Иглу draw_igloo(screen, 320, horizon) # Чукча (справа, висит в воздухе чуть выше низа экрана, как на рисунке) draw_chukcha(screen, 650, 350) # Кот (слева внизу) draw_cat(screen, 180, 400) pygame.display.flip() clock.tick(60) pygame.quit()