python_turtle庫_應用之畫聖誕樹 Python turtle庫的應用——蛇
Python turtle庫的應用——蛇
turtle庫介紹
1、Turtle中的turtle.setup()函式用於啟動一個圖形視窗,它有四個引數
turtle.setup(width, height, startx, starty)
分別是:啟動視窗的寬度和高度表示視窗啟動時,視窗左上角在螢幕中的座標位置。
我們所使用的顯示螢幕也是一個座標系,該座標系以左上角為原點,向左和向下分別是x軸和y軸。蟒蛇程式程式碼啟動一個1300畫素寬、800畫素高的窗口,該視窗的左上角是螢幕的左上角。
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