小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

海龜作圖

 imelee 2017-03-24

原文地址:http://www./book/onlinechapter/37788

在本章中,我們將編寫簡短的、簡單的程序來創(chuàng)建漂亮的、復雜的視覺效果。為了做到這一點,我們可以使用海龜作圖軟件。在海龜作圖中,我們可以編寫指令讓一個虛擬的(想象中的)海龜在屏幕上來回移動。這個海龜帶著一只鋼筆,我們可以讓海龜無論移動到哪都使用這只鋼筆來繪制線條。通過編寫代碼,以各種很酷的模式移動海龜,我們可以繪制出令人驚奇的圖片。

使用海龜作圖,我們不僅能夠只用幾行代碼就創(chuàng)建出令人印象深刻的視覺效果,而且還可以跟隨海龜看看每行代碼如何影響到它的移動。這能夠幫助我們理解代碼的邏輯。

2.1 第一個海龜程序

讓我們使用海龜作圖來編寫第一個程序。在一個新的IDLE窗口中輸入如下的代碼并將其保存為SquareSpiral1.py(你也可以通過http://www.nostarch. com/teachkids/下載該程序以及本書中的所有其他的程序)。

SquareSpiral1.py

# SquareSpiral1.py - Draws a square spiral
import turtle
t = turtle.Pen()
for x in range(100):
   t.forward(x)
   t.left(90)

當運行這段代碼的時候,我們會得到一幅漂亮整齊的圖片(如圖2-1所示)。

tyktc02_01.psd

圖2-1 用簡短的SquareSpiral1.py程序創(chuàng)建的一個炫目的正方形螺旋線

2.1.1 程序是如何工作的

讓我們一行一行地分析這個程序,看看它是如何工作的。SquareSpiral1.py的第1行是注釋。正如我們在第1章中所學過的,注釋以一個井號(#)開頭。注釋允許我們在程序中寫入給自己或以后可能閱讀該程序的其他人一些提示。計算機不會閱讀或試圖理解井號之后的任何內容;注釋只是讓我們寫出關于程序是做什么的一些說明。在這個例子中,我們將程序的名稱以及針對其做什么的一個簡單說明放入到注釋之中。

第2行導入(import)了繪制海龜圖形的功能。導入已經編寫過的代碼,這是編程工作的最酷的事情之一。如果我們編寫了一些有趣并有用的程序,可以將其與其他的人分享,同時也可以自己重用它。盡管海龜作圖最初源自20世紀60年代的Logo編程語言[1],但一些很酷的Python程序員構建了一個庫(library,庫就是可以重用的代碼的一個集合),來幫助其他程序員在Python中使用海龜作圖。當我們輸入了import turtle,就表示我們的程序能夠使用那些Python程序員所編寫的代碼。圖2-1中的小的黑色箭頭表示海龜,它在屏幕上移動的時候會使用鋼筆繪圖。

11486.png

程序的第3行是t = turtle.Pen(),它告訴計算機,我們將使用字母t表示海龜?shù)匿摴P。這使得我們只需要錄入t.forward(),而不是turtle.Pen().forward(),就可以讓海龜在屏幕上移動的時候用海龜?shù)匿摴P進行繪制。字母t是告訴海龜做什么的一種快捷方式。

第4行最為復雜。在這里,我們創(chuàng)建了一個循環(huán)(loop),它重復一組指令很多次(一次又一次地循環(huán)這些代碼行)。這個特定的循環(huán)設置了一個范圍(range,或列表),其中擁有從0~99的100個數(shù)字(計算機幾乎總是從0開始計數(shù),而不是像我們通常那樣從1開始)。在該循環(huán)中,字母x遍歷了范圍中的每一個數(shù)字。因此,x從0開始,然后變?yōu)?,然后是2,依次類推,直到99,一共100個步驟。

x叫作變量(variable)[2](在第1章中的YourName.py程序中,name就是變量)。變量存儲了在程序進行的過程中可以修改(變化)的一個值。我們在所編寫的幾乎每一個程序中,都要使用變量,因此,早點認識變量為好。

