手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

Python turtle藝術畫賞析

[日期:2019-04-16] 來源:Linux公社  作者:醉落紅塵 [字體: ]

我一直在玩Python的turtle圖形 - 這是一種有趣的學習方式,通過一些實驗和思考,你可以想出畫出各種有趣的圖像。

示例1:

第一張圖片的代碼非常簡單,繪制一束直線光線,使用嵌套循環使其變小,并且在每條射線的末尾涂鴉。

import turtle
import random
turtle.tracer(0, 0)
mi = turtle.Screen()
mi.colormode(255)
turtle.bgcolor("black")
alex = turtle.Turtle()
alex.speed(10)
alex.goto(0,0)
alex.pensize(0)
alex.ht()
for i in range(500):
    alex.color(random.randrange(256),random.randrange(256),random.randrange(256))
    alex.goto(round(random.gauss(0,150),0),round(random.gauss(0,150),0))
    x = alex.xcor()
    y = alex.ycor()
    for j in range(25):
                z = round(random.gauss(0,5), 0)
                a = round(random.gauss(0,5), 0)
                alex.color(random.randrange(256),random.randrange(256),random.randrange(256))
                alex.pensize(0)
                alex.goto(x + z, y + a)
    alex.goto(z,a)
turtle.update()
mi.exitonclick()

直線脈沖效果圖如下:

Python turtle藝術畫賞析

示例2:

畫三組同心彎曲的光線,從黑暗中浮現,生成隨機RGB值,sat range 0-1, val range = 0-1。

import random
import turtle
def colorGen(sat = 1, val = 1):
    rand1 = round(random.randrange(256)*val)
    rand2 = round(random.randrange(256)*val)
    sat2 = round((1-sat)*255)
    if rand1 >= rand2:
        rand1 = round(255*val)
    else:
        rand2 = round(255*val)
    color = [[sat2, rand1, rand2], [rand1, sat2, rand2], [sat2, rand2, rand1],
            [rand1, rand2, sat2], [rand2, sat2, rand1], [rand2, rand1, sat2]]
    return tuple(color[random.randrange(6)])
def timeTunnel(repeats = 1,linuxmi = 10, stepVar = 1):
    for i in range(repeats):
        alex.goto(0,0)
        alex.seth(random.uniform(0,360)) # 設定標題
        h1 = alex.heading() # 設定標題
        alex.color(colorGen(val=0))
        for j in range(10):
            alex.down()
            alex.forward(abs(round(random.gauss(10, stepVar),0)))
            alex.seth(h1 + random.gauss(0,linuxmi))
            x = alex.xcor()
            y = alex.ycor()
            alex.color(colorGen(val = j/10))
            f2 = alex.heading()
        for k in range(3):
            alex.down()
            alex.seth(f2 + random.gauss(0, linuxmi))
            h3 = alex.heading()
            for u2 in range(10):
                alex.color(colorGen(val = u2/10))
                alex.seth(h3 + random.gauss(0,linuxmi))
                alex.forward(abs(round(random.gauss(10, stepVar), 0)))
            m = alex.xcor()
            n = alex.ycor()
            h4 = alex.heading()
            for l in range(2):
                alex.color(colorGen())
                alex.down()
                alex.seth(abs(h4 + random.gauss(0,linuxmi)))
                h5 = alex.heading()
                for l2 in range(10):
                    alex.color(colorGen(val = l2/10))
                    alex.seth(h5 + random.gauss(0,linuxmi))
                    alex.forward(abs(round(random.gauss(10,stepVar),0)))
                alex.up()
            alex.goto(x, y)
        alex.up()
turtle.tracer(0, 0)
wn = turtle.Screen()
wn.colormode(255)
turtle.bgcolor("black")
alex = turtle.Turtle()
alex.speed(10)
alex.pensize(0)
alex.ht()
timeTunnel(300)
turtle.update()
wn.exitonclick()

Python turtle藝術畫賞析

Python turtle藝術畫賞析

示例3:

代碼如下:

from turtle import * # 導入模塊turtle

speed(0) # 將繪圖速度設置為0,這是最快的
pencolor('red') # 設置鋼筆/線條的顏色為紅色
bgcolor('black') # 設置背景/畫布的顏色為黑色

x = 0 # 創建一個值為0的變量x
up() # 舉起筆,這樣就不會畫線了

# d()表示向前移動,bk() 示向后移動
# rt()或lt()表示向右傾斜一定角度

rt(45)
fd(90)
rt(135)

down() # 放下筆,讓烏龜畫畫
while x < 120: # 當x的值小于120時,
                #連續這樣做:
    fd(200)   
    rt(61)
    fd(200)
    rt(61)
    fd(200)
    rt(61)
    fd(200)
    rt(61)
    fd(200)
    rt(61)
    fd(200)
    rt(61)

    rt(11.1111)
    x = x+1 # #在x的值上加1,
            # 所以每次循環后它都接近120

exitonclick() # 當您單擊時,turtle退出。

效果如下:

Python turtle藝術畫賞析

Python turtle藝術畫賞析相關完整代碼可從以下信息的得到下載:

------------------------------------------分割線------------------------------------------

全部文件在Linux公社1號FTP服務器

FTP地址:ftp://ftp1.linuxidc.com

用戶名:ftp1.linuxidc.com

密碼:www.vnrggh.live

在 2019年LinuxIDC.com/4月/Python turtle藝術畫賞析/

下載方法見 http://www.vnrggh.live/Linux/2013-10/91140.htm

------------------------------------------分割線------------------------------------------ 

更多Python相關信息見Python 專題頁面 http://www.vnrggh.live/topicnews.aspx?tid=17

Linux公社的RSS地址http://www.vnrggh.live/rssFeed.aspx

本文永久更新鏈接地址http://www.vnrggh.live/Linux/2019-04/158125.htm

linux
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
彩票平台