轻松学会python的turtle模块,画一箭穿心、小人儿发射爱心、520表白完整代码,海龟作图小创意「建议收藏」

轻松学会python的turtle模块,画一箭穿心、小人儿发射爱心、520表白完整代码,海龟作图小创意「建议收藏」当我们学了turtle后(如果不懂turtle模块的话,文章末尾会详细介绍的),就想尝试为自己心里喜欢的人画一颗一颗爱心,想用代码逗自己的小猪猪女孩开心,表达自己的爱意,那么福利来了,动动小手指,复制粘贴即可,不过有些地方需要适当修改,快给自己心爱的女孩看看吧importturtleimporttime#实现清屏defclear_screen():

大家好,又见面了,我是你们的朋友全栈君。

本文导航:若您是直接想要代码,那么请您移步代码区,复制粘贴即可;若您是想了解turtle模块更多知识的话,请您移步turtle模块知识区;若您想看完本文呢,那我定是感激涕零啦(✪ω✪)

您可以选择选择如下区域或不作选择浏览本文:

       当我们学了turtle后(如果不懂turtle模块的话,文章末尾会详细介绍的),就想尝试为自己心里喜欢的人画一颗一颗爱心,想用代码逗自己的小猪猪女孩开心,表达自己的爱意,那么福利来了,动动小手指,复制粘贴即可,不过有些地方需要适当修改,快给自己心爱的女孩看看吧?!!!

代码区

端上代码:

       .----.
      _.'__ `. .--(#)(##)---/#\ .' @          /###\