接下來的兩行代碼縮進了,或者說,在左邊留出了空格。這意味著,它們位于該循環(huán)之中(in the loop)并且和上面的那一行代碼一起,每次x從0~99的范圍中獲取一個新的數(shù)字的時候,這些代碼行都會重復,直到達到100次。

2.1.2 發(fā)生了什么

讓我們看看Python初次讀取這一組指令的時候發(fā)生了什么。命令t.forward(x)讓海龜?shù)匿摴P在屏幕上向前移動x個點。因為x是0,鋼筆根本不會移動。最后一行代碼t.left(90)讓海龜向左轉90°,或者說轉四分之一個圈。

11511.png

由于這個for循環(huán),程序繼續(xù)運行并且回到了循環(huán)的開始位置。計算機加1后將x移動到范圍中的下一個值,因為1仍然位于從0~99的范圍中,循環(huán)繼續(xù)。現(xiàn)在x是1,因此,鋼筆向前移動1個點。然后,鋼筆向左移動90個點,因為代碼是t.left(90)。這樣一次一次地繼續(xù)執(zhí)行,當x到達99,即循環(huán)的最后一次迭代,鋼筆圍繞著正方形螺旋線的外圍畫了一條長長的線條。

下面我們隨著x從0增加到100,將循環(huán)的每一步可視化地表示出來。

for x in range(100):
   t.forward(x)
   t.left(90)

tyktc02_01a_cropped.psd循環(huán)0到4:繪制了前4條線(在x = 4之后)。

tyktc02_01b_cropped.psd循環(huán)5到8:繪制了另外4條線;正方形出現(xiàn)了。

tyktc02_01c_cropped.psd循環(huán)9到12:正方形螺旋線變?yōu)榱?2條線(3個正方形)。

計算機屏幕上的點或像素可能太小了,以至于我們無法很好地看到它們。但是,隨著x變得越來越接近100,海龜繪制的線條包含了越來越多的像素。換句話說,當x變得越來越大,t.forward(x)繪制的線條越來越長。屏幕上的海龜箭頭,繪制一會兒,然后向左轉,再繪制一會兒,再向左轉,這樣一次又一次地繪制,每次線條都變得越來越長。

最后,我們有了一個炫目的正方形形狀。連續(xù)4次向左轉90°,就可以得到一個正方形,就像是圍繞一棟建筑連續(xù)4次左轉的話,將會帶著我們繞建筑轉一圈并且回到起點一樣。

在這個示例中,我們之所以得到一個螺旋線,是因為每次左轉的時候,都走得更遠一點。繪制的第一個線條只是1步長(x = 1的時候),然后是2(循環(huán)的下一次迭代),然后是3,然后是4,以此類推,直到達到100步長,這時候,線條的長度為99像素。再一次強調下,屏幕上的像素可能太小了,以至于我們無法很容易地看到單個的點,但是,它們是存在的,而且我們會看到隨著程序包含更多的像素,線條會變得越來越長。

通過完成所有的90°角的旋轉,我們得到了完美的正方形。

2.2 旋轉的海龜

讓我們看看當修改了程序中某一個數(shù)值的時候,會發(fā)生什么?學習和程序相關的新知識的一種方法是,當我們修改其某一個部分的時候,看看發(fā)生了什么。我們不會總是得到一個很好的結果,但是,即使是某些地方出錯的時候,我們也能學到東西。

我們只是將程序的最后一行修改為t.left(91),將其保存為SquareSpiral2.py。

SquareSpiral2.py

import turtle
t = turtle.Pen()
for x in range(100):
   t.forward(x)
   t.left(91)

我們提到了向左轉90°會創(chuàng)建一個完美的正方形。每次向左轉的比90°多一點點的話(在這個例子中,是91°),會將正方形略微向外拋出一點點。由于我們進行下一次旋轉的時候,已經偏離了一點點,隨著程序繼續(xù)進行,新的圖形越來越不像是一個正方形。實際上,它創(chuàng)建了一個開始向左旋轉的、漂亮的螺旋形,就像是樓梯一樣,如圖2-2所示。

tyktc02_02.psd

圖2-2 正方形螺旋線程序略作修改后變成了一個螺旋形的樓梯

這也是一個漂亮的圖形,可以幫助我們理解如何只略微修改一個數(shù)字,就顯著地改變程序的結果。1°似乎并不是一個很大的偏差,除非我們偏離1° 100次(這加起來就是100°),或者1000次,或者,如果我們使用的是飛機著陸程序……

