中秋节的特别礼物----属于程序员的专有浪漫

Posted 是Dream呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中秋节的特别礼物----属于程序员的专有浪漫相关的知识,希望对你有一定的参考价值。

前言: 马上不就到中秋节了嘛,我看到群里很多小伙伴们在纠结如何去送出属于自己的专属浪漫,也有小伙伴私信我,说想让我出一期中秋节的表白代码或者祝福程序!好的安排~
今天就和大家分享一下我珍藏多年的中秋表白祝福神器,希望大家都可以给最爱的人送上最美的祝福💓💓💓~

本文目录:

📢📢📢📣📣📣
🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜
🏅🏅🏅作者简介:Python领域优质创作者🏆 CSDN年度博客之星🏆 阿里云专家博主🏆 华为云享专家🏆 51CTO专家博主🏆
💕入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺
🍉🍉🍉一万次悲伤,依然会有Dream,我一直在最温暖的地方等你~🌈🌈🌈
🌟🌟🌟✨✨✨ 交流合作|粉丝福利|学习资料|抱团学习|欢迎+v:18300396393

一、背景故事

1.中秋节介绍

农历八月十五是我国传统的中秋佳节,是各族人民一年一度的重要节日。
中秋之夜,月亮最亮、最圆,月色也最美好。人们望着玉盘般的明月,自然会联想到家人的团聚,独在异乡的游子也期望借助明镜般的皓月寄托自己对故乡亲人的思念之情。因而,人们往往又把中秋节叫做“团圆节”。

在这个重要的日子,我们当然要把最好的祝福送给我们最好的朋友,家人和爱人们!那有什么属于我们程序员的特别礼物呐,当然有!接下来我就把2我珍藏多年的祝福神器分享给大家,希望大家都可以给最爱的人送上最美的祝福~

但愿人长久,千里共婵娟。

2.朋友们的请求

马上不就到中秋节了嘛,我看到朋友圈里很多小伙伴们在纠结如何去送出属于自己的专属浪漫,也有小伙伴私信我,说想让我出一期中秋节的表白代码或者祝福程序!

好的安排!于是我连肝了两个晚上,重新拾起了自己之前的知识,采用turtle库以及pygame库 为大家带来了属于我们程序员专有的浪漫!
话不多说,先给大家看成果:

二、成品展示

1.月亮山水画

首先,我们打开程序,映入眼帘的是一幅正在缓缓展开的画卷

伴随着轻快优美的音乐,一下子就把我们带入了中秋快乐的场景中!

画面上展示的内容你也可以自己修改,在下文中会教大家怎样求修改哦~

2.浪漫弹窗

在这幅画被完全展开后,就会迅速在她的桌面上展开99个小的弹窗:

当这些弹窗充满她的桌面,我相信没有一个女生不被你感动,亲测有效,如果她也对你感动的痛哭流涕记得回来给我点赞+收藏嗷~


接下来,我教大家如何一一去实现!

三、具体实现

1.环境配置及库要求

在这个工程文件中,我们使用的Python语言去实现,一般来讲我们使用Python3.7就可以基本完全可以了!不太懂的同学可以看这篇文章:手把手教你配置Python运行环境
同时我们需要安装第三方模块,直接在终端输入命令就可以安装了:

pip install 库的名称

在这里我们使用到的是:turtle time pygame random tkinter threading

import turtle
import time
import pygame
import random
import tkinter as tk
import threading

其中最主要的便是海龟画图海龟画图全解–值得你一看! (这篇文章写了很久了,是一些海龟画图最基础的操作,不太了解的小伙伴们可以拿这篇文章来快速入门海龟画图!)

