自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不給糖果就搗亂,用Python繪制有趣的萬圣節(jié)南瓜怪

開發(fā) 后端
萬圣節(jié)又叫諸圣節(jié),在每年的11月1日,是西方的傳統(tǒng)節(jié)日;而萬圣節(jié)前夜的10月31日是這個(gè)節(jié)日最熱鬧的時(shí)刻。在中文里,常常把萬圣節(jié)前夜(Halloween)訛譯為萬圣節(jié)(All Saints' Day)。

 關(guān)于萬圣節(jié)

萬圣節(jié)又叫諸圣節(jié),在每年的11月1日,是西方的傳統(tǒng)節(jié)日;而萬圣節(jié)前夜的10月31日是這個(gè)節(jié)日最熱鬧的時(shí)刻。在中文里,常常把萬圣節(jié)前夜(Halloween)訛譯為萬圣節(jié)(All Saints' Day)。

為慶祝萬圣節(jié)的來臨,小孩會裝扮成各種可愛的鬼怪向逐家逐戶地敲門,要求獲得糖果,否則就會搗蛋。而同時(shí)傳說這一晚,各種鬼怪也會裝扮成小孩混入群眾之中一起慶祝萬圣節(jié)的來臨,而人類為了讓鬼怪更融洽才裝扮成各種鬼怪。

不知從何時(shí)開始,西方的節(jié)日一個(gè)個(gè)的走進(jìn)了天朝,情人節(jié)、圣誕節(jié)、感恩節(jié)、萬圣節(jié)…對于當(dāng)年我們那些整天只知道逃課上網(wǎng)的屌絲大學(xué)生來說,萬圣節(jié)的熟知,自然來源于游戲了!

比如wow:

 

魔獸世界 

再或者M(jìn)apleStory:

 

冒險(xiǎn)島 

不管是魔獸世界帖子的發(fā)布時(shí)間還是這老掉牙的2D冒險(xiǎn)島游戲,都代表屬于我們80后的時(shí)代過去了…

Python與萬圣節(jié)

快到萬圣節(jié)了既然秉承著寓教于樂的python學(xué)習(xí)態(tài)度,不如就用Python畫一個(gè)萬圣節(jié)標(biāo)志------南瓜怪吧!

說到python繪圖,免不了提及turtle模塊,小海龜算是python中炙手可熱的繪圖模塊了,雖然它的功能無法與專業(yè)繪圖工具相比,但還是可以畫一些簡筆畫。之所以說用turtle只能畫些簡筆畫,多半是因?yàn)槲业膶W(xué)習(xí)功底過于淺薄,沒辦法用它做出高大上的作品。當(dāng)然還有一個(gè)原因,就是我沒有繪圖這方面的天賦,從小美術(shù)就不及格啊!但為了應(yīng)景,還是硬著頭皮擼一段代碼吧!

turtle模塊

python的turtle庫,最早還是在小甲魚的【零基礎(chǔ)入門學(xué)習(xí)Python】中接觸的,好久沒用了有些生疏,先帶大家一起回顧下模塊的使用。

如果你是想認(rèn)真學(xué)習(xí)這個(gè)庫,推薦去官網(wǎng)仔細(xì)看看相關(guān)內(nèi)容:

https://docs.python.org/3.7/library/turtle.html

但如果你只是跟我一樣從娛樂出發(fā),那么你只需簡單的幾分鐘入門就可以開始作畫了。在這里,我?guī)痛蠹艺砹艘恍┏S玫姆椒ǎ?nbsp;

就以上這些內(nèi)容,已經(jīng)完全夠大家強(qiáng)勢炫耀了…

百鳥朝鳳圖

天朝每晚的新聞聯(lián)播節(jié)目結(jié)束,總會播放一下主持人收稿子的畫面。為了告訴觀眾朋友們,主持人說新(段)聞(子)是打過草稿的!那既然要畫南瓜怪,我也得先打打草稿了!

大家都記得星爺?shù)摹短撇Ⅻc(diǎn)秋香》中,祝枝山一副百鳥朝鳳圖(小雞吃米圖)至今給人留下深刻的印象。那么今天讓IT界的王伯虎為大家?guī)硪韵庐嬀?,名曰:這個(gè)南瓜有點(diǎn)冷

不知道這幅圖會引來多少粉絲取關(guān),沒辦法他們肯定是嫉妒我的才華!

[[280868]] 

IT界的祝枝山 

turtle代碼實(shí)現(xiàn)

首先,為了能起到遮蓋畫功低劣的效果,我們需要在繪圖前,先選則一張稍顯美觀的背景圖,比如這樣:

[[280869]] 

南瓜怪背景圖 