11534.png

如果還不知道度是如何工作的,現(xiàn)在先不要擔心,我們只要嘗試修改數(shù)字,看看發(fā)生了什么就好了。我們通過修改range后面的圓括號中的值,讓程序繪制的線條數(shù)達到200或500,或者50。

我們再嘗試將最后一行的角度修改為91、46、61或121等。記住每次都保存程序,然后,我們運行它,看看所做的修改會如何影響到程序的繪制。年齡大一點的讀者了解一些幾何知識,可能會根據(jù)不同的角度看到一些熟悉的形狀,甚至能夠在程序運行之前根據(jù)角度來預測出形狀。較小的讀者則只能夠感受修改帶來的變化,等他們某一天上了幾何課之后,可以再回頭來看這個練習。

2.3 海龜畫圓

說到幾何,海龜作圖可以繪制很多有趣的形狀,而不只是直線。我們將在2.4節(jié)中再次回到正方形,但現(xiàn)在,讓我們來更多地了解一下Python Turtle庫。

我們再來修改一行代碼:t.forward(x)。我們在前面看到了這條命令或函數(shù),它將海龜?shù)匿摴P向前移動x個像素并且繪制一條筆直的線段;然后,海龜轉向并且再次繪制。如果我們修改這行代碼來繪制更為復雜一點的圖形,例如圓,那會怎么樣呢?

好在,繪制一個固定大小(或半徑)的圓的命令,和繪制一條直線的命令一樣簡單。我們將t.forward(x)修改為t.circle(x),如下面的代碼所示。

CircleSpiral1.py

import turtle
t = turtle.Pen()
for x in range(100):
   t.circle(x) 
   t.left(91)

哦,將一條命令從t.forward修改為t.circle,會得到一個復雜得多的形狀,如圖2-3所示。t.circle(x)函數(shù)讓程序在當前位置繪制了一個半徑為x的圓。注意,這個繪制和簡單的正方形螺旋線有一些相同點:它也有4組圓形的螺旋線,就像是正方形的螺旋線有4個邊一樣。這是因為我們使用t.left(91)命令,每次向左旋轉都將超過90°一點點。如果我們學習過幾何就知道,圍繞一個點轉一圈有360°,就像是一個正方形有4個90°的角(4×90 = 360)。海龜通過每次圍繞圖形旋轉的比90°多一點點,從而繪制出這個螺旋線的形狀。

tyktc02_03.psd

圖2-3 只需在改動一點就得到一組漂亮的4個螺旋線的圓

我們將會看到的一個區(qū)別是,圓形螺旋線比正方形螺旋線要大一些,實際上,大約是前者兩倍那么大。這是因為t.circle(x)使用x作為圓的半徑,而這是從圓心到邊緣的距離,大概是圓的寬度的一半。

半徑為x意味著,圓的直徑,也就是說總的寬度是x的兩倍。換句話說,t.circle(x)繪制的圓,當x等于1的時候,總寬度為2個像素;當x為2的時候總寬度為4個像素;按照這種方式,直到x等于99的時候,其寬度為198個像素。這幾乎是200個像素寬了,或者說是正方形邊最大的時候的兩倍,因此,圓螺旋線看上去是正方形螺旋線的兩倍的大小,當然,也會加倍的酷!

2.4 添加顏色

這些螺旋線的形狀不錯,但是,如果它們能夠更多彩一些,是不是更酷呢?讓我們回到正方形螺旋線代碼,在t = turtle.Pen()這一行的后面再添加一行代碼,從而將鋼筆顏色設置為紅色。

SquareSpiral3.py

import turtle
t = turtle.Pen()
t.pencolor(“red”)
for x in range(100):
    t.forward(x)
    t.left(91)

運行該程序,我們將會看到正方形螺旋線的一個更多色彩的版本,如圖2-4所示。

tyktc02_04.psd

圖2-4 正方形螺旋線變得更多彩一些了

