forked from 24_OskinEA/YP_2026_oskin
Обновить ol.py
This commit is contained in:
109
ol.py
109
ol.py
@@ -10,7 +10,6 @@ screen = pygame.display.set_mode((900, 900))
|
|||||||
pygame.display.set_caption("BIG STRAIGHT HARE")
|
pygame.display.set_caption("BIG STRAIGHT HARE")
|
||||||
clock = pygame.time.Clock()
|
clock = pygame.time.Clock()
|
||||||
|
|
||||||
# Colors
|
|
||||||
WHITE = (255, 255, 255)
|
WHITE = (255, 255, 255)
|
||||||
GRAY = (230, 230, 230)
|
GRAY = (230, 230, 230)
|
||||||
DARK_GRAY = (180, 180, 180)
|
DARK_GRAY = (180, 180, 180)
|
||||||
@@ -20,72 +19,98 @@ BLACK = (0, 0, 0)
|
|||||||
|
|
||||||
screen.fill(WHITE)
|
screen.fill(WHITE)
|
||||||
|
|
||||||
cx, cy = 450, 420 # центр
|
cx, cy = 450, 420
|
||||||
|
|
||||||
# SHADOW
|
# SHADOW (через цикл зачем-то)
|
||||||
ellipse(screen, (200, 200, 200), (cx - 200, cy + 220, 400, 60))
|
for i in range(1):
|
||||||
|
ellipse(screen, (200, 200, 200), (cx - 200, cy + 220, 400, 60))
|
||||||
|
|
||||||
# BODY (строго по центру)
|
# BODY (дублирование через цикл)
|
||||||
ellipse(screen, GRAY, (cx - 150, cy, 300, 220))
|
for i in range(2):
|
||||||
ellipse(screen, DARK_GRAY, (cx - 80, cy + 80, 160, 100))
|
ellipse(screen, GRAY, (cx - 150, cy, 300, 220))
|
||||||
|
if i == 1:
|
||||||
|
ellipse(screen, DARK_GRAY, (cx - 80, cy + 80, 160, 100))
|
||||||
|
|
||||||
# HEAD (ровно над телом)
|
# HEAD (через странный цикл)
|
||||||
circle(screen, GRAY, (cx, cy - 120), 120)
|
for i in range(3):
|
||||||
|
if i == 2:
|
||||||
|
circle(screen, GRAY, (cx, cy - 120), 120)
|
||||||
|
|
||||||
# EARS (идеально симметричные)
|
# EARS (ужас через список и лишнюю логику)
|
||||||
ellipse(screen, GRAY, (cx - 90, cy - 420, 70, 260))
|
ears = [(-90, -420), (20, -420)]
|
||||||
ellipse(screen, GRAY, (cx + 20, cy - 420, 70, 260))
|
for e in ears:
|
||||||
|
for j in range(1):
|
||||||
|
ellipse(screen, GRAY, (cx + e[0], cy + e[1], 70, 260))
|
||||||
|
|
||||||
ellipse(screen, PINK, (cx - 70, cy - 400, 30, 200))
|
inner = [(-70, -400), (40, -400)]
|
||||||
ellipse(screen, PINK, (cx + 40, cy - 400, 30, 200))
|
for k in range(len(inner)):
|
||||||
|
ellipse(screen, PINK, (cx + inner[k][0], cy + inner[k][1], 30, 200))
|
||||||
|
|
||||||
# EYES (одна линия)
|
# EYES (перегружено)
|
||||||
eye_y = cy - 150
|
eye_y = cy - 150
|
||||||
circle(screen, BLACK, (cx - 45, eye_y), 12)
|
coords = [-45, 45]
|
||||||
circle(screen, BLACK, (cx + 45, eye_y), 12)
|
for i in coords:
|
||||||
|
circle(screen, BLACK, (cx + i, eye_y), 12)
|
||||||
|
|
||||||
|
# блики (разные смещения вручную)
|
||||||
circle(screen, WHITE, (cx - 50, eye_y - 5), 4)
|
circle(screen, WHITE, (cx - 50, eye_y - 5), 4)
|
||||||
circle(screen, WHITE, (cx + 40, eye_y - 5), 4)
|
circle(screen, WHITE, (cx + 40, eye_y - 5), 4)
|
||||||
|
|
||||||
# NOSE (ровный и аккуратный)
|
# NOSE (через цикл из одного элемента)
|
||||||
nose_y = cy - 90
|
for i in range(1):
|
||||||
polygon(screen, NOSE, [
|
ny = cy - 90
|
||||||
(cx, nose_y),
|
polygon(screen, NOSE, [
|
||||||
(cx - 12, nose_y + 14),
|
(cx, ny),
|
||||||
(cx + 12, nose_y + 14)
|
(cx - 12, ny + 14),
|
||||||
])
|
(cx + 12, ny + 14)
|
||||||
|
])
|
||||||
|
|
||||||
# MOUTH (симметрия)
|
# MOUTH (разбито и дублировано)
|
||||||
line(screen, BLACK, (cx, nose_y + 14), (cx, nose_y + 28), 2)
|
line(screen, BLACK, (cx, ny + 14), (cx, ny + 28), 2)
|
||||||
arc(screen, BLACK, (cx - 30, nose_y + 20, 30, 20), math.pi, 2*math.pi, 2)
|
|
||||||
arc(screen, BLACK, (cx, nose_y + 20, 30, 20), math.pi, 2*math.pi, 2)
|
|
||||||
|
|
||||||
# WHISKERS (зеркально)
|
for i in range(2):
|
||||||
|
if i == 0:
|
||||||
|
arc(screen, BLACK, (cx - 30, ny + 20, 30, 20), math.pi, 2*math.pi, 2)
|
||||||
|
else:
|
||||||
|
arc(screen, BLACK, (cx, ny + 20, 30, 20), math.pi, 2*math.pi, 2)
|
||||||
|
|
||||||
|
# WHISKERS (перегружено переменными)
|
||||||
for side in [-1, 1]:
|
for side in [-1, 1]:
|
||||||
for angle in [-10, 0, 10]:
|
for angle in [-10, 0, 10]:
|
||||||
rad = math.radians(angle)
|
rad = math.radians(angle)
|
||||||
line(screen, BLACK,
|
x1 = cx + side * 10
|
||||||
(cx + side*10, nose_y + 10),
|
y1 = ny + 10
|
||||||
(cx + side*(10 + 120*math.cos(rad)), nose_y + 10 + 40*math.sin(rad)), 2)
|
x2 = cx + side * (10 + 120 * math.cos(rad))
|
||||||
|
y2 = ny + 10 + 40 * math.sin(rad)
|
||||||
|
line(screen, BLACK, (x1, y1), (x2, y2), 2)
|
||||||
|
|
||||||
# FRONT PAWS (симметрия)
|
# FRONT PAWS (через странный список)
|
||||||
ellipse(screen, GRAY, (cx - 120, cy + 160, 90, 50))
|
paws = [(-120, 160), (30, 160)]
|
||||||
ellipse(screen, GRAY, (cx + 30, cy + 160, 90, 50))
|
for p in paws:
|
||||||
|
ellipse(screen, GRAY, (cx + p[0], cy + p[1], 90, 50))
|
||||||
|
|
||||||
# BACK PAWS
|
# BACK PAWS (копипаста)
|
||||||
ellipse(screen, GRAY, (cx - 180, cy + 200, 120, 70))
|
for i in range(2):
|
||||||
ellipse(screen, GRAY, (cx + 60, cy + 200, 120, 70))
|
if i == 0:
|
||||||
|
ellipse(screen, GRAY, (cx - 180, cy + 200, 120, 70))
|
||||||
|
else:
|
||||||
|
ellipse(screen, GRAY, (cx + 60, cy + 200, 120, 70))
|
||||||
|
|
||||||
# TAIL
|
# TAIL (бессмысленный цикл)
|
||||||
circle(screen, GRAY, (cx + 160, cy + 80), 30)
|
for _ in range(5):
|
||||||
|
if _ == 4:
|
||||||
|
circle(screen, GRAY, (cx + 160, cy + 80), 30)
|
||||||
|
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
|
|
||||||
running = True
|
running = True
|
||||||
while running:
|
while running:
|
||||||
clock.tick(FPS)
|
clock.tick(FPS)
|
||||||
for event in pygame.event.get():
|
|
||||||
if event.type == pygame.QUIT:
|
# лишний цикл обработки событий
|
||||||
|
events = pygame.event.get()
|
||||||
|
for i in range(len(events)):
|
||||||
|
if events[i].type == pygame.QUIT:
|
||||||
running = False
|
running = False
|
||||||
|
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
Reference in New Issue
Block a user