使用Python画出小人发射爱心的代码
from turtle import *
from time import sleep
def go_to(x, y):
up()
goto(x, y)
down()
def head(x,y,r):
go_to(x,y)
speed(1)
circle(r)
leg(x,y)
def leg(x,y):
right(90)
forward(180)
right(30)
forward(100)
left(120)
go_to(x,y-180)
forward(100)
right(120)
forward(100)
left(120)
hand(x,y)
def hand(x,y):
go_to(x,y-60)
forward(100)
left(60)
forward(100)
go_to(x, y - 90)
right(60)
forward(100)
right(60)
forward(100)
left(60)
eye(x,y)
def eye(x,y):
go_to(x-50,y+130)
right(90)
forward(50)
go_to(x+40,y+130)
forward(50)
left(90)
def big_Circle(size):
speed(20)
for i in range(150):
forward(size)
right(0.3)
def line(size):
speed(1)
forward(51*size)
def small_Circle(size):
speed(10)
for i in range(210):
forward(size)
right(0.786)
def heart(x, y, size):
go_to(x, y)
left(150)
begin_fill()
line(size)
big_Circle(size)
small_Circle(size)
left(120)
small_Circle(size)
big_Circle(size)
line(size)
end_fill()
def main():
pensize(2)
color('red', 'pink')
head(-120, 100, 100)
heart(250, -80, 1)
go_to(200, -300)
write("To: 智慧与美貌并存的", move=True, align="left", font=("楷体", 20, "normal"))
done()
main()
基于Python绘制表白代码
绘制代码
实现本文效果的整体思路是:加载库—选择背景音乐—绘制心的外轮廓—填充心并写告白信—绘制心动线。
1.导入库
import os
import pygame
import turtle as t
本文应用到的库较少,只应用了os、pygame和turtle三个库。
os库可以设置文件读取的位置。
pygame库是为了绘制过程更有趣,在绘图过程中添加了背景音乐,如果无需背景音乐,不用加载该库。
turtle库是绘图库,相当于给你一支画笔,你可以在画布上用数学逻辑控制的代码完成绘图。
2.选择背景音乐
接着应用pygame库播放背景音乐,本文的音乐是《 爱你》。
#播放音乐
print(‘播放音乐’)
pygame.mixer.init()
pygame.mixer.music.load(r"E:\预备\520\王心凌-《爱你》.mp3")
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(1, 10)
这一部分的代码和整体代码是剥离的,可以选泽在最开始放上该代码,也可以直接删除。如果选择播放音乐,需要在代码music.load函数中把你想放音乐的地址填进去。
3.绘制心的外轮廓
然后绘制心的外轮廓,代码如下:
t.title(‘阿黎逸阳的代码公众号’)
t.speed(10)
#t.screensize(1000, 800)
t.setup(startx=0, starty = 0, width=800, height = 600)
t.hideturtle()
print(‘画爱心’)
#画爱心
def heart(x, y):
t.penup()
t.goto(x, y)
t.pendown()
t.color(‘pink’)
t.setheading(50)
t.circle( -5, 180)
t.circle( -45, 12)
t.setheading(130)
t.circle( -45, 12)
t.circle( -5, 180)
heart(-30, 155)
heart(-220, 145)
heart(-210, 60)
heart(-100, 100)
heart(-20, 20)
heart(-70, 130)
heart(-140, -20)
heart(30, 100)
heart(-60, -20)
heart(10, 60)
heart(-100, -70)
heart(20, 145)
heart(-140, -20)
heart(-130, 130)
heart(-180, 20)
heart(-170, 155)
heart(-230, 100)
关键代码详解:
t.penup():抬起画笔,一般用于另起一个地方绘图使用。
t.goto(x,y):画笔去到某个位置,参数为(x,y),对应去到的横坐标和纵坐标。
t.pendown():放下画笔,一般和penup组合使用。
t.color(color):设置画笔的颜色。
t.setheading(θ):设置海龟头与横坐标偏离的度数。
t.circle(radius,extent,steps):radius指半径,若为正,半径在小乌龟左侧radius远的地方,若为负,半径在小乌龟右侧radius远的地方;extent指弧度;steps指阶数。画外轮廓的关键是:通过调节circle函数中的半径和弧度来调节曲线的弧度,从而使得小蜜蜂的轮廓比较流畅。
4.填充心并写告白信
接下来边填充心,边写告白信,代码如下:
def write_mes(x, y, size, ss):
t.hideturtle()
t.penup()
t.goto(x, y)
t.pendown()
t.pencolor(‘black’)
t.write(ss, font=(‘Times New Roman’, size, ‘normal’))
#画红心
print(‘画红心’)
def heart_fill(x, y):
t.penup()
t.goto(x, y)
t.pendown()
t.color(‘red’, ‘red’)
t.begin_fill()
t.setheading(50)
t.circle( -5, 180)
t.circle( -45, 12)
t.setheading(130)
t.circle( -45, 12)
t.circle( -5, 180)
t.end_fill()
x = 90
y = 110
#右边爱心
write_mes(x, y, 11, ‘想陪你不只一天’)
heart_fill(-100, 100)
heart_fill(-70, 130)
heart_fill(-30, 155)
heart_fill(20, 145)
heart_fill(30, 100)
write_mes(x, y-30, 11, ‘多一点让我心甘情愿 爱你’)
heart_fill(10, 60)
heart_fill(-20, 20)
heart_fill(-60, -20)
heart_fill(-100, -70)
#左边爱心
write_mes(x, y-302, 11, ‘就这样 一天多一点’)
heart_fill(-140, -20)
heart_fill(-180, 20)
heart_fill(-210, 60)
heart_fill(-230, 100)
write_mes(x, y-303, 11, ‘慢慢地累积感觉’)
heart_fill(-220, 145)
heart_fill(-170, 155)
heart_fill(-130, 130)
write_mes(x, y-30*4, 11, ‘两人的世界就能够贴近一点’)
5.画心动线
最后是写姓名并画心动线,代码如下:
t.speed(15)
print(‘画心动线’)
def heart_bit():
#画心动线
t.penup()
t.goto(-170, 40)
t.pendown()
t.pencolor(‘red’)
t.setheading(0)
t.pensize(2)
t.forward(10)
#第一个小波浪
t.setheading(45)
t.circle(50, 10)
t.setheading(0)
t.circle(-3,90)
t.circle(50, 5)
#横线
t.setheading(0)
t.forward(10)
#第一个下尖峰
t.setheading(-80)
t.forward(7)
t.setheading(70)
t.forward(25)
t.setheading(-85)
t.forward(29)
t.setheading(70)
t.forward(13)
t.setheading(0)
t.forward(15)
#画心
t.setheading(150)
t.circle(-20, 40)
t.circle(-10, 170)
t.setheading(70)
t.circle(-10, 170)
t.circle(-20, 40)
t.setheading(0)
t.forward(15)
#2
t.setheading(-80)
t.forward(7)
t.setheading(70)
t.forward(25)
t.setheading(-85)
t.forward(29)
t.setheading(70)
t.forward(13)
t.setheading(0)
t.forward(15)
t.setheading(0)
t.forward(10)
t.setheading(45)
t.circle(50, 10)
t.setheading(0)
t.circle(-3,90)
t.circle(50, 5)
t.setheading(0)
t.forward(10)
def write_name(x, y, size, ss):
t.hideturtle()
t.penup()
t.goto(x, y)
t.pendown()
t.pencolor(‘black’)
t.write(ss, font=(‘Times New Roman’, size, ‘normal’))
def undo_back():
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
def undo_back2():
t.undo()
t.undo()
def name_heart_bit():
#写两个人的姓名(需替换成真实姓名)
write_name(-180, 70, 11, ‘韩商言’)
write_name(-180, 70, 11, ‘韩商言’)
write_name(-180, 70, 11, ‘韩商言’)
heart_bit()
write_name(-60, 70, 11, ‘佟年’)
write_name(-60, 70, 11, ‘佟年’)
write_name(-60, 70, 11, ‘佟年’)
write_name(-60, 70, 11, ‘佟年’)
write_name(-60, 70, 11, ‘佟年’)
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back2()
while 1:
name_heart_bit()
绘制成品:
利用turtle画爱心代码
思路:
第一步,考虑从“心尖”的位置开始,先向左上角画一条直线,与y轴的夹角设为45度:
第二步,心形的上方是一个弧形,可以设计成从原先的斜率开始,每前进1单位转1单位角度,画一个半圆:
第三步,右侧基本重复,但调整一下旋转角度,相应的各个参数的关系也很容易推:
那么代码如下:
import turtle
# set a window
wn = turtle.Screen()
wn.bgcolor("black")
wn.screensize(800, 600)
# set a pen
pen = turtle.Turtle()
pen.color("pink")
pen.shape("turtle")
#画笔形状设成了非常可爱的海龟hh
pen.fillcolor("pink")
turtle.speed(10)
# define functions
def curve():
for i in range(180):
pen.right(1)
pen.forward(2)
def heart():
pen.left(135)
pen.forward(720/3.14)
curve()
pen.left(90)
curve()
pen.forward(720/3.14)
def text():
pen.penup()
pen.setpos(-50,50)
pen.pendown()
pen.color("white")
pen.write(input("enter the words:"), font = ("Verdana", 30, "bold"))
# painting!
pen.begin_fill()
pen.penup()
pen.setpos(0,-150)
pen.pendown()
heart()
pen.end_fill()
text()
turtle.done()
效果:
another-python爱心代码
import turtle
import time
# 画爱心的顶部
def LittleHeart():
for i in range(200):
turtle.right(1)
turtle.forward(2)
# 输入表白的语句,默认I Love you
love = input('Please enter a sentence of love, otherwise the default is "I Love you": ')
# 输入署名或者赠谁,没有不执行
me = input('Please enter pen name, otherwise the default do not execute: ')
if love == '':
love = 'I Love you'
# 窗口大小
turtle.setup(width=900, height=500)
# 颜色
turtle.color('red', 'pink')
# 笔粗细
turtle.pensize(3)
# 速度
turtle.speed(1)
# 提笔
turtle.up()
# 隐藏笔
turtle.hideturtle()
# 去到的坐标,窗口中心为0,0
turtle.goto(0, -180)
turtle.showturtle()
# 画上线
turtle.down()
turtle.speed(1)
turtle.begin_fill()
turtle.left(140)
turtle.forward(224)
# 调用画爱心左边的顶部
LittleHeart()
# 调用画爱右边的顶部
turtle.left(120)
LittleHeart()
# 画下线
turtle.forward(224)
turtle.end_fill()
turtle.pensize(5)
turtle.up()
turtle.hideturtle()
# 在心中写字 一次
turtle.goto(0, 0)
turtle.showturtle()
turtle.color('#CD5C5C', 'pink')
# 在心中写字 font可以设置字体自己电脑有的都可以设 align开始写字的位置
turtle.write(love, font=('gungsuh', 30,), align="center")
turtle.up()
turtle.hideturtle()
time.sleep(2)
# 在心中写字 二次
turtle.goto(0, 0)
turtle.showturtle()
turtle.color('red', 'pink')
turtle.write(love, font=('gungsuh', 30,), align="center")
turtle.up()
turtle.hideturtle()
# 写署名
if me != '':
turtle.color('black', 'pink')
time.sleep(2)
turtle.goto(180, -180)
turtle.showturtle()
turtle.write(me, font=(20,), align="center", move=True)
# 点击窗口关闭
window = turtle.Screen()
window.exitonclick()
使用C描绘心形
#include <stdio.h>
void main()
{
int i, j, k, l, m; char c=3;
for (i=1; i<=5; i++) printf("\n");
for (i=1; i<=3; i++)
{
for (j=1; j<=32-2*i; j++) printf(" ");
for (k=1; k<=4*i+1; k++) printf("%c", c);
for (l=1; l<=13-4*i; l++) printf(" ");
for (m=1; m<=4*i+1; m++) printf("%c", c);
printf("\n");
}
for (i=1; i<=3; i++)
{
for (j=1; j<=24+1; j++) printf(" ");
for (k=1; k<=29; k++) printf("%c", c);
printf("\n");
}
for (i=7; i>=1; i--)
{
for (j=1; j<=40-2*i; j++) printf(" ");
for (k=1; k<=4*i-1; k++) printf("%c", c);
printf("\n");
}
for (i=1; i<=39; i++) printf(" ");
printf("%c\n", c);
for (i=1; i<=4; i++) printf("\n");
}