我們嘗試用另一種常用的顏色(如“blue”或“green”)來替換掉“red”或“green”并且再次運行該程序。我們可以通過Turtle庫使用數(shù)百種不同的顏色,包括一些奇怪的顏色,如“salmon”和“l(fā)emon chiffon”(訪問http://www./man/tcl8.4/TkCmd/colors.htm可以查看完整的列表)。讓整個螺旋線呈現(xiàn)一種不同的顏色是很不錯的一步,但是,如果想要讓每一邊都顯示一種不同的顏色,我們該怎么辦呢?這需要對程序做一些更多的修改。

2.4.1 一個四色螺旋線

讓我們來考慮一下算法(algorithm)。算法就是一系列的步驟,它可以將單色的螺旋線變?yōu)?色的螺旋線。大多數(shù)的步驟和之前的螺旋線程序中相同,但是,這里還增加了一些調整:

(1)導入turtle模塊并且設置一個海龜;

(2)告訴計算機應該使用何種顏色;

(3)設置一個循環(huán),繪制螺旋線中的100條線段;

(4)為螺旋線的每一邊選取一種不同的鋼筆顏色;

(5)向前移動海龜以繪制每一邊;

(6)將海龜向左轉,以準備好繪制下一邊。

首先,我們需要顏色名稱的一個列表,而不是單個的顏色,因此,我們要創(chuàng)建一個名為colors的列表變量并且在列表中放置4種顏色,如下所示。

colors = [“red”, “yellow”, “blue”, “green”]

這個4種顏色的列表,將會針對正方形的每一邊給出一種顏色。注意,我們將顏色的列表放在了方括號“[”和“]”之間。這里要確保引號中的每一種顏色名都像我們在第1章中打印出來的單詞一樣,因為這些顏色名都是字符串(string)或文本值,這是我們稍后要傳遞給pencolor函數(shù)的值。正如前面所提到的,我們使用一個名為colors的變量來存儲4種顏色的列表。因此,任何時候,當想要從列表中獲取顏色的時候,我們都要使用colors變量來表示鋼筆的顏色。記住,變量存儲的值是變化的,這正如同其名稱一樣,變量嘛。

11558.png

我們需要做的下一件事情是,每次遍歷繪制循環(huán)的時候修改鋼筆顏色。為了做到這一點,我們需要將t.pencolor()函數(shù)移入到for循環(huán)下的一組指令之中,還需要告訴pencolor函數(shù),我們想要使用列表中的哪一種顏色。

我們輸入如下的代碼并運行它。

ColorSquareSpiral.py

import turtle
t = turtle.Pen()
colors = [“red”, “yellow”, “blue”, “green”]
for x in range(100):
    t.pencolor(colors[x%4])
    t.forward(x)
    t.left(91)

4種顏色的列表起作用了,我們在這個運行的示例中看到了它們(如圖2-5所示)。到目前為止,一切還不錯。

tyktc02_05.psd

圖2-5 正方形螺旋線程序的一個更加多彩的版本

pencolor函數(shù)中唯一的新增部分是(colors[x%4])。這條語句中的x和我們在程序中其他地方所使用的x是同一個變量,因此,x將持續(xù)從0~99增加,就像我們前面所見到的那樣。圓括號中的colors變量名告訴Python,從我們在程序前面所添加的、名為colors的顏色名稱列表中選取一種顏色。

[x%4]告訴Python我們將使用colors列表中的前4種顏色,即編號從0~3的顏色并且每當x變化的時候就遍歷它們。在這個例子中,我們的顏色列表只有4種顏色,因此,我們需要一次又一次地遍歷這4種顏色。

colors = [“red”, “yellow”, “blue”, “green”]
       0       1        2       3

[x%4]中的“%”叫作模除操作符(modulo operator),表示一次除法運算中的余數(shù)(remainder)(5÷4商1余1,因此,5可以包含4一次并且還剩下1;6÷4余2,以此類推)。當我們想要遍歷列表中一定數(shù)目的項時,例如我們對4種顏色列表所做的操作,模除操作符很有用。

