暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

七夕,你该用这个表白

看见月亮的人 2020-08-25
320


今天是七夕节,相比于现代人自创的 502,不对是 520,七夕才是中国传统意义上的情人节,本文分享几个 Python 表白程序,情侣可以现学现用,单身的话也可以先收藏一下,说不定下次就用上了。

爱心树

首先,我们来画一棵长满爱心果实的树。


主要实现代码:

# 画爱心
def love(x, y):
lv = turtle.Turtle()
lv.hideturtle()
lv.up()
# 定位
lv.goto(x, y)
# 画圆弧
def curvemove():
for i in range(20):
lv.right(10)
lv.forward(2)

lv.color('red', 'pink')
lv.speed(10000000)
lv.pensize(1)
lv.down()
lv.begin_fill()
lv.left(140)
lv.forward(22)
curvemove()
lv.left(120)
curvemove()
lv.forward(22)
# 画完复位
lv.left(140)
lv.end_fill()

# 画树
def tree(branchLen, t):
# 剩余树枝太少要结束递归
if branchLen > 5:
# 如果树枝剩余长度较短则变绿
if branchLen < 20:
t.color("green")
t.pensize(random.uniform((branchLen + 5) 4 - 2, (branchLen + 6) 4 + 5))
t.down()
t.forward(branchLen)
love(t.xcor(), t.ycor())
t.up()
t.backward(branchLen)
t.color("brown")
return
t.pensize(random.uniform((branchLen + 5) 4 - 2, (branchLen + 6) 4 + 5))
t.down()
t.forward(branchLen)
# 以下递归
ang = random.uniform(15, 45)
t.right(ang)
# 随机决定减小长度
tree(branchLen - random.uniform(12, 16), t)
t.left(2 * ang)
# 随机决定减小长度
tree(branchLen - random.uniform(12, 16), t)
t.right(ang)
t.up()
t.backward(branchLen)


表白气球

我们接着看一下表白气球的实现,要实现的效果是:随机生成各种颜色向上漂浮的气球,点击气球会破。



主要实现代码如下:

# 气球
balloons = []
# 颜色
color_option = ["red", "blue", "green", "purple", "pink", "yellow", "orange"]
# 气球大小
size = 50
# 气球线
def line(x, y, a, b, line_width=1, color_name="black"):
up()
goto(x, y)
down()
color(color_name)
width(line_width)
goto(a, b)

def distance(x, y, a, b):
# 判断鼠标点击位置和气球坐标的距离
return ((a - x) ** 2 + (b - y) ** 2) ** 0.5
def tap(x, y):
for i in range(len(balloons)):
# 判断是否点击气球队列中的其中一个
if distance(x, y, balloons[i][0], balloons[i][1]) < (size 2):
# 删除气球
balloons.pop(i)
return
def draw():
# 清除画布
clear()
for i in range(1, (len(balloons) + 1)):
line(balloons[-i][0], balloons[-i][1], balloons[-i][0], balloons[-i][1] - size * 1.5, 1)
up()
goto(balloons[-i][0], balloons[-i][1])
# 画原点,参数为大小和颜色
dot(size, balloons[-i][2])
# 改变纵坐标,模仿气球上升
balloons[-i][1] = balloons[-i][1] + 1
# 修改画布
update()
def gameLoop():
# 1/50 的概率生成一个气球
if randrange(0, 50) == 1:
# 气球坐标,在边框位置减去气球大小
x = randrange(-200 + size, 200 - size)
# 随机在颜色队列选择一个颜色
c = choice(color_option)
# 添加气球队列
balloons.append([x, -200 - size, c])
draw()
ontimer(gameLoop, 10)

玫瑰花

一朵玫瑰花其实主要就是下面这几个函数来实现的,不过是参数不同罢了,在实现的过程中也可以调整参数然后看下具体的效果。




主要实现代码如下:

from turtle import *

import time

setup(600, 800 ,0, 0) #设置绘画起点
speed(0)
penup()
seth(90)
fd(340)
seth(0)
pendown()

speed(5)
begin_fill()
fillcolor('red')#画笔颜色
circle(50, 30)

for i in range(10):
fd(1)
left(10)

circle(40, 40)

for i in range(6):
fd(1)
left(3)

circle(80, 40)

for i in range(20):
fd(0.5)
left(5)

circle(80, 45)

for i in range(10):
fd(2)
left(1)

circle(80, 25)

for i in range(20):
fd(1)
left(4)

circle(50, 50)

time.sleep(0.1)

circle(120, 55)

speed(0)

seth(-90)
fd(70)

right(150)
fd(20)

left(140)
circle(140, 90)

left(30)
circle(160, 100)

left(130)
fd(25)

penup()
right(150)
circle(40, 80)
pendown()

left(115)
fd(60)

penup()
left(180)
fd(60)
pendown()

end_fill()

right(120)
circle(-50, 50)
circle(-20, 90)

speed(1)
fd(75)

speed(0)
circle(90, 110)

penup()
left(162)
fd(185)
left(170)
pendown()
circle(200, 10)
circle(100, 40)
circle(-52, 115)
left(20)
circle(100, 20)
circle(300, 20)
speed(1)
fd(250)

penup()
speed(0)
left(180)
fd(250)
circle(-300, 7)
right(80)
circle(200, 5)
pendown()

left(60)
begin_fill()
fillcolor('green')
circle(-80, 100)
right(90)
fd(10)
left(20)
circle(-63, 127)
end_fill()

penup()
left(50)
fd(20)
left(180)

pendown()
circle(200, 25)

penup()
right(150)

fd(180)

right(40)
pendown()
begin_fill()
fillcolor('green')
circle(-100, 80)
right(150)
fd(10)
left(60)
circle(-80, 98)
end_fill()

penup()
left(60)
fd(13)
left(180)

pendown()
speed(1)
circle(-200, 23)

exitonclick()

文章转载自看见月亮的人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论