forked from 24_MokanGV/LABAn3
160 lines
6.0 KiB
Python
160 lines
6.0 KiB
Python
import pygame
|
||
from pygame.draw import *
|
||
|
||
pygame.init()
|
||
|
||
FPS = 30
|
||
screen = pygame.display.set_mode((400, 400))
|
||
|
||
# Используемые цвета
|
||
BLACK = (0, 0, 0)
|
||
WHITE = (255, 255, 255)
|
||
PINK = (255, 200, 200)
|
||
DARK_PINK = (255, 150, 150)
|
||
LIGHT_GREEN = (220, 255, 220)
|
||
BROWN = (180, 130, 80)
|
||
DARK_BROWN = (160, 110, 60)
|
||
|
||
# Определяем функции для рисования частей зайца
|
||
def draw_body(surface, x, y, width, height, color): # Функция рисует тело зайца
|
||
'''
|
||
Рисует тело зайца.
|
||
surface - объект pygame.Surface
|
||
x, y - координаты центра изображения
|
||
width, height - ширина и высота изображения
|
||
color - цвет, заданный в формате, подходящем для pygame.Color
|
||
'''
|
||
ellipse(surface, color, (x - width // 2, y - height // 2, width, height))
|
||
|
||
def draw_ear(surface, x, y, width, height, color): # Фуекция рисует уши
|
||
'''
|
||
Рисует ухо зайца.
|
||
surface - объект pygame.Surface
|
||
x, y - координаты центра изображения
|
||
width, height - ширина и высота изображения
|
||
color - цвет, заданный в формате, подходящем для pygame.Color
|
||
'''
|
||
ellipse(surface, color, (x - width // 2, y - height // 2, width, height))
|
||
|
||
|
||
def draw_head(surface, x, y, size, color): # Функция рисует голову
|
||
'''
|
||
Рисует голову зайца.
|
||
surface - объект pygame.Surface
|
||
x, y - координаты центра изображения
|
||
size - диаметр головы
|
||
color - цвет, заданный в формате, подходящем для pygame.Color
|
||
'''
|
||
circle(surface, color, (x, y), size // 2)
|
||
|
||
|
||
|
||
def draw_leg(surface, x, y, width, height, color): # Функци ярисует задние ноги
|
||
'''
|
||
Рисует ногу зайца.
|
||
surface - объект pygame.Surface
|
||
x, y - координаты центра изображения
|
||
width, height - ширина и высота изображения
|
||
color - цвет, заданный в формате, подходящем для pygame.Color
|
||
'''
|
||
ellipse(surface, color, (x - width // 2, y - height // 2, width, height))
|
||
|
||
|
||
def draw_eyes(surface, x, y, size):
|
||
'''
|
||
Рисует глаза зайца.
|
||
surface - объект pygame.Surface
|
||
x, y - координаты центра головы
|
||
size - размер головы
|
||
'''
|
||
eye_size = size // 8
|
||
# Белки глаз
|
||
circle(surface, WHITE, (x - size // 5, y - size // 8), eye_size // 1.5)
|
||
circle(surface, WHITE, (x + size // 5, y - size // 8), eye_size // 1.5)
|
||
# Зрачки
|
||
circle(surface, BLACK, (x - size // 5, y - size // 8), eye_size // 3)
|
||
circle(surface, BLACK, (x + size // 5, y - size // 8), eye_size // 3)
|
||
# Нос
|
||
circle(surface, DARK_PINK, (x, y + size // 10), eye_size // 2)
|
||
|
||
|
||
def draw_hare(surface, x, y, width, height, color):
|
||
'''
|
||
Рисует зайца на экране.
|
||
surface - объект pygame.Surface
|
||
x, y - координаты центра изображения
|
||
width, height - ширина и высота изображения
|
||
color - цвет, заданный в формате, подходящем для pygame.Color
|
||
'''
|
||
# Тело
|
||
body_width = width // 2
|
||
body_height = height // 2
|
||
body_y = y + body_height // 4
|
||
draw_body(surface, x, body_y, body_width, body_height, color)
|
||
|
||
# Голова_1 (рисуем первый раз, чтобы примерить на неё уши)
|
||
head_size = height // 3
|
||
draw_head(surface, x, y - head_size // 2, head_size, color)
|
||
|
||
# Уши (рисуем после головы, но до глаз)
|
||
ear_height = height // 3
|
||
ear_y = y - height // 2 + ear_height // 2
|
||
ear_width = width // 10
|
||
for ear_x in (x - head_size // 4, x + head_size // 4):
|
||
draw_ear(surface, ear_x, ear_y, ear_width, ear_height, color)
|
||
# Добавим внутреннюю часть уха (розовую)
|
||
draw_ear(surface, ear_x, ear_y + 3, ear_width // 2, ear_height // 1.5, PINK)
|
||
|
||
# Голова_2 (рисуем второй раз, чтобы закрыть часть ушей)
|
||
head_size = height // 3
|
||
draw_head(surface, x, y - head_size // 2, head_size, color)
|
||
|
||
|
||
# Глаза
|
||
draw_eyes(surface, x, y - head_size // 2, head_size)
|
||
|
||
# Задние лапы
|
||
back_leg_height = height // 10
|
||
back_leg_y = y + height // 3
|
||
back_leg_width = width // 3
|
||
for leg_x in (x - width // 5, x + width // 5):
|
||
draw_leg(surface, leg_x, back_leg_y, back_leg_width, back_leg_height, color)
|
||
|
||
# Передние лапы
|
||
front_leg_height = height // 4
|
||
front_leg_y = y + height // 12
|
||
front_leg_width = width // 7
|
||
|
||
# Левая передняя лапа
|
||
draw_leg(surface, x - width // 5, front_leg_y, front_leg_width, front_leg_height, color)
|
||
# Правая передняя лапа
|
||
draw_leg(surface, x + width // 5, front_leg_y, front_leg_width, front_leg_height, color)
|
||
|
||
# Маленькие лапки(передние лапы)
|
||
foot_color = DARK_BROWN
|
||
foot_width = front_leg_width // 1.2
|
||
foot_height = front_leg_height // 4
|
||
|
||
draw_leg(surface, x - width // 5, front_leg_y + front_leg_height // 1.8, foot_width, foot_height, foot_color)
|
||
draw_leg(surface, x + width // 5, front_leg_y + front_leg_height // 1.8, foot_width, foot_height, foot_color)
|
||
|
||
|
||
# Основная программа
|
||
# Очищаем экран светло-зеленым фоном (как травка)
|
||
screen.fill(LIGHT_GREEN)
|
||
|
||
# Рисуем зайца в центре экрана
|
||
draw_hare(screen, 200, 200, 240, 380, BROWN)
|
||
|
||
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()
|