在100步中,colors[x%4]將遍歷4種顏色(0、1、2和3,分別表示紅色、黃色、藍色和綠色)整整25次。如果我們有時間(并且有一個放大鏡),可以數(shù)一數(shù)圖2-5中有25條紅色的、25條黃色的、25條藍色的和25條綠色的線段。第1次遍歷繪制循環(huán)的時候,Python使用列表中的第一種顏色,紅色;第2次遍歷的時候,它使用黃色,以此類推。第15次遍歷循環(huán)的時候,Python又回過頭來使用紅色,然后是黃色,等等;每通過循環(huán)4次之后,總是又回過頭來使用紅色。

11842.png

2.4.2 修改背景顏色

讓我們再次加入一點內容,創(chuàng)造出比圖2-5更漂亮一些的內容。正如我5歲的兒子Alex所指出來的那樣,黃色部分太難以識別出來了。這就像是在白色的繪畫紙上使用黃色的蠟筆一樣,屏幕上的黃色像素無法在白色背景上明顯地顯示出來。讓我們把背景顏色修改為黑色,來修正這個問題。我們在程序中的import行之后的任何位置,輸入如下的代碼行。

turtle.bgcolor(“black”)

添加這一行之后,圖片更加漂亮,所有的顏色現(xiàn)在都處在一個黑色的背景之上。注意,海龜鋼筆(在程序中由變量t表示)沒有任何變化。相反,我們修改了海龜屏幕的一些內容,也就是背景顏色。turtle.bgcolor()命令允許我們將整個繪制屏幕修改為Python中指定的任何顏色。在turtle.bgcolor(“black”)這一行中,我們選擇了黑色作為屏幕顏色,因此,紅色、黃色、藍色和綠色都顯示得很好。

此外,我們可以將循環(huán)中的range()修改為200甚至更大,以使得螺旋線中的正方形更大。在黑色背景上顯示200個線段的新版本的圖片,如圖2-6
所示。

Fig2-6.psd

圖2-6 螺旋線程序的路還很長(這是一個簡單的開始)

Alex總是想幫助我的程序變得更為驚人,他要求再做一項修改:如果現(xiàn)在把線段替換為圓,那會怎么樣呢?那會不會是最酷的圖片呢?好吧,我必須承認,這甚至會更酷。完整的代碼如下所示。

ColorCircleSpiral.py

import turtle
t = turtle.Pen()
turtle.bgcolor(“black”)
colors = [“red”, “yellow”, “blue”, “green”]
for x in range(100):
    t.pencolor(colors[x%4])
    t.circle(x)
    t.left(91)

我們可以在圖2-7中看到結果。

Fig2-7.psd

圖2-7 Alex的驚人的圓螺旋線— 一共8行代碼,簡單而優(yōu)雅

2.5 一個變量搞定一切

到目前為止,我們已經使用變量來修改顏色、大小以及螺旋線形狀的旋轉角度。讓我們再添加一個sides變量,來表示形狀的邊數(shù)。這個新的變量如何改變我們的螺旋線呢?如果要搞清楚這一點,我們嘗試這個新的程序ColorSpiral.py。

ColorSpiral.py

import turtle
t = turtle.Pen()
turtle.bgcolor(“black”)
# You can choose between 2 and 6 sides for some cool shapes!
sides = 6
colors = [“red”, “yellow”, “blue”, “orange”, “green”, “purple”]
for x in range(360):
    t.pencolor(colors[x%sides])
    t.forward(x * 3/sides + x)
    t.left(360/sides + 1)
    t.width(x*sides/200)

我們可以將sides的值從6改為2(1個邊并不是很有趣,也不能使用太大的數(shù)字,除非我們在程序的第6行中的列表中,添加更多的顏色),然后保存該程序并且可以運行任意多次。圖2-8展示了用sides=6、sides=5,一直到sides=2所創(chuàng)建的圖像,其中sides=2的圖像很奇怪,這就是圖2-8(e)所顯示的扁平的螺旋線。我們可以改變列表中的顏色的順序,也可以在繪制循環(huán)之中的任意函數(shù)中,使用較大一些或較小一點的數(shù)字。如果把程序給搞亂了,我們只需要返回到最初的ColorSpiral.py程序重新來玩就好了。

f28a.psd

a)

f28b.psd

b)

f28c.psd

c)

f28d.psd

d)

f28e.psd

e)

圖2-8 通過把變量sides從6(a)修改為2(e)所創(chuàng)建的5種彩色的形狀