画笔状态:

  1. pendown( ) 放下画笔
  2. penup( ) 提起画笔
  3. pensize(width) 设置画笔线条的粗细为指定大小
  4. pencolor( ) 设置画笔的颜色
  5. color( a,b) 同时设置画笔和填充颜色
  6. begin_fill( ) 填充图形前,调用该方法
  7. end_fill( ) 填充图形结束
  8. filling( ) 返回填充的状态,True为填充。False为未填充
  9. clear( ) 清空当前窗口,但不改变当前画笔的位置
  10. reset( ) 清空当前窗口,并重置位置等状态为默认值
  11. screensize( ) 设置画布窗口的宽度、高度和背景颜色
  12. hideturtle( ) 隐藏画笔的turtle形状
  13. showturtle( ) 显示画笔的turtle形状
  14. isvisible( ) 如果turtle可见,则返回True
  15. write(str,font=None) 输出font字体的字符串

画笔运动:

  1. fd(distance) 沿着当前方向前进指定距离
  2. bk(distance) 沿着当前相反方向后退指定距离
  3. right(angle) 向右旋转angle角度
  4. left(angle) 向左旋转angle角度
  5. goto(x,y) 移动到绝对坐标(x,y)处
  6. setx(x) 修改画笔的横坐标到x,纵坐标不变
  7. sety(y) 修改画笔的纵坐标到y,横坐标不变
  8. seth(angle) 设置当前朝向为angle角度
  9. home( ) 设置当前画笔位置为原点,朝向东
  10. circle(radius,e) 绘制一个指定半径r和角度e的圆或弧形
  11. dot(r,color) 绘制一个指定半径r和颜色color的圆点
  12. undo( ) 撤销画笔的最后一步动作
  13. speed( ) 设置画笔的绘制速度,参数为0~10之间

2.绘制月亮

我们通过控制画笔的上下移动来绘制月亮:

  • turtle.penup() :画笔拿起
  • turtle.pendown() : 画笔放下
  • turtle.fillcolor(‘yellow’) : 画笔的颜色
  • turtle.begin_fill():画笔颜色填充

def drawMoon():  # 绘制月亮
    turtle.penup()  # 画笔拿起
    turtle.goto(-150, 0)
    turtle.fillcolor('yellow')  # 圆月的颜色
    turtle.pendown()  # 画笔放下
    turtle.begin_fill()
    turtle.circle(112)
    turtle.end_fill()  # turtle.begin_fill()	到turtle.end_fill() 颜色填充

3.绘制云朵

我们通过控制画笔的上下移动来绘制云朵:,方法参考上文:

  • turtle.penup() :画笔拿起
  • turtle.pendown() : 画笔放下
  • turtle.fillcolor(‘yellow’) : 画笔的颜色
  • turtle.begin_fill():画笔颜色填充
def drawCloud():  # 绘制云朵
    turtle.penup()
    turtle.goto(-500, 200)
    turtle.fillcolor((245, 245, 245))
    turtle.pencolor((255, 255, 255))
    turtle.pensize(5)
    turtle.pendown()
    turtle.forward(250)

    def cloud(mode='right'):
        for i in range(90):
            turtle.pensize((i + 1) * 0.2 + 5)
            turtle.right(1) if mode == 'right' else turtle.left(1)
            turtle.forward(0.5)
        for i in range(90):
            turtle.pensize(90 * 0.2 + 5 - 0.2 * (i + 1))
            turtle.right(1) if mode == 'right' else turtle.left(1)
            turtle.forward(0.5)
    cloud()
    turtle.forward(100)
    cloud('left')
    turtle.forward(600)

4.绘制山川

这里我们控制画笔来绘制山川,由于我们绘制的山川只选择了两次起起落落,我们需要分别两次对其进行颜色填充,填充的个颜色是相同的,所以重叠部分我们不需要再做进一步的分析:

def drawMountain():  # 绘制山川
    turtle.penup()
    turtle.goto(-500, -250)
    turtle.pensize(4)
    turtle.fillcolor((36, 36, 36))
    turtle.pencolor((31, 28, 24))
    turtle.pendown()
    turtle.begin_fill()
    turtle.left(20)
    turtle.forward(400)
    turtle.right(45)
    turtle.forward(200)
    turtle.left(60)
    turtle.forward(300)
    turtle.right(70)
    turtle.forward(300)
    turtle.goto(500, -300)
    turtle.goto(-500, -300)
    turtle.end_fill()

5.添加背景音乐

