1. 程式人生 > >python_turtle庫_應用之畫聖誕樹 Python turtle庫的應用——蛇

python_turtle庫_應用之畫聖誕樹 Python turtle庫的應用——蛇

Python turtle庫的應用——蛇

turtle庫介紹

1、Turtle中的turtle.setup()函式用於啟動一個圖形視窗,它有四個引數

turtle.setup(width, height, startx, starty)

分別是:啟動視窗的寬度高度表示視窗啟動時,視窗左上角在螢幕中的座標位置。 

我們所使用的顯示螢幕也是一個座標系,該座標系以左上角為原點,向左和向下分別是x軸和y軸。蟒蛇程式程式碼啟動一個1300畫素寬、800畫素高的窗,該視窗的左上角是螢幕的左上角。 

(startx,starty)表示畫的初始點,(0,0)表示位於電腦螢幕中心

2、Turtle中的turtle.pensize()函式表示小烏龜運動軌跡的寬度。 

3、Turtle中的turtle.pencolor()函式表示小烏龜運動軌跡的顏色。

它包含一個輸入引數,這裡我們把它設為藍色,blue,其他顏色單詞也可以使用。Turtle採用RGB方式來定義顏色,如果希望獲得和圖片中顏色一致的小蛇,請輸入turtle.pencolor(“#3B9909”) 

4、Turtle中的turtle.seth(angle)函式表示小烏龜啟動時運動的方向。它包含一個輸入引數,是角度值。

其中,0表示向東,90度向北,180度向西,270度向南;負值表示相反方向。程式中,我們讓小烏龜向-40度啟動爬行,即:向東南方向40度。 

5、turtle.circle()函式讓小烏龜沿著一個圓形爬行

引數rad描述圓形軌跡半徑的位置,這個半徑在小烏龜執行的左側,rad遠位置處。如果 rad為負值,則半徑在小烏龜執行的右側, 引數angle表示小烏龜沿著圓形爬行的弧度值。 

6、turtle.fd()函式也可以用turtle.forward()表示烏龜向前直線爬行移動表示小烏龜向前直線爬行移動,

它有一個引數表示爬行的距離 

7、詳細引數描述

 

 

程式1

複製程式碼
import turtle

def drawSnake(rad,angle,num,neckrad):
    for i in range(num):
        turtle.circle(rad,angle)
        turtle.circle(-rad,angle)
    turtle.circle(rad,angle/2)
    turtle.fd(rad)
    turtle.circle(neckrad+1,180)
    turtle.fd(rad*2/3)

def main():
    turtle.setup(1300,800,0,0)
    pythonsize=30
    turtle.pensize(pythonsize)
    turtle.pencolor('blue')
    turtle.seth(-40)
    drawSnake(40,80,3,pythonsize/2)
main()
複製程式碼

2、更改顏色

 

 

 3、三角形

複製程式碼
import turtle
turtle.setup(1000,1000,0,0)
size=20
turtle.pensize(size)
turtle.color("red")
length=200
turtle.seth(0)
turtle.fd(length)
turtle.seth(120)
turtle.fd(length)
turtle.seth(240)
turtle.fd(length)
複製程式碼

 

4、五角星

複製程式碼
from turtle import *
color("yellow","red")
pensize(10)
begin_fill()#和end_fill成對出現,填充起點和終點
while True:
    forward(200)
    right(144)
    if abs(pos())<1:#獲取位置的絕對值
        break
end_fill()
複製程式碼

複製程式碼
import turtle

turtle.pensize(10)
turtle.fillcolor("red")
turtle.begin_fill()
for i in range(5):
    turtle.fd(200)
    turtle.right(144)
turtle.end_fill()
複製程式碼

比較上面兩段程式碼,第一種通過計算位置距離結束while迴圈,第二種通過確定數目的if迴圈結束程式。

第一種通過from turtle import * 引入turtle庫,程式中呼叫函式,不用再加turtle.字首,第二種通過import turtle引入turtle庫,呼叫函式需要加turtle.字首。

5、太陽花

複製程式碼
 1 from turtle import *
 2 color("yellow","red")
 3 pensize(3)
 4 begin_fill()#和end_fill成對出現,填充起點和終點
 5 while True:
 6     forward(200)
 7     right(165)
 8     if abs(pos())<1:#獲取位置的絕對值
 9         break
10 end_fill()
複製程式碼

更改旋轉角度,得到漂亮的花

#最簡單的聖誕樹

1height = 5
2
3stars = 1
4for i in range(height):
5    print((' ' * (height - i)) + ('*' * stars))
6    stars += 2
7print((' ' * height) + '|')







#turtlr方法一
 1import turtle
 2screen = turtle.Screen()
 3screen.setup(800,600)
 4circle = turtle.Turtle()
 5circle.shape('circle')
 6circle.color('red')
 7circle.speed('fastest')
 8circle.up()
 9square = turtle.Turtle()
10square.shape('square')
11square.color('green')
12square.speed('fastest')
13square.up()
14circle.goto(0,280)
15circle.stamp()
16k = 0
17for i in range(1, 17):
18    y = 30*i
19    for j in range(i-k):
20        x = 30*j
21        square.goto(x,-y+280)
22        square.stamp()
23        square.goto(-x,-y+280)
24        square.stamp()
25    if i % 4 == 0:
26        x = 30*(j+1)
27        circle.color('red')
28        circle.goto(-x,-y+280)
29        circle.stamp()
30        circle.goto(x,-y+280)
31        circle.stamp()
32        k += 2
33    if i % 4 == 3:
34        x = 30*(j+1)
35        circle.color('yellow')
36        circle.goto(-x,-y+280)
37        circle.stamp()
38        circle.goto(x,-y+280)
39        circle.stamp()
40square.color('brown')
41for i in range(17,20):
42    y = 30*i
43    for j in range(3):
44        x = 30*j
45        square.goto(x,-y+280)
46        square.stamp()
47        square.goto(-x,-y+280)
48        square.stamp()
49turtle.exitonclick()
#turtle方法2
1from turtle import *
 2import random
 3import time
 4
 5n = 80.0
 6
 7speed("fastest")
 8screensize(bg='seashell')
 9left(90)
10forward(3*n)
11color("orange", "yellow")
12begin_fill()
13left(126)
14
15for i in range(5):
16    forward(n/5)
17    right(144)
18    forward(n/5)
19    left(72)
20end_fill()
21right(126)
22
23color("dark green")
24backward(n*4.8)
25def tree(d, s):
26    if d <= 0: return
27    forward(s)
28    tree(d-1, s*.8)
29    right(120)
30    tree(d-3, s*.5)
31    right(120)
32    tree(d-3, s*.5)
33    right(120)
34    backward(s)
35tree(15, n)
36backward(n/2)
37
38for i in range(200):
39    a = 200 - 400 * random.random()
40    b = 10 - 20 * random.random()
41    up()
42    forward(b)
43    left(90)
44    forward(a)
45    down()
46    if random.randint(0, 1) == 0:
47            color('tomato')
48    else:
49        color('wheat')
50    circle(2)
51    up()
52    backward(a)
53    right(90)
54    backward(b)
55time.sleep(60)
View Code

 

turtle庫介紹

1、Turtle中的turtle.setup()函式用於啟動一個圖形視窗,它有四個引數

turtle.setup(width, height, startx, starty)

分別是:啟動視窗的寬度高度表示視窗啟動時,視窗左上角在螢幕中的座標位置。 

我們所使用的顯示螢幕也是一個座標系,該座標系以左上角為原點,向左和向下分別是x軸和y軸。蟒蛇程式程式碼啟動一個1300畫素寬、800畫素高的窗,該視窗的左上角是螢幕的左上角。 

(startx,starty)表示畫的初始點,(0,0)表示位於電腦螢幕中心

2、Turtle中的turtle.pensize()函式表示小烏龜運動軌跡的寬度。 

3、Turtle中的turtle.pencolor()函式表示小烏龜運動軌跡的顏色。

它包含一個輸入引數,這裡我們把它設為藍色,blue,其他顏色單詞也可以使用。Turtle採用RGB方式來定義顏色,如果希望獲得和圖片中顏色一致的小蛇,請輸入turtle.pencolor(“#3B9909”) 

4、Turtle中的turtle.seth(angle)函式表示小烏龜啟動時運動的方向。它包含一個輸入引數,是角度值。

其中,0表示向東,90度向北,180度向西,270度向南;負值表示相反方向。程式中,我們讓小烏龜向-40度啟動爬行,即:向東南方向40度。 

5、turtle.circle()函式讓小烏龜沿著一個圓形爬行

引數rad描述圓形軌跡半徑的位置,這個半徑在小烏龜執行的左側,rad遠位置處。如果 rad為負值,則半徑在小烏龜執行的右側, 引數angle表示小烏龜沿著圓形爬行的弧度值。 

6、turtle.fd()函式也可以用turtle.forward()表示烏龜向前直線爬行移動表示小烏龜向前直線爬行移動,

它有一個引數表示爬行的距離 

7、詳細引數描述

 

 

程式1

複製程式碼
import turtle

def drawSnake(rad,angle,num,neckrad):
    for i in range(num):
        turtle.circle(rad,angle)
        turtle.circle(-rad,angle)
    turtle.circle(rad,angle/2)
    turtle.fd(rad)
    turtle.circle(neckrad+1,180)
    turtle.fd(rad*2/3)

def main():
    turtle.setup(1300,800,0,0)
    pythonsize=30
    turtle.pensize(pythonsize)
    turtle.pencolor('blue')
    turtle.seth(-40)
    drawSnake(40,80,3,pythonsize/2)
main()
複製程式碼

2、更改顏色

 

 

 3、三角形

複製程式碼
import turtle
turtle.setup(1000,1000,0,0)
size=20
turtle.pensize(size)
turtle.color("red")
length=200
turtle.seth(0)
turtle.fd(length)
turtle.seth(120)
turtle.fd(length)
turtle.seth(240)
turtle.fd(length)
複製程式碼

 

4、五角星

複製程式碼
from turtle import *
color("yellow","red")
pensize(10)
begin_fill()#和end_fill成對出現,填充起點和終點
while True:
    forward(200)
    right(144)
    if abs(pos())<1:#獲取位置的絕對值
        break
end_fill()
複製程式碼

複製程式碼
import turtle

turtle.pensize(10)
turtle.fillcolor("red")
turtle.begin_fill()
for i in range(5):
    turtle.fd(200)
    turtle.right(144)
turtle.end_fill()
複製程式碼

比較上面兩段程式碼,第一種通過計算位置距離結束while迴圈,第二種通過確定數目的if迴圈結束程式。

第一種通過from turtle import * 引入turtle庫,程式中呼叫函式,不用再加turtle.字首,第二種通過import turtle引入turtle庫,呼叫函式需要加turtle.字首。

5、太陽花

複製程式碼
 1 from turtle import *
 2 color("yellow","red")
 3 pensize(3)
 4 begin_fill()#和end_fill成對出現,填充起點和終點
 5 while True:
 6     forward(200)
 7     right(165)
 8     if abs(pos())<1:#獲取位置的絕對值
 9         break
10 end_fill()
複製程式碼

更改旋轉角度,得到漂亮的花

#最簡單的聖誕樹

1height = 5
2
3stars = 1
4for i in range(height):
5    print((' ' * (height - i)) + ('*' * stars))
6    stars += 2
7print((' ' * height) + '|')







#turtlr方法一
 1import turtle
 2screen = turtle.Screen()
 3screen.setup(800,600)
 4circle = turtle.Turtle()
 5circle.shape('circle')
 6circle.color('red')
 7circle.speed('fastest')
 8circle.up()
 9square = turtle.Turtle()
10square.shape('square')
11square.color('green')
12square.speed('fastest')
13square.up()
14circle.goto(0,280)
15circle.stamp()
16k = 0
17for i in range(1, 17):
18    y = 30*i
19    for j in range(i-k):
20        x = 30*j
21        square.goto(x,-y+280)
22        square.stamp()
23        square.goto(-x,-y+280)
24        square.stamp()
25    if i % 4 == 0:
26        x = 30*(j+1)
27        circle.color('red')
28        circle.goto(-x,-y+280)
29        circle.stamp()
30        circle.goto(x,-y+280)
31        circle.stamp()
32        k += 2
33    if i % 4 == 3:
34        x = 30*(j+1)
35        circle.color('yellow')
36        circle.goto(-x,-y+280)
37        circle.stamp()
38        circle.goto(x,-y+280)
39        circle.stamp()
40square.color('brown')
41for i in range(17,20):
42    y = 30*i
43    for j in range(3):
44        x = 30*j
45        square.goto(x,-y+280)
46        square.stamp()
47        square.goto(-x,-y+280)
48        square.stamp()
49turtle.exitonclick()
#turtle方法2
1from turtle import *
 2import random
 3import time
 4
 5n = 80.0
 6
 7speed("fastest")
 8screensize(bg='seashell')
 9left(90)
10forward(3*n)
11color("orange", "yellow")
12begin_fill()
13left(126)
14
15for i in range(5):
16    forward(n/5)
17    right(144)
18    forward(n/5)
19    left(72)
20end_fill()
21right(126)
22
23color("dark green")
24backward(n*4.8)
25def tree(d, s):
26    if d <= 0: return
27    forward(s)
28    tree(d-1, s*.8)
29    right(120)
30    tree(d-3, s*.5)
31    right(120)
32    tree(d-3, s*.5)
33    right(120)
34    backward(s)
35tree(15, n)
36backward(n/2)
37
38for i in range(200):
39    a = 200 - 400 * random.random()
40    b = 10 - 20 * random.random()
41    up()
42    forward(b)
43    left(90)
44    forward(a)
45    down()
46    if random.randint(0, 1) == 0:
47            color('tomato')
48    else:
49        color('wheat')
50    circle(2)
51    up()
52    backward(a)
53    right(90)
54    backward(b)
55time.sleep(60)
View Code