ColorSpiral.py程序使用了一條新的命令t.width(),它修改了海龜鋼筆的寬度。在我們的程序中,隨著鋼筆繪制的形狀越來越大,鋼筆變得越來越寬(其線條變得更粗)。在第3章和第4章,我們學習創(chuàng)建程序所需的其他技能的時候,還會再次遇到這個程序以及其他類似的程序。

2.6 本章小結

在本章中,我們使用Turtle庫的工具繪制了令人印象深刻的彩色形狀。我們使用import命令把這個庫導入到自己的程序中,同時了解到,以這種方式來重用代碼是編程的最強大的功能之一。一旦編寫了有用的內容,或者借用某些人慷慨分享的代碼,我們不僅能夠節(jié)省時間,而且能夠使用這些導入的代碼做全新的事情。

我們還介紹了程序中像x和sides這樣的變量。這些變量存儲或記住一個數(shù)字或值,以便我們能夠在程序中多次使用它,甚至修改其值。在第3章中,我們將學習變量的作用以及Python如何能夠幫助你完成數(shù)學作業(yè)。

現(xiàn)在,我們應該能夠做如下這些事情:

  • 用Turtle庫繪制簡單的圖形;

  • 使用變量來存儲簡單的數(shù)值和字符串;

  • 在IDLE中修改、保存和運行程序。

2.7 編程挑戰(zhàn)

嘗試這些挑戰(zhàn)以練習我們在本章中所學習的知識(如果遇到困難,可以訪問http://www./teachkids/尋找示例解答)。

#1:修改邊數(shù)

在ColorSpiral.py程序中,我們使用了一個變量sides,但是我們并沒有改變它或修改其值,只是再次編輯、保存和運行程序。我們嘗試將sides的值改為另一個數(shù)字,例如5,保存并運行程序,看看這會對繪制有何影響;現(xiàn)在,試一試4、3、2甚至是1?,F(xiàn)在,我們在程序的第6行,向顏色列表中添加兩種或更多的顏色,顏色名用引號括起來,用逗號隔開。我們可以增加sides的值,來使用這些新的顏色,嘗試一下8或者10甚至更大。

#2:有多少邊

如果想要在程序運行的時候由用戶來決定邊數(shù),我們該怎么做呢?使用我們在第1章中學習的內容,可以讓用戶輸入邊數(shù)并且將其存儲到sides變量中。唯一額外的步驟是,計算(evaluate)用戶所輸入的數(shù)字。我們可以使用eval()函數(shù)得到用戶輸入的數(shù)字,如下所示。

sides = eval(input(“Enter a number of sides between 2 and 6: “))

我們使用前面這一行,替換掉ColorSpiral.py中的sides = 6這一行。新的程序將會問用戶想要看到有多少個邊。然后,程序將繪制用戶所要求的形狀。嘗試一下!

#3:橡皮筋球體

我們嘗試將ColorSpiral.py程序修改為一個更大的角度,而且通過在繪制循環(huán)的末尾添加一個額外的轉向來扭曲形狀。我們在for循環(huán)的末尾添加諸如t.left(90)的一行,使得角度更加尖銳(記住縮進,或者說留下空格,以保證該語句位于循環(huán)之中)。結果如圖2-9所示,看上去像是一個幾何玩具,或者是用彩色的橡皮筋制作的球體。

tyktc02_09.psd

圖2-9 在ColorSpiral.py程序的每一輪循環(huán)中添加一個額外的90°將其變?yōu)镽ubberBandBall.py程序

我們把這個新的版本保存為RubberBandBall.py,或者訪問http://www./teachkids/并且在Chapter2的源代碼中找到該程序。



[1] Logo編程語言創(chuàng)建于1967年,這是一種教育編程語言,在50年之后的今天,它仍然用來教授基本的編程。這很酷,是不是?

[2]  小讀者可能會把x當作未知數(shù),就像當他們求解x + 4 = 6以求得未知的x一樣。年齡大一點的讀者可能會通過代數(shù)課或其他的數(shù)學課程認識x,早期的程序員正是從代數(shù)和數(shù)學中借用了變量的概念。編寫代碼的過程中會有很多數(shù)學的典型例子,我們甚至會在后面見到一些很酷的幾何示例。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多