天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花,工作之余也可以随时让程序为自己放一场烟花秀。
python炫酷烟花表白源代码
这个有趣的小项目并不复杂,只需一点可视化技巧,100余行Python代码和程序库Tkinter,最后我们就能达到下面这个效果:
学完本教程后,你也能做出这样的烟花秀。
整体概念梳理
我们的整个理念比较简单。
我们这里通过让画面上一个粒子分裂为X数量的粒子来模拟爆炸效果。粒子会发生"膨胀”,意思是它们会以恒速移动且相互之间的角度相等。这样就能让我们以一个向外膨胀的圆圈形式模拟出烟花绽放的画面。经过一定时间后,粒子会进入"自由落体”阶段,也就是由于重力因素它们开始坠落到地面,仿若绽放后熄灭的烟花。
学完本教程后,你也能做出这样的烟花秀。
如上图示,我们这里通过让画面上一个粒子分裂为X数量的粒子来模拟爆炸效果。粒子会发生"膨胀”,意思是它们会以恒速移动且相互之间的角度相等。这样就能让我们以一个向外膨胀的圆圈形式模拟出烟花绽放的画面。
经过一定时间后,粒子会进入"自由落体”阶段,也就是由于重力因素它们开始坠落到地面,仿若绽放后熄灭的烟花。
基本知识:用Python和Tkinter设计烟花。
这里不再一股脑把数学知识全丢出来,我们边写代码边说理论。首先,确保你安装和导入了Tkinter,它是Python的标准GUI库,广泛应用于各种各样的项目和程序开发,在Python中使用Tkinter可以快速的创建GUI应用程序。
import tkinter as tk
from PIL import Image, ImageTk
from time import time, sleep
from random import choice, uniform, randint
from math import sin, cos, radians
除了Tkinter之外,为了能让界面有漂亮的背景,我们也导入PIL用于图像处理,以及导入其它一些包,比如time,random和math。它们能让我们更容易的控制烟花粒子的运动轨迹。
Tkinter应用的基本设置如下:
root = tkTk()
为了能初始化Tkinter,我们必须创建一个Tk()根部件(root widget),它是一个窗口,带有标题栏和由窗口管理器提供的其它装饰物。该根部件必须在我们创建其它小部件之前就创建完毕,而且只能有一个根部件。
w = tkLabel(root, text="Hello Tkinter!")
这一行代码包含了Label部件。该Label调用中的第一个参数就是父窗口的名字,即我们这里用的"根”。关键字参数"text”指明显示的文字内容。你也可以调用其它小部件:Button,Canvas等等。
wpack()
rootmainloop()
接下来的这两行代码很重要。这里的打包方法是告诉Tkinter调整窗口大小以适应所用的小部件。窗口直到我们进入Tkinter事件循环,被rootmainloop()调用时才会出现。在我们关闭窗口前,脚本会一直在停留在事件循环。
将烟花绽放转译成代码
现在我们设计一个对象,表示烟花事件中的每个粒子。每个粒子都会有一些重要的属性,支配了它的外观和移动状况:大小,颜色,位置,速度等等。
年轻的男女朋友们,明天又是一个相当重要的日子:520,不知道是从啥时候开始兴起来的,虽然很多单身的人一看到这个几日就觉得闹心,但也有很大一部分单身人士等待着明天的好机会,毕竟天时地利,这么好的日子一定好好珍惜的。
表白的套路很多,但都少不了送花送礼物,作为一个程序员,搞不懂现在流行的泡泡机、小猪、重力感应车等玩具,也不想去让朋友们去送钱炫耀,毕竟真情才重要,钱就物质了。我能给各位单身粉丝们做的可能就只有分享几个表白代码了,在电脑上敲上几行代码,让她在郁闷的周一得到一个大大的惊喜,很简单,一看就会,如果现在用不到也不要紧,先收藏起来,反正这样的节日很多,以后用的时候能找到。
由简到繁,先来五个。
1、浏览器标签法
这个先用不到代码,但却十分简单实用的,首先早一步到办公室,或者趁表白对象不注意的时候在她的电脑上安装chrome浏览器,设置成默认的浏览器,把各项的同步功能打开就可以了。然后选择一个合适的时机,在你的电脑上登录账号,然后标签栏添加你想说的话,例如下图这样:
然后标签就自动同步到表白对象的浏览器上了。
2、两个按键组合成I LOVE U
这个简单的功能是利用的网页查找的功能,在网页中复制下这段文字,
然后crtrl+f,在输入框中输入9,然后回车,看下效果:
3、Python表白代码
心型和圆形椭圆的代码类似,都是由X,Y上的点构成的曲线,确定出一个表达式expression,然后就是两个for循环(for y in range;for x in range),然后逐行逐列的开始就行了。
当然有点太单调,我们可以这样操作一下,让他动起来,像这样
print('\n'join([''join([('Love'[(x-y) % len('Love')] if ((x005)2+(y01)2-1)3-(x005)2(y01)3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(30, -30, -1)]))
当然还能替换表情,这个代码就不放了,需要的直接跟我要就行。
4、炫酷一点的
C语言诠释爱——为TA写下心中情,生成程序传给TA,TA点开程序就懂你。
这个开始的时候会展示出表白对象的名字,接着就是最重要的烟花部分,为了让烟花显得更加真实,需要附加重力效果和空气阻力效果,源代码图如下
如果需要源码的留下邮乡就可以了。
5、恶搞一点的
这个适合关系已经不错的那种了,看看效果
源码直接发
最后再放1个代码表白的图,同样代码无法放出来,但是可以直接用,需要的朋友下方留言。
这些代码在程序员朋友眼里一定是很简单的,而且程序员一般都不会用,因为他们的对象不需要表白,NEW一个就可以。新手可以慢慢学,才有成就感了,也会很惊喜哦。
JAVA
传说中规范的爱情代码(2010-11-10 21:37:36)
转载
标签:it
private final static DEPOSIT = 100000;
private final static FELLING = 8;
public void love(boy, girl) {
Boolean isMarried = false;
if(boy有房() &&boy有车()) {
doMarry(boy, girl);
isMarried = true;
} else if(girl愿意等()) {
while(!(boy赚钱 > DEPOSIT && girl感情 > FELLING)) {
for(int day=1; day <=365; day++) {
if( day == 情人节 ) {
if(boygivegirl(玫瑰)) {
girl感情++;
} else {
girl感情--;
}
}
if(day == girl生日) {
if( boygivegirl(玫瑰) )
{
girl感情++;
}
else {
girl感情--;
boy拼命赚钱();
}
}
}
if(boy有房() && boy有车()) {
doMarry(boy, girl);
isMarried = true;
break;
}
年龄++;
girl感情--;
}
}
if(!IsMarried) {
girlgoto(another_boy);
}
private void doMarry(boy, girl) {
boyset(nothing);
girl嫁给(boy);
}
欢迎分享,转载请注明来源:表白网
评论列表(0条)