Python+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路飛的資料請關註WalkonNet其它相關文章!

推薦閱讀: