当前位置: 首页 > article >正文

小爱心换着玩

使用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-30
3, 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");

}

http://www.kler.cn/a/323256.html

相关文章:

  • SpringBoot+React养老院管理系统 附带详细运行指导视频
  • 006.精读《Apache Paimon Docs - Concepts》
  • AI驱动的桌面笔记应用Reor
  • 传奇996_24——变量lua
  • 【C++】构造函数
  • 【模板】字典树luoguP8306
  • 【python】横截面数据分析及可视化报告示例
  • 拉格朗日插值讲解与MATLAB例程
  • (24)k8s部署mysql
  • django基于python的房价分析可视化系统的设计与开发 h1y0i
  • 洗浴中心澡堂污水处理设备主要包括以下几个步骤
  • 分享一下PHP基本语法总结
  • DERT目标检测源码流程图main.py的执行
  • 微信支付准备工作之内网穿透2024/9/28
  • 面向未来的设计:推动企业架构创新的关键——The Open Group 2024生态系统架构与可持续发展年度大会
  • 了解HTTPS
  • 如何在 Windows 台式机或笔记本电脑上恢复未保存的 Excel 文件
  • 【AI创作组】MATLAB基础语法总结
  • matlab处理语音信号
  • scikit-sparse安装
  • 【LLM多模态】文生视频综述From Sora What We Can See: A Survey of Text-to-Video Generation
  • 万户OA-ezOFFICE fileUpload.controller 任意文件上传漏洞复现
  • 保姆级复现yolov7(论文复现)
  • class 026 哈希表、有序表和比较器的用法
  • Linux云计算 |【第四阶段】PROJECT2-DAY2
  • Nginx+Tomcat负载均衡、反向代理