圣诞节,程序员应该怎么浪漫?

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()

 好啦,快去给你的他/她做圣诞树吧,祝大家圣诞节快乐哦(大家有木有推荐生发的东东,女程序员头发要掉光了,呜呜呜)

以上是关于圣诞节,程序员应该怎么浪漫?的主要内容,如果未能解决你的问题,请参考以下文章

Python编程 圣诞树教程 (附代码)程序员的浪漫

程序员的浪漫圣诞节到了,何不送给Ta一份程序员的浪漫

程序员的浪漫圣诞节到了,何不送给Ta一份程序员的浪漫

程序员也可以很浪漫,精选10个圣诞节特效网页设计-前端HTML+CSS等实现

来自程序员的圣诞浪漫&纯CSS3打造的圣诞祝福献给前端初学者内附代码以及运行方法

程序员也可以很浪漫--精选10个圣诞节特效网页设计-前端HTML+CSS等实现