Python+Turtle绘制航海王草帽路飞详解

 更新时间:2022年03月10日 11:59:02   作者:挣扎的蓝藻  
turtle库是一个点线面的简单图像库,在Python2.6之后被引入进来,能够完成一些比较简单的几何图像可视化。本文将利用turtle绘制一个可爱的草帽路飞,感兴趣的可以试一试

一、程序运行

1.效果展示 - 轮廓描绘

看轮廓描绘效果:

2.效果展示 - 颜色填充

衣服和裤子颜色填充效果:

二、实现过程

1.绘图数据下载

获取地址

内容预览:

2.海龟绘图配置项

降低刷新率可提升绘制速度,值越大刷新频率越低,速度越快

t.tracer(5000)

def set_trutle():
    '''
     作用:海龟绘图配置项
     参数:无
     返回:无
    '''
    # 默认颜色区间是[0,1],切换为[0,255]
    t.Screen().colormode(255)
    # 设置起始大小
    t.setup(width=x, height=y)
    # 调整坐标,
    t.setworldcoordinates(0,y,x,0)
    t.pen()
    # 设置绘制速度,0为最快
    t.speed(0)
    # 禁用延迟提升速度
    t.delay(0)
    # 提升速度,值越大越快
    t.tracer(5000)
    # 设置默认画笔颜色为白色
    t.pencolor((255,255,255))
    # 抬起画笔
    t.penup()

3.轮廓绘制

通过下落画笔 t.pendown()

和抬起画笔 t.penup()

来避免连线问题。

def draw_lufei_outline():
    '''
     作用:绘制路飞轮廓
     参数:无
     返回:无
    '''
    
    # 数据文件读取
    f=open("lufei.txt","r")
    bigmom_date = f.read().split(" ")
    
    for i in bigmom_date:
        try:
            # 数据分离与转化
            j = i.split("_")
            x1 = round(float(j[0]))
            y1 = round(float(j[1]))
            color = j[2][1:-1].split(",")
            color[0]=int(color[0])
            color[1]=int(color[1])
            color[2]=int(color[2])
            
            if((color[0]*0.299 + color[1]*0.587 + color[2]*0.114)>50):
                color = (255,255,255);
            
            # 下落画笔
            t.pendown()
            # 解决图像只绘制一半的问题
            t.sety(y1)
            # 轨迹追踪与绘制
            t.goto(x1, y1)
            t.color(color)
            # 抬起画笔
            t.penup()
        except Exception as e:
            print()
            
    f.close()
    print("轮廓绘制完成")

效果图演示:

4.颜色填充:衣服、裤子

绘制衣服、裤子的红色和蓝色。

def draw_lufei_tintage1():
    '''
     作用:路飞颜色填充:衣服、帽子
     参数:无
     返回:无
    '''
    
    # 数据文件读取
    f=open("lufei.txt","r")
    bigmom_date = f.read().split(" ")
    
    for i in bigmom_date:
        try:
            # 数据分离与转化
            j = i.split("_")
            x1 = int(j[0])
            y1 = int(j[1])

            color = j[2][1:-1].split(",")
            color[0]=int(color[0])
            color[1]=int(color[1])
            color[2]=int(color[2])
            
            if((color[0]*0.299 + color[1]*0.587 + color[2]*0.114)>150):
                color = (255,255,255);
                
            # 下落画笔
            t.pendown()
            # 解决图像只绘制一半的问题
            t.sety(y1)
            # 轨迹追踪与绘制
            t.goto(x1, y1)
            t.color(color)
            # 抬起画笔
            t.penup()
        except Exception as e:
            print()
            
    f.close()
    print("上色完成")

效果图演示:

5.颜色填充:草帽、腰带

绘制草帽、腰带的黄色。

def draw_lufei_tintage2():
    '''
     作用:路飞颜色填充:草帽、腰带
     参数:无
     返回:无
    '''
    
    # 数据文件读取
    f=open("lufei.txt","r")
    bigmom_date = f.read().split(" ")
    
    for i in bigmom_date:
        try:
            # 数据分离与转化
            j = i.split("_")
            x1 = int(j[0])
            y1 = int(j[1])

            color = j[2][1:-1].split(",")
            color[0]=int(color[0])
            color[1]=int(color[1])
            color[2]=int(color[2])
            
            if((color[0]*0.299 + color[1]*0.587 + color[2]*0.114)>215):
                color = (255,255,255);
                
            # 下落画笔
            t.pendown()
            # 解决图像只绘制一半的问题
            t.sety(y1)
            # 轨迹追踪与绘制
            t.goto(x1, y1)
            t.color(color)
            # 抬起画笔
            t.penup()
        except Exception as e:
            print()
            
    f.close()
    print("上色完成")

效果图演示:

6.完整源码

# -*- coding:utf-8 -*-
# 2022-3-9
# 作者:小蓝枣
# 图像绘制:路飞

import turtle as t
import time

x = 224
y = 345

def set_trutle():
    '''
     作用:海龟绘图配置项
     参数:无
     返回:无
    '''
    # 默认颜色区间是[0,1],切换为[0,255]
    t.Screen().colormode(255)
    # 设置起始大小
    t.setup(width=x, height=y)
    # 调整坐标,
    t.setworldcoordinates(0,y,x,0)
    t.pen()
    # 设置绘制速度,0为最快
    t.speed(0)
    # 禁用延迟提升速度
    t.delay(0)
    # 提升速度,值越大越快
    t.tracer(5000)
    # 设置默认画笔颜色为白色
    t.pencolor((255,255,255))
    # 抬起画笔
    t.penup()