:         ,   #####
 `-..__.-' _.-\###/ `;_: `"'
     .'"""""`. /, JOE ,\ // COOL! \\ `-._______.-'
   ___`. | .'___ 
  (______|______)
  
                       |                   
                __\--__|_ 
II=======OOOOO[/02 ___|           
          _____\______|/-----. 
        /____________________|              
         \◎◎◎◎◎◎◎◎⊙/ 
           ~~~~~~~~~~~~~~~~ 

搞错了,再来(以上图案纯属娱乐,勿怪勿怪)

import turtle
import time

# 实现清屏
def clear_screen():
    turtle.penup()             #画笔抬起
    turtle.goto(0,0)        #定位到(0,0)
    turtle.color('white')
    turtle.pensize(800)         #画笔粗细
    turtle.pendown()           #画笔落下
    turtle.setheading(0)        #设置朝向
    turtle.fd(300)       #前进
    turtle.bk(600)      #后退

# 初始化海龟的位置
def go_start(x, y, state):
    turtle.pendown() if state else turtle.penup()
    turtle.goto(x, y)

#画线,state为真时海龟回到原点,为假时不回到原来的出发点
def draw_line(length, angle, state):
    turtle.pensize(1)
    turtle.pendown()
    turtle.setheading(angle)
    turtle.fd(length)
    turtle.bk(length) if state else turtle.penup()
    turtle.penup()

# 画出发射爱心的小人
def draw_people(x, y):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()
    turtle.pensize(2)
    turtle.color('black')
    turtle.setheading(0)
    turtle.circle(35, 360)
    turtle.penup()
    turtle.pensize(3)
    turtle.setheading(90)
    turtle.fd(45)
    turtle.setheading(180)
    turtle.fd(20)
    turtle.setheading(0)
    turtle.fd(35)
    turtle.pendown()
    turtle.circle(4, 360)
    turtle.penup()
    turtle.goto(x, y)
    turtle.pensize(2)
    turtle.setheading(0)
    turtle.fd(20)
    turtle.setheading(90)
    turtle.fd(20)
    turtle.setheading(-90)
    turtle.pendown()
    turtle.circle(5, 180)
    turtle.penup()
    turtle.goto(x, y)
    turtle.setheading(-90)
    turtle.pendown()
    turtle.fd(20)
    turtle.setheading(0)
    turtle.fd(35)
    turtle.setheading(60)
    turtle.fd(10)
    turtle.penup()
    turtle.goto(x, y)
    turtle.setheading(-90)
    turtle.pendown()
    turtle.fd(40)
    turtle.setheading(0)
    turtle.fd(35)
    turtle.setheading(-60)
    turtle.fd(10)
    turtle.penup()
    turtle.goto(x, y)
    turtle.setheading(-90)
    turtle.pendown()
    turtle.fd(60)
    turtle.setheading(-135)
    turtle.fd(60)
    turtle.bk(60)
    turtle.setheading(-45)
    turtle.fd(30)
    turtle.setheading(-135)
    turtle.fd(35)
    turtle.penup()


# 画爱心
def draw_heart(size):
    turtle.color('red', 'pink')
    turtle.pensize(2)
    turtle.pendown()
    turtle.setheading(150)
    turtle.begin_fill()
    turtle.fd(size)
    turtle.circle(size * -3.745, 45)
    turtle.circle(size * -1.431, 165)
    turtle.left(120)
    turtle.circle(size * -1.431, 165)
    turtle.circle(size * -3.745, 45)
    turtle.fd(size)
    turtle.end_fill()

# 画箭羽
def draw_feather(size):
    angle = 30  # 箭的倾角
    feather_num = size // 6    # 羽毛的数量
    feather_length = size // 3     # 羽毛的长度
    feather_gap = size // 10     # 羽毛的间隔
    for i in range(feather_num):
        draw_line(feather_gap, angle + 180, False)  # 箭柄,不折返
        draw_line(feather_length, angle + 145, True)  # 羽翼,要折返
    draw_line(feather_length, angle + 145, False)
    draw_line(feather_num * feather_gap, angle, False)
    draw_line(feather_length, angle + 145 + 180, False)
    for i in range(feather_num):
        draw_line(feather_gap, angle + 180, False)   # 箭柄,不折返
        draw_line(feather_length, angle - 145, True)    # 羽翼,要折返
    draw_line(feather_length, angle - 145, False)
    draw_line(feather_num * feather_gap, angle, False)
    draw_line(feather_length, angle - 145 + 180, False)

# 画一箭穿心,最后箭的头没有画出来,用海龟来代替
def arrow_heart(x, y, size):
    go_start(x, y, False)
    draw_heart(size * 1.15)
    turtle.setheading(-150)
    turtle.penup()
    turtle.fd(size * 2.2)
    draw_heart(size)
    turtle.penup()
    turtle.setheading(150)
    turtle.fd(size * 2.2)
    turtle.color('black')
    draw_feather(size)
    turtle.pensize(4)
    turtle.setheading(30)
    turtle.pendown()
    turtle.fd(size * 2)
    turtle.penup()
    turtle.setheading(29)
    turtle.fd(size * 5.7)
    turtle.color('black')
    turtle.pensize(4)
    turtle.pendown()
    turtle.fd(size * 1.2)

#显示倒数3,2,1
def draw_0(i):
    turtle.speed(0)
    turtle.penup()
    turtle.hideturtle()  # 隐藏箭头显示
    turtle.goto(-50, -100)
    turtle.color('red')
    write = turtle.write(i, font=('宋体', 200, 'normal'))
    time.sleep(1)

# 显示文字
def draw_1():
    turtle.penup()
    turtle.hideturtle()    #隐藏箭头显示
    turtle.goto(-250, 0)
    turtle.color('red')
    write = turtle.write('臭猪猪,接招', font=('宋体', 60, 'normal'))
    time.sleep(2)

# 显示发射爱心的小人儿
def draw_2():
    turtle.speed(3)
    draw_people(-250, 20)
    turtle.penup()
    turtle.goto(-150, -30)
    draw_heart(14)
    turtle.penup()
    turtle.goto(-20, -60)
    draw_heart(25)
    turtle.penup()
    turtle.goto(205, -100)
    draw_heart(43)
    turtle.hideturtle()
    time.sleep(2)

def draw_3():
    turtle.penup()
    turtle.hideturtle()  # 隐藏箭头显示
    turtle.goto(-220, 50)
    turtle.color('red')
    write = turtle.write('?不离', font=('宋体', 60, 'normal'))
    turtle.penup()
    turtle.goto(0, -50)
    write = turtle.write('不弃?', font=('宋体', 60, 'normal'))
    time.sleep(2)


# 显示一箭穿心
def draw_4():
    turtle.speed(10)
    turtle.penup()
    turtle.goto(-210, -200)
    turtle.color('blue')
    turtle.pendown()
    turtle.write('YRB CQZ', font=('wisdom', 50, 'normal'))
    turtle.speed(1)
    turtle.penup()
    turtle.color("red")
    turtle.goto(-31, -200)
    turtle.write('❤',font=('wisdom', 50, 'normal'))
    arrow_heart(20, -60, 51)
    turtle.showturtle()


number=[3,2,1]    #储存显示界面倒数数字1,2,3

if __name__ == '__main__':
    turtle.setup(900, 500)     #调画布的尺寸
    for i in number:
        draw_0(i)
        clear_screen()
    draw_1()
    clear_screen()
    draw_2()
    clear_screen()
    draw_3()
    clear_screen()
    draw_4()
    turtle.done()

部分效果展示:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

turtle模块知识区:

       以上就是本文的核心了,你有没有被惊艳到呢(略微有点夸张ಠᴗಠ),好了,在本文的最后还是介绍一下所用到的模块吧

首先呢,介绍一下turtle模块吧:
       turtle模块,也称海龟模块。之所以叫海龟模块呢,是因为运用此模块画图时,就感觉像一只小海龟,在沙滩上爬呀爬,然后留下了痕迹(可以闭上眼想象一下,哈哈哈)
       那么,关于turtle模块有哪些知识点呢?
       如果想实现乌龟在海滩爬行,那么除了乌龟还需要什么呢,没错,就是海滩了。因为常常把画笔(箭头)比作乌龟,所以画布(canvas)就相当于海滩了。不仅如此,我们还可以自定义画布的大小和初始位置
如何设置画布大小:

turtle.screensize(canvwidth=None, canvheight=None, bg=None)

参数:

canvwidth:画布的宽度(单位:像素)
canvheight:画布的高度(单位:像素)
bg:背景颜色
若不设置值,默认参数为(400,300,None) 用Pen创建的就是默认大小

如何设置画布位置:

turtle.setup(width=0.5, height=0.75, startx=None, starty=None)

参数:

width,height:输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例
(startx,starty):这一坐标表示矩形窗口左上角顶点的位置。如果为空,则窗口位于屏幕中心

       介绍完画布呢,就该介绍画笔了吧,然而操纵海龟绘图有着许多的命令,这些命令可以划分为两种:一种是运动命令,一种是画笔控制命令
所谓控制命令就是控制画笔向什么方向移动,向什么方向转动,抬起画笔还是放下画笔等,而运动命令呢,就是形如画笔向前移动多少,后退多少,转多少角度等,如下:

turtle.pendown() 移动时绘制图形,缺省时也为绘制

turtle.penup() 移动时不绘制图形,提起笔,用于另起一个地方绘制时用

turtle.setheading(degree) 海龟朝向(:degree代表角度)

turtle.pensize(width) 画笔的宽度

turtle.pencolor(colorstring) 没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色(RGB、字符串)

turtle.fillcolor(colorstring) 绘制图形的填充颜色

turtle.color(color1, color2) 同时设置pencolor=color1,fillcolor=color2

turtle.filling() 返回当前是否在填充状态

turtle.begin_fill() 准备开始填充图形

turtle.end_fill() 填充完成;

turtle.hideturtle() 隐藏箭头显示;

turtle.showturtle() 与hideturtle()函数对应

turtle.reset() 恢复所有设置

turtle.forward(distance) 向当前画笔方向移动distance像素长

turtle.backward(distance) 向当前画笔相反方向移动distance像素长度

turtle.right(degree) 向右转动多少度

turtle.left(degree) 向左转动多少度

turtle.goto(x,y) 将画笔移动到坐标为(x,y)的位置

turtle.stamp() 绘制当前图形

turtle.speed(speed) 设置画笔的速度,speed属于[0, 10]区间的整数,数字越大速度越快

turtle.circle() 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

turtle.clear() (全局)清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset() (全局)清空窗口,重置turtle状态为起始状态

turtle.undo() (全局)撤销上一个turtle动作

turtle.isvisible() (全局)返回当前turtle是否可见

stamp() (全局)复制当前图形

       结合上述代码与这些函数方法应该可以学会turtle模块了吧,差不多文章到这里就结束了!最后呢,希望大家

                  ,;,,;
                 ,;;'(    马
       __      ,;;' ' \   ┇
    /' '\'~~'~' \ /'\.),;(      )    /  |.,;' \    /-.,,(   ) \     成
     ) /       ) / )|||        ||  \)(_\       (_\

✿✿ヽ(°▽°)ノ✿撒花~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154082.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot 热部署[通俗易懂]

    SpringBoot 热部署[通俗易懂]SpringBoot热部署的作用在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。而SpringBoot中启用热部署后就变成了非常简单的一件事,因为SpringBoot为我们提供了一个非常方便的工具spring-boot-devtools,我们只需要把这个工具引入到工程里就OK了。作用当项目是启动状态时,修改静态文件并保存后,不需要重启项目来达到使静态文件生效的目的。注意:如果页面包含java代码等后台代码,那么修改这些后台代码热部署就不

    2025年7月27日
    7
  • 静态库和动态库区别

    静态库和动态库区别转自静态库和动态库区别前言我们在编写代码的时候经常用到已有的接口 他们是以库的形式提供给我们使用的 而常见形式有两种 一种常以 a 为后缀 为静态库 另一种以 so 为后缀 为动态库 那么这两种库有什么区别呢 说明 本文主要说明 Linux 下的情况 windows 不涉及 目标文件在解释静态库和动态库之前 需要简单了解一下什么是目标文件 目标文件常常按照特定格式来组织 在 linux 下 它是 ELF 格式 ExecutableLi 可执行可链接格式 而在 windows 下是 PE P

    2025年7月6日
    7
  • redis通过6379端口无法连接服务器

    redis通过6379端口无法连接服务器看了网上很多解决方案,都是端口问题,将127.0.0.1改为0.0.0.0,就ok了,但是本人的问题不是端口问题,端口本来就是0.0.0.0。其实redis无法连接数据库就只有这几种可能,防火墙,安全组,密码,绑定IP。这次的问题感觉还是比较让人费解的,当更换端口号的时候就可以,默认端口6379就是不行。按照顺序依次检查了防火墙,安全组,密码,配置文件,都确认没有问题之后,再次启动redis,…

    2022年6月7日
    33
  • SPI接口简介-Piyu Dhaker

    SPI接口简介-Piyu DhakerSPI接口简介作者:PiyuDhaker串行外设接口(SPI)是微控制器和外围IC(如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用最广泛的接口之一。本文先简要说明SPI接口,然后介绍ADI公司支持SPI的模拟开关与多路转换器,以及它们如何帮助减少系统电路板设计中的数字GPIO数量。SPI是一种同步、全双工、主从式接口。来自主机或从机的数据在时钟上升沿或下降沿同步。主机和从机可以同时传输数据。SPI接口可以是3线式或4线式。本文重点介绍常用的4线SPI接口。接口图1.含主机和从

    2022年6月22日
    71
  • React项目的国际化

     最近做的react项目需要支持国际化,网上查了一下,发现一款很好的插件“react-intl-universal”,由阿里巴巴团队开发,这款插件是原先的国际化插件“react-intl”的升级版,“react-intl”因为一些“致命”缺陷现已被其取代,npm官网有罗列原因,有兴趣的可以去了解一下。下面具体介绍一下这款插件的使用方法。1.安装npminstallreact-i…

    2022年4月12日
    44
  • HDU 2896 病毒侵袭 AC自己主动机题解

    HDU 2896 病毒侵袭 AC自己主动机题解

    2022年1月25日
    70

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号