Поздравляем кого-то с днем рождения, используя питон
Иногда у кого-нибудь день рождения, и ты хочешь ее/его поздравить, но не знаешь как. Но ты знаешь, что хочешь сделать что-то своими руками. Можно, конечно чего-нибудь придумать с ардуино, но часто просто лень. Может быть, можно сделать какую-нибудь простую анимацию? Да, и в стандартной библиотеке есть модуль turtle.
Исходная идея не моя, взял тут. Торт хороший, мне очень нравится, но, разумеется, надо добавить что-то свое, попробую нарисовать солнышко:
1# -*- coding: utf-8 -*- 2import turtle 3import time 4 5# set the background color for the page 6bg = turtle.Screen() 7bg.bgcolor("light blue") 8 9 10my_turtle = turtle.Turtle() 11my_turtle.shape("turtle") 12my_turtle.speed(1) 13 14# draw sun 15my_turtle.color("yellow") 16my_turtle.pensize(3) 17my_turtle.penup() 18my_turtle.setposition(150, 150) 19my_turtle.begin_fill() 20my_turtle.pendown() 21my_turtle.circle(50) 22my_turtle.end_fill() 23 24# draw rays 25my_turtle.penup() 26my_turtle.goto(150, 140) 27my_turtle.pendown() 28my_turtle.goto(150, 130) 29 30my_turtle.penup() 31my_turtle.goto(150, 260) 32my_turtle.pendown() 33my_turtle.goto(150, 270) 34 35my_turtle.penup() 36my_turtle.goto(210, 200) 37my_turtle.pendown() 38my_turtle.goto(220, 200) 39 40my_turtle.penup() 41my_turtle.goto(90, 200) 42my_turtle.pendown() 43my_turtle.goto(80, 200) 44 45# I quad 46my_turtle.penup() 47my_turtle.goto(185+7, 165-7) 48my_turtle.pendown() 49my_turtle.goto(185+14, 165-14) 50 51# II quad 52my_turtle.penup() 53my_turtle.goto(185+7, 235+7) 54my_turtle.pendown() 55my_turtle.goto(185+14, 235+14) 56 57# III quad 58my_turtle.penup() 59my_turtle.goto(115-7, 235+7) 60my_turtle.pendown() 61my_turtle.goto(115-14, 235+14) 62 63# IV quad 64my_turtle.penup() 65my_turtle.goto(115-7, 165-7) 66my_turtle.pendown() 67my_turtle.goto(115-14, 165-14)
На строке 12 задается скорость отрисовки, можете поиграть с этим параметром. Стр. 15-22 - отрисовка самого тела солнца. Потом стр. 25-43 я рисую сначала перпендикулярные лучи, а потом строки 46-67 - четыре диагональные луча. Ну а потом, просто добавлю отрисовку торта, в итоге получилось:
1# -*- coding: utf-8 -*- 2import turtle 3import time 4 5# set the background color for the page 6bg = turtle.Screen() 7bg.bgcolor("light blue") 8 9 10my_turtle = turtle.Turtle() 11my_turtle.shape("turtle") 12my_turtle.speed(1) 13 14# draw sun 15my_turtle.color("yellow") 16my_turtle.pensize(3) 17my_turtle.penup() 18my_turtle.setposition(150, 150) 19my_turtle.begin_fill() 20my_turtle.pendown() 21my_turtle.circle(50) 22my_turtle.end_fill() 23 24# draw rays 25my_turtle.penup() 26my_turtle.goto(150, 140) 27my_turtle.pendown() 28my_turtle.goto(150, 130) 29 30my_turtle.penup() 31my_turtle.goto(150, 260) 32my_turtle.pendown() 33my_turtle.goto(150, 270) 34 35my_turtle.penup() 36my_turtle.goto(210, 200) 37my_turtle.pendown() 38my_turtle.goto(220, 200) 39 40my_turtle.penup() 41my_turtle.goto(90, 200) 42my_turtle.pendown() 43my_turtle.goto(80, 200) 44 45# I quad 46my_turtle.penup() 47my_turtle.goto(185+7, 165-7) 48my_turtle.pendown() 49my_turtle.goto(185+14, 165-14) 50 51# II quad 52my_turtle.penup() 53my_turtle.goto(185+7, 235+7) 54my_turtle.pendown() 55my_turtle.goto(185+14, 235+14) 56 57# III quad 58my_turtle.penup() 59my_turtle.goto(115-7, 235+7) 60my_turtle.pendown() 61my_turtle.goto(115-14, 235+14) 62 63# IV quad 64my_turtle.penup() 65my_turtle.goto(115-7, 165-7) 66my_turtle.pendown() 67my_turtle.goto(115-14, 165-14) 68 69shift = 90 70# draw lines 71my_turtle.penup() 72my_turtle.goto(-190, -180-shift) 73my_turtle.color("yellow") 74my_turtle.pensize(6) 75my_turtle.pendown() 76my_turtle.goto(190, -180-shift) 77 78my_turtle.penup() 79my_turtle.goto(-160, -150-shift) 80my_turtle.color("purple") 81my_turtle.pensize(6) 82my_turtle.pendown() 83my_turtle.goto(160, -150-shift) 84 85my_turtle.penup() 86my_turtle.goto(-130, -120-shift) 87my_turtle.color("teal") 88my_turtle.pensize(6) 89my_turtle.pendown() 90my_turtle.goto(130, -120-shift) 91 92# draw cake 93my_turtle.penup() 94my_turtle.goto(-74, -110-shift) 95my_turtle.pendown() 96my_turtle.color("white") 97my_turtle.goto(50, -110-shift) 98my_turtle.left(90) 99my_turtle.forward(60) 100my_turtle.left(90) 101my_turtle.forward(125) 102my_turtle.left(90) 103my_turtle.forward(60) 104 105# draw candles 106my_turtle.penup() 107my_turtle.goto(-60, -40-shift) 108my_turtle.color("aquamarine") 109my_turtle.pendown() 110my_turtle.pensize(3) 111my_turtle.goto(-60, -20-shift) 112 113my_turtle.penup() 114my_turtle.goto(-40, -40-shift) 115my_turtle.color("yellow") 116my_turtle.pendown() 117my_turtle.pensize(3) 118my_turtle.goto(-40, -20-shift) 119 120my_turtle.penup() 121my_turtle.goto(-20, -40-shift) 122my_turtle.color("green") 123my_turtle.pendown() 124my_turtle.pensize(3) 125my_turtle.goto(-20, -20-shift) 126 127my_turtle.penup() 128my_turtle.goto(0, -40-shift) 129my_turtle.color("pink") 130my_turtle.pendown() 131my_turtle.pensize(3) 132my_turtle.goto(0, -20-shift) 133 134my_turtle.penup() 135my_turtle.goto(20, -40-shift) 136my_turtle.color("blue") 137my_turtle.pendown() 138my_turtle.pensize(3) 139my_turtle.goto(20, -20-shift) 140 141 142# print message 143my_turtle.penup() 144my_turtle.goto(-300, 70-shift) 145my_turtle.color("grey") 146my_turtle.pendown() 147my_turtle.write( 148 "С днём рождения, %username%!", move=False, 149 font=("Helvetica", 24, "bold")) 150 151 152# send the turtle to the corner 153my_turtle.penup() 154my_turtle.goto(-250, 250) 155time.sleep(10)
Вроде ок, но чего-то не хватает, можно попробовать каким-то образом добавить проигрывание трека happy birthday, может переделать это все на pygame. Но я сделал проще: записал видео с экрана и потом на него добавил трек. Если хотите, то вы можете использовать pyinstaller, чтобы сделать из этого скриптика exe.