Python 精靈模組簡介_python sprites module introduce

scratch發表於2019-12-31

一、簡介:

   本模組命令名為精靈模組,或叫角色模組。本模組已經上傳到了pypi網站,通過在cmd視窗下輸入pip install sprites即可安裝使用。
   精靈模組主要提供繼承自Turtle的Sprite類。重定義了Turtle模組中的一些方法和屬性。

由於要旋轉圖形,所以需要PIL模組和numpy模組支援。預設的精靈物件是抬筆的,內建16張圖片。 分別是:ball.png,bug.png,
b1.png,b2.png,cat1.png,cat2.png,bee.png,flower.png,explosion0.png,explosion1.png,fighter.png,
thunder.png,sky.png,ufo.png,rat1.png,rat2.png。它們存在於_built_in_images列表中。在本模組第一次執行後,這些圖片會釋放
到當前工作目錄的res資料夾。本模組設計為教育目的,可用來做入門動畫與遊戲。

二、Sprite類主要提供了以下功能:

1、角色可直接拖動(compound造型不支援)。
2、提供像Scratch中的三種旋轉模式。精靈物件的_rotatemode屬性值為0,代表可360度旋轉,為1時代表可左右翻轉,為2時角色不會旋轉。
3、rotatemode:返回或設定旋轉模式。
4、addx:x座標增加。
5、addy:y座標增加。
6、scale:縮放,只有一個引數。
7、gotorandom:到隨機位置。
8、heading:重定義了這個方法,不帶引數能獲取當前朝向。帶引數參讓角色朝向某物件或座標。
9、show:顯示物件,帶引數時讓角色顯示一定的時間後又會隱藏,非同步執行。
10、hide:隱藏物件,帶引數時讓角色隱藏一定的時間後又顯示,非同步執行。
11、mouse_pos:獲取滑鼠指標座標。
12、move:移動水平dx距離和垂直dy距離。
13、collide:和另一個角色或圖章的碰撞方法,採用的是矩形碰撞,可以有scale引數,表示縮放繫結盒子,如scale=0.5時,繫結盒寬高各縮一半。
14、collidemouse:碰到滑鼠指標。
15、collide_edge:碰到邊緣檢測。
16、bounce_on_edge:碰到邊緣就反彈,適合於用fd命令讓角色前進後再使用。
17、bbox:獲取角色繫結盒,也可獲取圖章的繫結盒。
18、randomcolor:隨機顏色,較鮮豔。
19、randomheading:隨機方向。
20、remove:移除方法,把自己從螢幕的_turtles列表中刪除,並根據item號刪除自己在畫布上的形狀,清除說話泡泡物件。
21、stamp:重定義了Turtle類的圖章方法,新增的引數可以讓圖章在一定時間後自動被清除,非同步執行。
22、stampmove:根據圖章編號水平和垂直移動圖章。
23、stampgoto:移動圖章編號到指定座標,暫不支援複合圖形的圖章,它們的圖章編號是一個元組。
24、play:播放方法,目前只支援播放無失真壓縮的wav音訊檔案,支援顯示歌詞。
25、setalpha:設定透明度方法。引數為從0到255的數值。0代表完全透明,255代表不透明,128代表半透明。
對於polygon和compound造型來說,0代表透明,非0代表不透明。對於image來說,設定角色的透明度從0到255的值就會產生從透明到不透明的漸變效果。
26、getalpha:得到透明度,從0到255的整數。
27、set_tag:設定角色的標籤。它是一個字串,用於分組。
28、get_tag:獲取角色的標籤。
29、say:說話方法,會顯示氣泡。預設時間為2秒,預設阻塞程式。
30、saycolor:返回或設定說話的字的顏色。
31、saybordercolor:返回或設定說話泡泡的邊框顏色。
32、write:重定義寫方法,增加angle引數,可以寫斜字,預設為黑體,12號。
33、reborn:“重生”方法,讓角色隱藏後在另一座標重新顯示。複用角色之用,可加delay引數,意為在一定的時間後才顯示,非同步執行。
34、nextcostume:下一個造型,別名是nextshape。
35、previouscostume:上一個造型,別名是previousshape。
36、costumeindex:指定造型編號,別名是shapeindex。
37、update:重繪角色。

三、screen新增命令:

1、resizable:預設視窗是不可變大小的,用這個命令能讓視窗重新可縮放。
2、onmousemove:即滑鼠移動事件。
3、onscreenrelease:滑鼠鬆開事件。

四、單獨函式:

1、makecolors:
預設產生128種鮮豔的顏色,匯入本模組後它會執行一次,產生一個_colorlist列表。

2、mouse_pos:
獲取滑鼠指標的座標,和螢幕的xscale和yscale無關。

3、explode:
產生爆炸效果的函式。需要傳遞座標和序列幀圖。

五、單獨類:

1、Key類:用來新建某個按鍵的例項,用於在迴圈中進行鍵盤按鍵檢測。
2、Mouse類:用來新建滑鼠按鍵的例項,用於在迴圈中進行滑鼠按鍵檢測。
3、Clock:用來固定幀的時鐘類,有tick方法和getfps方法。前者用來設定幀率,後者獲取幀率。

六、其它:
新增螢幕的_focus屬性,用來跟蹤螢幕是否啟用。

注意以下問題:
1、不支援複合圖形的拖動。
2、不支援多邊形與複合圖形所蓋的章的直接座標定位,但是可以相對移動。
3、tilt傾斜等變形命令不會對圖形進行變形。
4、用精靈的remove方法可以較徹底的刪除精靈物件,但物件越多還是會越來越慢,解決方案是讓物件重複使用!
典型的為角色超出邊界後,並不需要remove它。可以讓它隔一段時間再出現即可,不要不停地例項化新物件!

如果用螢幕的tracer(0,0)關閉了自動渲染角色,那麼在移動角色後要馬上重新整理螢幕,否則會出現意外效果。
原因是繫結盒命令得到的是先前沒有重新整理的角色的座標,這樣獲取的不是最新座標,當然會導致程式出意外。
用螢幕的update命令會重新渲染所有的角色,如果角色較多,反而會讓程式執行更慢。
本模組給RawTurtle類增加了update方法,這樣能單獨渲染一個角色。本模組已經把螢幕的自動繪畫延時設為0了。
其實Turtle模組可以支援png圖片,但要像以下這樣寫:
screen.addshape('scratch.png',Shape("image", screen._image('scratch.png')))
"""

本作品採用《CC 協議》,轉載必須註明作者和本文連結

python精靈模組

相關文章