圣诞节,程序员应该怎么浪漫?
Posted 别编了没有头发了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了圣诞节,程序员应该怎么浪漫?相关的知识,希望对你有一定的参考价值。
圣诞节别人都在用手画,程序员必须得内卷!!
写了2个圣诞树,写的不好,总结了一个别人的圣诞树(原作者:一顿吃不饱)有错的地方欢迎大家指出,我积极改正!
ONE:运用了matplotlib可视化找点写了一个最简单版的圣诞树(没时间了画的太丑了,呜呜呜)
源代码:
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
class Dyn_Img:
def __init__(self):
self.width = 14 #坐标宽
self.height = 14 #坐标高
self.fig = plt.figure()
self.ax = plt.axes()
self.frame_number = 80
self.per_time = 50
self.do_menu()
def do_menu(self):
self.input_choi = input("1.圣诞树\\n2.退出\\n请输入您的选择")
while self.input_choi != "1" and self.input_choi != "2" and self.input_choi != "3":
self.input_choi = input("1.圣诞树\\n2.退出\\n请输入您的选择")
def setup_axes(self):
# self.ax.clear()
self.ax.set_xlim(0, self.width)
self.ax.set_ylim(0, self.height)
self.ax.get_xaxis().set_visible(True)
self.ax.get_yaxis().set_visible(True)
self.ax.set_facecolor("pink")
def do_animation(self):
anim = FuncAnimation(self.fig, self.draw_point_name)
self.draw_point_name()
def draw_point_name(self, i):
# self.ax.clear()
print(i)
self.setup_axes()
# 五角星
x = [5.5,7.5,7.5,5.8,5.8,6.5,6.5,7.2,7.2,5.5]
y = [11,11,11,9.5,9.5,12,12,9.5,9.5,11]
#圣诞树
x1 = [6.5-i*1.5/80,5,6.5+i*1.5/80,8,5+i*3/80,8]
y1 = [10-i*1.5/80,8.5,10-i*1.5/80,8.5,8.5,8.5]
x2 = [5.5-i*1.5/80,4,7.5+i*1.5/80,9,4+i*5/80,9]
y2 = [8.5-i*1.5/80,7,8.5-i*1.5/80,7,7,7]
x3 = [4.5-i*1.5/80,3,8.5+i*1.5/80,10,3+i*7/80,10]
y3 = [7-i*1.5/80,5.5,7-i*1.5/80,5.5,5.5,5.5]
x4 = [3.5-i*1.5/80,2,9.5+i*1.5/80,11,2+i*9/80,11]
y4 = [5.5-i*1.5/80,4,5.5-i*1.5/80,4,4,4]
#树干
x5=[5.5,5.5,7.5,7.5,5.5+i*2/80,7.5]
y5=[4-i*2/80,2,4-i*2/80,2,2,2]
#画雪花
# x6=[3+i*2/80,5,5-i*2/80,3,4,4]
# y6=[6-i*2/80,4,6-i*2/80,4,7-i*4/80,3]
self.ax.plot(x, y, "y-")
plt.fill_between(x,y, facecolor='yellow', alpha=0.5)
plt.pause(0.00000001)
self.ax.plot(x1, y1, ".")
# plt.fill_between(x1, y1, facecolor='blue', alpha=0.5)
self.ax.plot(x2, y2, ".")
# plt.fill_between(x2, y2, facecolor='purple', alpha=0.5)
self.ax.plot(x3, y3, ".")
self.ax.plot(x4, y4, ".")
self.ax.plot(x5,y5,".")
# self.ax.plot(x6,y6,"w.")
def drwa_Dyn_Img(self):
if self.input_choi == "1":
# frames = np.arange(0, len(self.id)) frames=self.frame_numbers, interval=self.per_time
anmi = FuncAnimation(self.fig, self.draw_point_name,frames=self.frame_number,interval=self.per_time)
anmi.save("圣诞树.gif", dpi=80, writer="pillow")
plt.show()
elif self.input_choi == "2":
exit()
if __name__ == "__main__":
dyn_Img = Dyn_Img()
dyn_Img.drwa_Dyn_Img()
TWO:运用turtle海龟画图法,个人认为海龟画图真的很简单,全是命令,新手小白完全可以。就是速度有点慢。
源代码:
import turtle as t
import random
import threading
import time
import tkinter as tk
t.screensize(bg='pink') # 定义背景颜色
def loving_pentacle(r):
l = 2 * r
t.left(45)
t.forward(l)
t.circle(r, 180)
t.right(90)
t.circle(r, 180)
t.forward(l)
# 树函数(递归)
def tree(d, s):
if d <= 0:
return
t.forward(s)
tree(d - 1, s * .8)
t.right(120)
tree(d - 3, s * .5)
t.right(120)
tree(d - 3, s * .5)
t.right(120)
t.backward(s) # 回退函数
#这里顺序不要改哦,依次进行的
# 画爱心部分
t.penup()
t.goto(0, 200) # 设置起点位置
t.pendown()
t.pencolor('red') # 设置画笔颜色
t.color('yellow')
t.begin_fill() # 对图形进行填充
loving_pentacle(20) # 执行画爱心函数
t.end_fill()
# 画树部分
n = 100
t.speed(0)#速度
# t.Turtle().screen.delay(0)
t.right(225) #向右
t.color("dark green")#颜色
t.backward(n * 4.8) #回退函数
tree(15, n)
t.backward(n / 5)
# 绘制雪花
def drawsnow(): # 定义画雪花方法
t.speed(0) #速度
t.ht() # 隐藏画笔笔头,ht也等于hideturtle
t.pensize(2) # 定义画笔大小
for i in range(601): # 画多少雪花,601是她6月1日的生日
t.pencolor("white") # 定义画笔颜色为白色,其实就是雪花为白色
t.pu() # 提笔,pu=penup
t.setx(random.randint(-350, 350)) # 定义x坐标,随机从-350到350之间选择
t.sety(random.randint(-100, 350)) # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始
t.pd() # 落笔,pd=pendown
dens = 6 # 雪花瓣数设为6
snowsize = random.randint(1, 10) # 定义雪花大小
for j in range(dens): # 就是6,那就是画5次,也就是一个雪花五角星
# t.forward(int(snowsize)) #int()取整数
t.fd(int(snowsize))
t.backward(int(snowsize))
# t.bd(int(snowsize)) #注意没有bd=backward,但有fd=forward,小bug
t.right(int(360 / dens)) # 转动角度
drawsnow()
# 写下自己的名
t.color("red") # 填充颜色
t.up()
t.goto(170,-200)
t.down()
t.write("作者:是晓洋呀", font=("微软雅黑", 18, "normal"))
t.ht()
# t.done()
t.hideturtle()
time.sleep(2)
# 弹窗制作
def dow():
window = tk.Tk()
width = window.winfo_screenwidth()
height = window.winfo_screenheight()
a = random.randrange(0, width)
b = random.randrange(0, height)
window.title('圣诞节快乐')
window.geometry("240x50" + "+" + str(a) + "+" + str(b))
tk.Label(window,
text='张张圣诞节快乐!', # 弹窗里面的文字
bg='pink', # 背景颜色
font=('..', 17), # 字体和字体大小
width=18, height=2 # 标签长宽
).pack() # 固定窗口位置
window.mainloop()
threads = []
for i in range(99): # 需要的弹框数量,99是祝福我和我的t永远在一起
t = threading.Thread(target=dow)
threads.append(t)
time.sleep(0.01)
threads[i].start()
第3个:最后一个是总结了原作者的代码,加了代码解释新手可以看过来理解一下(原作者:一顿吃不饱)原作者写的特别好样式很全!!
源代码:
from distutils.core import setup
from turtle import *
import time
setup(500, 500, startx=None, starty=None) #设置窗体大小及位置 格式:turtle.setup(width,height,startx,starty)
speed(10) #画笔移动速度。画笔绘制的速度范围[0~10]整数,数字越大越快 格式:turtle.speed(speed)
pencolor("pink") #画笔颜色 格式:turtle.pencolor()
pensize(10) #画笔宽度
penup() #提笔移动时不会绘制图形,从另一个地方绘制 格式:turtle.penup()
hideturtle() #隐藏画笔的turtle形状 格式:turtle.hideturtle()
goto(0, 150) #让在任何位置的海龟到达指定位置 格式:turtle.goto()
showturtle() #显示画笔的turtle形状 格式:turtle.showturtle()
pendown() #移动时绘制图形,缺省时也为绘制 格式:turtle.pendown()
shape(name="arrow") #走动箭头类型 classic三角,arrow扁三角,arrow海龟,circle圆,square正方形,triangle正三角
# 1
seth(-120) #表示小乌龟启动时运动的方向
for i in range(10): #range是一个函数,这个语句是赋值给i
fd(12) #fd()是turtle模块中的一个方法。fd方法的实参是像素距离
right(2)
penup() #提笔移动时不绘制图形,从另一个地方绘制 格式:turtle.penup()
goto(0, 150) #让任何位置的海龟到达我指定的位置 格式:turtle.goto()
seth(-60) #海龟启动时运动的方向
pendown()
#接下来的语句都是重复的,自由发挥叭
for i in range(10):
fd(12)
left(2)
seth(-150)
penup()
fd(10)
pendown()
for i in range(5):
fd(10)
right(15)
seth(-150)
penup()
fd(8)
pendown()
for i in range(5):
fd(10)
right(15)
seth(-155)
penup()
fd(5)
pendown()
for i in range(5):
fd(7)
right(15)
# 2
penup()
goto(-55, 34)
pendown()
seth(-120)
for i in range(10):
fd(8)
right(5)
penup()
goto(50, 35)
seth(-60)
pendown()
for i in range(10):
fd(8)
left(5)
seth(-120)
penup()
fd(10)
seth(-145)
pendown()
for i in range(5):
fd(10)
right(15)
penup()
fd(10)
seth(-145)
pendown()
for i in range(5):
fd(12)
right(15)
penup()
fd(8)
seth(-145)
pendown()
for i in range(5):
fd(10)
right(15)
penup()
seth(-155)
fd(8)
pendown()
for i in range(5):
fd(11)
right(15)
# 3
penup()
goto(-100, -40)
seth(-120)
pendown()
for i in range(10):
fd(6)
right(3)
penup()
goto(80, -39)
seth(-50)
pendown()
for i in range(10):
fd(6)
left(3)
seth(-155)
penup()
fd(10)
pendown()
for i in range(5):
fd(8)
right(10)
penup()
fd(8)
seth(-145)
pendown()
for i in range(7):
fd(8)
right(10)
penup()
fd(8)
seth(-145)
pendown()
for i in range(7):
fd(7)
right(10)
penup()
fd(8)
seth(-145)
pendown()
for i in range(7):
fd(7)
right(10)
penup()
fd(8)
seth(-140)
pendown()
for i in range(7):
fd(6)
right(10)
# 4
penup()
goto(-120, -95)
seth(-130)
pendown()
for i in range(7):
fd(10)
right(5)
penup()
goto(100, -95)
seth(-50)
pendown()
for i in range(7):
fd(10)
left(5)
penup()
seth(-120)
fd(10)
seth(-155)
pendown()
for i in range(6):
fd(8)
right(10)
penup()
seth(-160)
fd(10)
seth(-155)
pendown()
for i in range(6):
fd(8)
right(10)
penup()
seth(-160)
fd(10)
seth(-155)
pendown()
for i in range(6):
fd(8)
right(10)
penup()
seth(-160)
fd(10)
seth(-160)
pendown()
for i in range(6):
fd(8)
right(10)
penup()
seth(-160)
fd(10)
seth(-160)
pendown()
for i in range(6):
fd(8)
right(10)
penup()
seth(-160)
fd(10)
seth(-165)
pendown()
for i in range(5):
fd(10)
right(11)
# 5
penup()
goto(-70, -165)
seth(-85)
pendown()
for i in range(3):
fd(5)
left(3)
penup()
goto(70, -165)
seth(-95)
pendown()
for i in range(3):
fd(5)
right(3)
seth(-170)
penup()
fd(10)
pendown()
pendown()
for i in range(10):
fd(12)
right(2)
# 6
penup()
goto(70, -165)
pendown()
seth(-90)
pensize(8) #设置画笔宽度
pencolor("#de8891") #没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色
circle(-20, 90) #circle圆
penup()
goto(30, -185)
pendown()
seth(-180)
pensize(8)
pencolor("#de8891")
fd(40)
penup()
goto(-5, -170)
pendown()
seth(-180)
pensize(8)
pencolor("#de8891")
fd(35)
def guest(x, y, z):
penup()
goto(x, y)
seth(-z)
pendown()
for angel in range(5):
fd(10)
right(10)
def guet(x, y, z):
penup()
goto(x, y)
seth(-z)
pendown()
for angel in range(5):
fd(10)
left(10)
def qu(x, y, z):
penup()
goto(x, y)
seth(-z)
pendown()
for angel in range(5):
fd(6)
right(10)
seth(-150)
fd(20)
# 树枝
guest(-70, -150, 160)
guest(100, -150, 160)
guet(110, -110, 50)
guest(160, -140, 150)
qu(80, -120, 180)
guest(70, -85, 165)
guest(-40, -85, 165)
guet(90, -50, 50)
guest(130, -80, 150)
pencolor("pink")
qu(-40, -60, 180)
pencolor('#de8891')
qu(80, -30, 180)
pencolor("pink")
qu(40, 10, 180)
pencolor("#de8891")
guest(-60, 30, 120)
guest(-20, -20, 150)
guet(45, 40, 60)
guest(-30, 40, 170)
guest(-30, 110, 115)
guet(40, 90, 60)
guest(80, 50, 160)
pencolor("#de8891")
def hdj(x, y):
penup()
goto(x, y)
seth(80)
pendown()
pensize(2)
circle(5)
seth(10)
fd(15)
seth(120)
fd(20)
seth(240)
fd(20)
seth(180)
fd(20)
seth(-60)
fd(20)
seth(50)
fd(20)
seth(-40)
fd(30)
seth(-130)
fd(5)
seth(135)
fd(30)
seth(-60)
fd(30)
seth(-150)
fd(6)
seth(110)
fd(30)
def uit(x, y):
penup()
goto(x, y)
pendown()
pensize(2)
circle(5)
seth(-10)
fd(15)
seth(90)
fd(15)
seth(200)
fd(15)
seth(160)
fd(15)
seth(-90)
fd(15)
seth(10)
fd(15)
seth(-60)
fd(20)
seth(-180)
fd(5)
seth(110)
fd(20)
seth(-90)
fd(20)
seth(-180)
fd(6)
seth(70)
fd(15)
hideturtle()
def xxy(x, y, z):
penup()
goto(x, y)
pendown()
seth(z)
for po in range(5):
fd(4)
left(36)
def zjq(x, y, z):
penup()
goto(x, y)
pendown()
seth(z)
for kk in range(5):
fd(4)
left(36)
# 小蝴蝶结
seth(0)
uit(40, -160)
hdj(-80, -120)
xxy(-67, -115, 120)
xxy(-86, -123, 150)
hdj(40, -50)
xxy(52, -45, 130)
xxy(34, -55, 160)
seth(0)
uit(-20, -60)
zjq(-4, -60, 100)
zjq(-20, -60, 120)
hdj(-30, 20)
xxy(-15, 25, 130)
xxy(-40, 20, 180)
uit(30, 70)
zjq(45, 70, 100)
zjq(30, 70, 120)
# 大蝴蝶结
pencolor("#f799e6")
pensize(5)
penup()
seth(0)
goto(0, 150)
pendown()
circle(10)
seth(-15)
fd(40)
seth(90)
fd(40)
seth(200)
fd(40)
seth(160)
fd(40)
seth(-90)
fd(40)
seth(15)
fd(40)
seth(-70)
pencolor("#f799e6")
pensize(4)
fd(40)
seth(-180)
fd(10)
seth(100)
fd(40)
seth(-100)
fd(40)
seth(-180)
fd(10)
seth(70)
fd(40)
penup()
seth(0)
goto(0, 130)
pencolor("pink")
pendown()
def zz(x, y, z):
penup()
goto(x, y)
pencolor("#f799e6")
pendown()
seth(z)
for po in range(10):
fd(4)
left(18)
seth(0)
zz(35, 145, 100)
zz(-7, 145, 110)
pencolor("red")
pensize(7)
penup()
goto(-35, 135)
pendown()
# 圣诞帽
seth(-20)
pensize(2)
penup()
goto(-30, -120)
pencolor("black")
pendown()
fillcolor("red")
fd(30)
circle(4, 180)
fd(30)
circle(4, 180)
penup()
goto(-25, -115)
seth(75)
pendown()
begin_fill()
for i in range(5):
fd(6)
right(20)
seth(-10)
for i in range(5):
fd(8)
right(15)
seth(145)
for i in range(5):
fd(5)
left(2)
seth(90)
for i in range(5):
fd(1)
left(2)
seth(-90)
for i in range(4):
fd(4)
right(6)
seth(161)
fd(30)
end_fill()
pensize(1)
pencolor("black")
def abc(x, y, size):
pensize(2)
pencolor("black")
penup()
goto(x, y)
pendown()
begin_fill()
fillcolor("yellow")
for i in range(5):
left(72)
fd(size)
right(144)
fd(size)
end_fill()
# 星星
seth(-15)
abc(-120, -70, 10)
seth(10)
abc(100, -20, 10)
seth(-10)
abc(10, 40, 10)
seth(30)
abc(-80, 60, 10)
abc(100, -150, 10)
abc(-140, -150, 10)
abc(20, 120, 10)
# 袜子
seth(-20)
pensize(2)
penup()
goto(-20, 80)
pencolor("black")
pendown()
fillcolor("red")
fd(25)
circle(4, 180)
fd(25)
circle(4, 180)
penup()
goto(-15, 80)
pendown()
begin_fill()
fillcolor("red")
seth(-120)
fd(20)
seth(150)
fd(5)
circle(7, 180)
fd(15)
circle(5, 90)
fd(30)
seth(160)
fd(18)
end_fill()
penup()
seth(0)
goto(100, -230)
pendown()
write("张张圣诞节快乐 ", align="center", font=("Comic Sans MS", 24, "bold"))
done()
好啦,快去给你的他/她做圣诞树吧,祝大家圣诞节快乐哦(大家有木有推荐生发的东东,女程序员头发要掉光了,呜呜呜)
以上是关于圣诞节,程序员应该怎么浪漫?的主要内容,如果未能解决你的问题,请参考以下文章
程序员也可以很浪漫,精选10个圣诞节特效网页设计-前端HTML+CSS等实现