这里使用Pygame模块中的mixer来控制音乐的播放,需要导入本地音乐路径,然后就可以啦!这样会使整个的绘制过程更加浪漫有趣!
pygame.mixer.music.play()

  1. 功能:开始播放音乐流

  2. 属性:play(loops=0, start=0.0, fade_ms = 0)

参数:

loops (int) – (可选) 重复音乐的次数。设置为5将播放五次音乐。设为-1可使音乐不确定地重复。
start (float) – (可选) 音乐开始播放的位置。起始位置取决于播放的音乐格式:MP3和OGG使用该位置为时间(秒)。对于MOD music,它是模式顺序号。如果无法设置起始位置,则传递起始位置将引发NotImplementedError。
fade_ms (int) – (可选) 使音乐在给定时间内开始以0音量播放并淡入到最大音量。片段可能在淡入完成之前结束。在PyGame2.0中添加。

def initTurtle():
    pygame.mixer.init()
    pygame.mixer.music.load('寂寞烟火.mp3')
    pygame.mixer.music.play(-1, 20.0)
    turtle.hideturtle()
    turtle.setup(1000, 600)
    turtle.title('中秋祝福')
    turtle.colormode(255)
    turtle.bgcolor('blue')
    turtle.speed(1)

6.写入祝福话语

使用turtle中的write 写入祝福话语
turtle.write(‘宝贝,中秋节快乐!’, align=“center”, font=(“STXingkai”, 50, “bold”))

def writezhufu():
    turtle.penup()
    turtle.goto(400, -150)
    turtle.pencolor((250, 240, 230))
    # 诗句
    potery = ['\\n但\\n愿\\n人\\n长\\n久\\n','\\n千\\n里\\n共\\n婵\\n娟\\n']
    # 诗句位置(可自行设计添加), 最好2/4句五言诗
    coordinates = [(300, -150), (200, -150), (100, -150)]
    for i, p in enumerate(potery):
        turtle.write(p, align="center", font=("STXingkai", 50, "bold"))
        if (i + 1) != len(potery):
            time.sleep(2)
            turtle.goto(coordinates[i])
    # 祝福话语
    turtle.penup()
    turtle.hideturtle()    #隐藏箭头显示
    turtle.goto(-110, -100)
    turtle.color('red')
    turtle.write('宝贝,中秋节快乐!', align="center", font=("STXingkai", 50, "bold"))

7.弹窗部分

这里使用了tkinter模块来进行小弹窗的绘制,最后是用for循环来实现弹窗的重复性和随机性,这也是我觉得最大的创新之处吧!惊喜重重,满满心意与浪漫,哈哈哈。

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("200x50" + "+" + str(a) + "+" + str(b))
    tk.Label(window,
             text='亲爱的中秋快乐',  # 标签的文字
             bg='red',  # 背景颜色
             font=('..', 17),  # 字体和字体大小
             width=18, height=2  # 标签长宽
             ).pack()  # 固定窗口位置
    window.mainloop()

8.启动入口

最后写一个main函数入口,来进行程序的启动:if __name__ == '__main__': main()
for i in range(100): 需要的弹框数量 这里可以根据需求自己来确定

def main():
    initTurtle()
    drawMoon()  # 绘制月亮
    drawCloud()  # 绘制云朵
    drawMountain()  # 绘制山
    writezhufu()  # 写诗
    time.sleep(2)
    threads = []
    for i in range(100):  # 需要的弹框数量
        t = threading.Thread(target=dow)
        threads.append(t)
        time.sleep(0.01)
        threads[i].start()


if __name__ == '__main__':
    main()

四、源码分享

# @Time : 2022/8/23 10:38
# @Author : 是Dream呀
# @File : 中秋节.py
import turtle
import time
import pygame
import random
import tkinter as tk
import threading

def drawMoon():  # 绘制月亮
    turtle.penup()  # 画笔拿起
    turtle.goto(-150, 0)
    turtle.fillcolor('yellow')  # 圆月的颜色
    turtle.pendown()  # 画笔放下
    turtle.begin_fill()
    turtle.circle(112)
    turtle.end_fill()  # turtle.begin_fill()	到turtle.end_fill() 颜色填充