def draw_lufei_outline():
    '''
     作用:绘制路飞轮廓
     参数:无
     返回:无
    '''
    
    # 数据文件读取
    f=open("lufei.txt","r")
    bigmom_date = f.read().split(" ")
    
    for i in bigmom_date:
        try:
            # 数据分离与转化
            j = i.split("_")
            x1 = round(float(j[0]))
            y1 = round(float(j[1]))
            color = j[2][1:-1].split(",")
            color[0]=int(color[0])
            color[1]=int(color[1])
            color[2]=int(color[2])
            
            if((color[0]*0.299 + color[1]*0.587 + color[2]*0.114)>50):
                color = (255,255,255);
            
            # 下落画笔
            t.pendown()
            # 解决图像只绘制一半的问题
            t.sety(y1)
            # 轨迹追踪与绘制
            t.goto(x1, y1)
            t.color(color)
            # 抬起画笔
            t.penup()
        except Exception as e:
            print()
            
    f.close()
    print("轮廓绘制完成")
    
def draw_lufei_tintage1():
    '''
     作用:路飞颜色填充:衣服、帽子
     参数:无
     返回:无
    '''
    
    # 数据文件读取
    f=open("lufei.txt","r")
    bigmom_date = f.read().split(" ")
    
    for i in bigmom_date:
        try:
            # 数据分离与转化
            j = i.split("_")
            x1 = int(j[0])
            y1 = int(j[1])

            color = j[2][1:-1].split(",")
            color[0]=int(color[0])
            color[1]=int(color[1])
            color[2]=int(color[2])
            
            if((color[0]*0.299 + color[1]*0.587 + color[2]*0.114)>150):
                color = (255,255,255);
                
            # 下落画笔
            t.pendown()
            # 解决图像只绘制一半的问题
            t.sety(y1)
            # 轨迹追踪与绘制
            t.goto(x1, y1)
            t.color(color)
            # 抬起画笔
            t.penup()
        except Exception as e:
            print()
            
    f.close()
    print("上色完成")
    
def draw_lufei_tintage2():
    '''
     作用:路飞颜色填充:草帽、腰带
     参数:无
     返回:无
    '''
    
    # 数据文件读取
    f=open("lufei.txt","r")
    bigmom_date = f.read().split(" ")
    
    for i in bigmom_date:
        try:
            # 数据分离与转化
            j = i.split("_")
            x1 = int(j[0])
            y1 = int(j[1])

            color = j[2][1:-1].split(",")
            color[0]=int(color[0])
            color[1]=int(color[1])
            color[2]=int(color[2])
            
            if((color[0]*0.299 + color[1]*0.587 + color[2]*0.114)>215):
                color = (255,255,255);
                
            # 下落画笔
            t.pendown()
            # 解决图像只绘制一半的问题
            t.sety(y1)
            # 轨迹追踪与绘制
            t.goto(x1, y1)
            t.color(color)
            # 抬起画笔
            t.penup()
        except Exception as e:
            print()
            
    f.close()
    print("上色完成")

set_trutle()
draw_lufei_outline()
draw_lufei_tintage1()
draw_lufei_tintage2()
time.sleep(10000)

以上就是Python+Turtle绘制航海王草帽路飞详解的详细内容,更多关于Python Turtle路飞的资料请关注脚本之家其它相关文章!

相关文章

  • Python实现多格式文本转为word

    Python实现多格式文本转为word

    在现代工作中,我们常常需要处理不同格式的文件,其中Word文档是最为常见的一种,本文主要介绍了如何使用Python创建一个全能的文件处理工具,能够将多种格式的文件转换为Word文档,需要的可以参考下
    2023-11-11
  • Python调用钉钉自定义机器人的实现

    Python调用钉钉自定义机器人的实现

    这篇文章主要介绍了Python调用钉钉自定义机器人的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python实现i人事自动打卡的示例代码

    Python实现i人事自动打卡的示例代码

    这篇文章主要介绍了Python实现i人事自动打卡的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • python实现windows倒计时锁屏功能

    python实现windows倒计时锁屏功能

    这篇文章主要介绍了python实现windows倒计时锁屏功能,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • python 怎样将dataframe中的字符串日期转化为日期的方法

    python 怎样将dataframe中的字符串日期转化为日期的方法

    这篇文章主要介绍了python 怎样将dataframe中的字符串日期转化为日期的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Python创建类的方法及成员访问的相关知识总结

    Python创建类的方法及成员访问的相关知识总结

    今天给大家带来的是关于Python基础的相关知识,文章围绕着Python类的方法及成员访问展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Python用access判断文件是否被占用的实例方法

    Python用access判断文件是否被占用的实例方法

    在本篇文章里小编给大家整理的是一篇关于Python用access判断文件是否被占用的实例方法,有兴趣的朋友们可以学习下。
    2020-12-12
  • Django 过滤器汇总及自定义过滤器使用详解

    Django 过滤器汇总及自定义过滤器使用详解

    这篇文章主要介绍了Django 过滤器汇总及自定义过滤器使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南

    在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南

    这篇文章主要介绍了在Python 2.7即将停止支持时我们为你准备了一份python 3.x迁移指南的相关资料,需要的朋友可以参考下
    2018-01-01
  • 如何使用python实现模拟鼠标点击

    如何使用python实现模拟鼠标点击

    这篇文章主要介绍了如何使用python实现模拟鼠标点击,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论