下來由于南瓜不是一個(gè)正圓,我們需要畫出橢圓的實(shí)現(xiàn)效果。剛才學(xué)過的內(nèi)容中,有一個(gè)turtle.circle(r,extent,steps)的方法,其中steps參數(shù)值得我們?nèi)ブ攸c(diǎn)分析,先來看一段代碼:

  1.  1# -*- coding: utf-8 -*- 
  2.  2# @Author   : 王翔 
  3.  3# @微信號   : King_Uranus 
  4.  4# @公眾號   : 清風(fēng)Python 
  5.  5# @GitHub   : https://github.com/BreezePython 
  6.  6# @Date     : 2019/10/30 22:31 
  7.  7# @Software : PyCharm 
  8.  8# @version  :Python 3.7.3 
  9.  9# @File     : circle.py 
  10. 10 
  11. 11import turtle as t 
  12. 12 
  13. 13for i in range(3, 10, 2): 
  14. 14    t.circle(100, steps=i) 
  15. 15    t.left(90) 
  16. 16 
  17. 17t.circle(100, steps=30) 
  18. 18 
  19. 19for i in range(30):     # 重復(fù)執(zhí)行i次 
  20. 20    t.forward(20.93)    # 移動(dòng)x個(gè)單位 
  21. 21    t.left(12)          # 左轉(zhuǎn)y度 
  22. 22 
  23. 23t.done() 

效果如下: 

circle中steps參數(shù) 

steps參數(shù)其實(shí)大家可以理解為多邊形的邊數(shù)和,那么當(dāng)邊數(shù)越多(30邊形),在我們?nèi)庋劭磥硎欠駡D形就趨近與圓了?再拆分思考一下,具體的實(shí)現(xiàn)是否可以理解為,畫筆畫一段直線,然后旋轉(zhuǎn)一下角度,再畫直線,如此往復(fù),最終旋轉(zhuǎn)360度,組成一個(gè)圖形。同理如下:

  1. 有人朋友會問1.74是哪里來的? 
  2. C = 2πr = 628 
  3. 628/360 = 1.7444… 所以每一度的邊長為1.74 
  1. 1import turtle as t 
  2. 3for i in range(360):    # 重復(fù)執(zhí)行i次 
  3. 4    t.forward(1.74)     # 移動(dòng)x個(gè)單位 
  4. 5    t.left(1)           # 偏移弧度 
  5. 7t.circle(100) 

圓繪圖分析 