def drawCloud():  # 绘制云朵
    turtle.penup()
    turtle.goto(-500, 200)
    turtle.fillcolor((245, 245, 245))
    turtle.pencolor((255, 255, 255))
    turtle.pensize(5)
    turtle.pendown()
    turtle.forward(250)

    def cloud(mode='right'):
        for i in range(90):
            turtle.pensize((i + 1) * 0.2 + 5)
            turtle.right(1) if mode == 'right' else turtle.left(1)
            turtle.forward(0.5)
        for i in range(90):
            turtle.pensize(90 * 0.2 + 5 - 0.2 * (i + 1))
            turtle.right(1) if mode == 'right' else turtle.left(1)
            turtle.forward(0.5)

    cloud()
    turtle.forward(100)
    cloud('left')
    turtle.forward(600)


def drawMountain():  # 绘制山川
    turtle.penup()
    turtle.goto(-500, -250)
    turtle.pensize(4)
    turtle.fillcolor((36, 36, 36))
    turtle.pencolor((31, 28, 24))
    turtle.pendown()
    turtle.begin_fill()
    turtle.left(20)
    turtle.forward(400)
    turtle.right(45)
    turtle.forward(200)
    turtle.left(60)
    turtle.forward(300)
    turtle.right(70)
    turtle.forward(300)
    turtle.goto(500, -300)
    turtle.goto(-500, -300)
    turtle.end_fill()


def initTurtle():
    pygame.mixer.init()
    pygame.mixer.music.load('寂寞烟火.mp3')
    pygame.mixer.music.play(-1, 20.0)
    turtle.hideturtle()
    turtle.setup(1000, 600)
    turtle.title('中秋祝福')
    turtle.colormode(255)
    turtle.bgcolor('blue')
    turtle.speed(1)


def writezhufu():
    turtle.penup()
    turtle.goto(400, -150)
    turtle.pencolor((250, 240, 230))
    # 诗句
    potery = ['\\n但\\n愿\\n人\\n长\\n久\\n','\\n千\\n里\\n共\\n婵\\n娟\\n']
    # 诗句位置(可自行设计添加), 最好2/4句五言诗
    coordinates = [(300, -150), (200, -150), (100, -150)]
    for i, p in enumerate(potery):
        turtle.write(p, align="center", font=("STXingkai", 50, "bold"))
        if (i + 1) != len(potery):
            time.sleep(2)
            turtle.goto(coordinates[i])
    # 祝福话语
    turtle.penup()
    turtle.hideturtle()    #隐藏箭头显示
    turtle.goto(-110, -100)
    turtle.color('red')
    turtle.write('宝贝,中秋节快乐!', align="center", font=("STXingkai", 50, "bold"))

# 弹窗设置
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("200x50" + "+" + str(a) + "+" + str(b))
    tk.Label(window,
             text='亲爱的中秋快乐',  # 标签的文字
             bg='red',  # 背景颜色
             font=('..', 17),  # 字体和字体大小
             width=18, height=2  # 标签长宽
             ).pack()  # 固定窗口位置
    window.mainloop()

def main():
    initTurtle()
    drawMoon()  # 绘制月亮
    drawCloud()  # 绘制云朵
    drawMountain()  # 绘制山
    writezhufu()  # 写诗
    time.sleep(2)
    threads = []
    for i in range(100):  # 需要的弹框数量
        t 

以上是关于中秋节的特别礼物----属于程序员的专有浪漫的主要内容,如果未能解决你的问题,请参考以下文章

七夕来袭,是时候展现专属于程序员的浪漫了- 跳动的心和摇晃的红酒杯

七夕来袭,是时候展现专属于程序员的浪漫了- 跳动的心和摇晃的红酒杯

程序员的七夕浪漫时刻

属于 App 的浪漫情怀 -- 双鱼座专题 #Android #iPhone

HTML+CSS+JS网页表白代码大全(浪漫的html表白源代码)

温馨浪漫HTML表白爱情源码大气简洁单页源码(html生日快乐网站制作)