知道了這些,下來就該考慮如何畫橢圓了,之所以為圓,是由于各邊相等,那么如果各邊不等是否就會造成橢圓的效果,現(xiàn)在我們通過這種方式來畫南瓜外形:

  1.  1import turtle as t 
  2.  2 
  3.  3t.speed(10) 
  4.  4t.pensize(6) 
  5.  5t.hideturtle() 
  6.  6t.screensize() 
  7.  7t.bgcolor('black'
  8.  8t.bgpic('dark_night.png'
  9.  9t.color('#CF5E1A''#CF5E1A'
  10. 10 
  11. 11#  繪制南瓜 
  12. 12t.penup() 
  13. 13t.goto(250, 30) 
  14. 14t.pendown() 
  15. 15t.seth(90) 
  16. 16t.begin_fill() 
  17. 17for j in range(25): 
  18. 18    t.fd(j) 
  19. 19    t.left(3.6) 
  20. 20for j in range(25, 0, -1): 
  21. 21    t.fd(j) 
  22. 22    t.left(3.6) 
  23. 23t.seth(-90) 
  24. 24t.circle(254, 180) 
  25. 25t.end_fill() 
  26. 26 
  27. 27t.done() 

南瓜外形

南瓜把兒比較簡單,只需要把畫筆調(diào)粗,然后畫一段弧度即可。眼睛部分的處理方法與南瓜上蓋類似,不多贅述。

最終效果 


最終效果圖 

整體代碼:

  1. 1# -*- coding: utf-8 -*- 
  2.   2# @Author   : 王翔 
  3.   3# @WeChat   : King_Uranus 
  4.   4# @公眾號    : 清風(fēng)Python 
  5.   5# @GitHub   : https://github.com/BreezePython 
  6.   6# @Date     : 2019/10/29 22:30 
  7.   7# @Software : PyCharm 
  8.   8# @version  :Python 3.7.3 
  9.   9# @File     : PumpkinMonster.py 
  10.  10 
  11.  11 
  12.  12import turtle as t 
  13.  13 
  14.  14 
  15.  15def init(): 
  16.  16    # 初始化 
  17.  17    t.bgpic('dark_night.png'
  18.  18    t.screensize(500, 500, bg='white'
  19.  19    t.speed(10) 
  20.  20    t.hideturtle() 
  21.  21    t.bgcolor('black'
  22.  22    t.bgpic('dark_night.png'
  23.  23 
  24.  24 
  25.  25def outline(): 
  26.  26    #  繪制南瓜輪廓 
  27.  27    t.color('#CF5E1A''#CF5E1A'
  28.  28    t.penup() 
  29.  29    t.goto(250, 30) 
  30.  30    t.pendown() 
  31.  31    t.seth(90) 
  32.  32    t.begin_fill() 
  33.  33    for j in range(25): 
  34.  34        t.fd(j) 
  35.  35        t.left(3.6) 
  36.  36    for j in range(25, 0, -1): 
  37.  37        t.fd(j) 
  38.  38        t.left(3.6) 
  39.  39    t.seth(-90) 
  40.  40    t.circle(254, 180) 
  41.  41    t.end_fill() 
  42.  42 
  43.  43 
  44.  44def tail(): 
  45.  45    # 繪制南瓜枝 
  46.  46    t.penup() 
  47.  47    t.goto(0, 180) 
  48.  48    t.pendown() 
  49.  49    t.color('#2E3C01'
  50.  50    t.seth(100) 
  51.  51    t.pensize(25) 
  52.  52    t.circle(60, 100) 
  53.  53 
  54.  54 
  55.  55def eyes(args): 
  56.  56    # 眼睛 
  57.  57    for items in args: 
  58.  58        position, angle, direction = items 
  59.  59        t.pensize(6) 
  60.  60        t.penup() 
  61.  61        t.goto(position, 0) 
  62.  62        t.pendown() 
  63.  63        t.color('#4C180D''#4C180D'
  64.  64        t.begin_fill() 
  65.  65        t.seth(angle) 
  66.  66        for j in range(55): 
  67.  67            t.fd(3) 
  68.  68            if direction: 
  69.  69                t.left(3)  # 左轉(zhuǎn)3度 
  70.  70            else
  71.  71                t.right(3)  # 左轉(zhuǎn)3度 
  72.  72        t.goto(position, 0) 
  73.  73        t.end_fill() 
  74.  74 
  75.  75 
  76.  76def nose(): 
  77.  77    # 鼻子 
  78.  78    t.penup() 
  79.  79    t.goto(0, 0) 
  80.  80    t.seth(180) 
  81.  81    t.pendown() 
  82.  82    t.begin_fill() 
  83.  83    t.circle(50, steps=3) 
  84.  84    t.end_fill() 
  85.  85 
  86.  86 
  87.  87def mouth(): 
  88.  88    # 嘴巴 
  89.  89    t.color('#F9D503''#F9D503'
  90.  90    t.pensize(6) 
  91.  91    t.penup() 
  92.  92    t.penup() 
  93.  93    t.goto(-150, -100) 
  94.  94    t.pendown() 
  95.  95    t.begin_fill() 
  96.  96    t.seth(-30) 
  97.  97    t.fd(100) 
  98.  98    t.left(90) 
  99.  99    t.fd(30) 
  100. 100    t.right(90) 
  101. 101    t.fd(60) 
  102. 102    t.left(60) 
  103. 103    t.fd(60) 
  104. 104    t.right(90) 
  105. 105    t.fd(30) 
  106. 106    t.left(90) 
  107. 107    t.fd(100) 
  108. 108    t.end_fill() 
  109. 109    t.done() 
  110. 110 
  111. 111 
  112. 112if __name__ == '__main__'
  113. 113    init() 
  114. 114    outline() 
  115. 115    tail() 
  116. 116    eyes_items = [(-60, 230, 0), (60, -50, 1)] 
  117. 117    eyes(eyes_items) 
  118. 118    nose() 
  119. 119    mouth() 
  120. 120    t.done() 

 

責(zé)任編輯:華軒 來源: 清風(fēng)Python
相關(guān)推薦

2022-10-30 12:57:31

UbuntuLinux

2018-04-17 09:20:35

Linux命令crypt

2021-11-01 07:33:02

Windows 10操作系統(tǒng)壁紙

2015-11-04 15:10:25

Fedora 23FedoraLinux

2015-10-29 11:43:40

易到

2021-11-01 12:35:19

LinuxASCII

2012-11-01 17:00:16

2012-11-05 10:50:50

程序員萬圣節(jié)俄羅斯方塊

2012-10-31 13:52:50

筆記本

2013-10-31 13:30:36

設(shè)計(jì)專題

2018-11-01 15:40:13

災(zāi)備

2016-10-31 17:57:32

萬圣節(jié)三星

2011-11-01 09:35:48

2012-10-29 14:37:25

華為

2013-11-15 13:13:30

微軟反Linux戰(zhàn)略

2021-10-31 08:25:06

網(wǎng)絡(luò)釣魚木馬網(wǎng)絡(luò)攻擊

2023-01-10 08:30:05

2013-10-31 13:03:58

釣魚網(wǎng)站趨勢科技

2014-10-30 09:38:37

程序員萬圣節(jié)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號