iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
Software Development

Python派神,大顯神威!!系列 第 9

【Day09】: Python作畫-黃金秀作品 + Turtle模組程式撰寫概述

  • 分享至 

  • xImage
  •  

YouTube 相同議題趣味影片連結:
【程式/知識變現 03】- Python王者降臨 第一式:聖光乍現-作畫天份
https://youtu.be/2Z3qBX-jDbQ
歡迎連結參觀觀賞,若有興趣也請訂閱持續關注我

緊接著來聊一下黃金等級的程式設計師;
這些人都怎麼秀作品的呢?

想當然而,跟頂尖高手摸得著邊的事務,他們都能稍有涉略,
在設計的作品上總想與高手切磋以分高下,
因此,就連程式設計的學習旅程上也不會只停留在基礎程式設計,
總能在基礎程式中找出應用呈現高手的樣子。

想從Python的程式設計作品看到這些黃金高手的影子,
閉眼想像,應該會是下面的樣子:
圖片

下面接著說明Turtle模組使用方法概述,讓各位對於Python的作畫模組有點概念,
相關說明如下:
(一) 載入turtle模組
Turtle模組在Python程式語言中為內建模組,不須安裝可直接載入使用。
常見的程式寫法:import turtle 或是 from turtle import *

(二) 設定畫布環境
Turtle繪圖的任何繪圖動作都必須在畫布(繪圖區域)上操作,因此需要先初始化畫布物件,再依需求配置畫布環境設定。此指令可指定screen為畫布物件方法。
(非必須)常見的程式寫法:screen = turtle.Screen()

注意事項:
turtle.Screen()的"S"必須是大寫字母

  1. 設定螢幕背景顏色
    常見的程式寫法:
    screen.bgcolor('black') # 黑色
    screen.bgcolor('#add8e6')

(三) 控制繪圖程式(移動、方向、顏色等)
當畫布環境設定完成,就能開始使用函式功能來控制turtle動作。此語法可控制turtle往前20個像素(pixel)。
常見的程式寫法: forward(20)

  1. 設定畫筆顏色
    常見的程式寫法:
    myTurtle.color('red') # 紅色

  2. 設定畫一個封閉幾何圖形的外框及底色,例如藍框紅底、半徑為 30 的圓:
    常見的程式寫法:
    color('blue', 'red')
    begin_fill()
    circle(30)
    end_fill()

  3. 設定畫筆尺寸
    常見的程式寫法:
    pensize(2) # 2 像素寬

  4. 提筆與落筆
    常見的程式寫法:
    penup() # 提筆
    pendown() # 落筆

  5. 走到某個位置
    常見的程式寫法:
    goto(90, 80) # 走到 (90, 80) 位置

(四) 結束繪圖程式
當程式執行完成,畫布就會"直接"關閉,若想要確認程式結果和繪圖內容是否正確時!該怎麼辦?此語法可控制畫布為持續開啟狀態,直到手動關閉畫布程式才會結束。
(非必須) 常見的程式寫法:screen.mainloop()

Turtle 繪圖函數速查資訊,參考如下:
Overview of available Turtle and Screen methods
英文版: https://docs.python.org/3/library/turtle.html
中文版: https://docs.python.org/zh-tw/3/library/turtle.html

今天一樣不能免俗地分享一下程式碼,讓大家可以小秀一下黃金戰士鋼鐵人的英姿。

import turtle
# Top Part
piece1=[[(-40, 120), (-70, 260), (-130, 230), 
(-170, 200), (-170, 100), (-160, 40), (-170, 10), 
(-150, -10), (-140, 10), (-40, -20), (0, -20)],[(0, -20), 
(40, -20), (140, 10), (150, -10), (170, 10), (160, 40),
(170, 100), (170, 200), (130, 230), (70, 260), (40, 120), 
(0, 120)]]
# Middle Part
piece2=[[(-40, -30), (-50, -40), (-100, -46), (-130, -40),
 (-176, 0), (-186, -30), (-186, -40), (-120, -170), 
(-110, -210), (-80, -230), (-64, -210), (0, -210)],
[(0, -210), (64, -210), (80, -230), (110, -210), (120, -170), (186, -40), (186, -30), (176, 0), (130, -40), (100, -46), (50, -40), (40, -30), (0, -30)]]
#Bottom Part
piece3=[[(-60, -220), (-80, -240), (-110, -220), 
(-120, -250),(-90, -280), (-60, -260), (-30, -260), (-20, -250), (0, -250)],[(0, -250), (20, -250), (30, -260), (60, -260),
 (90, -280), (120, -250),(110, -220), (80, -240), (60, -220), (0, -220)]]
turtle.hideturtle()
turtle.bgcolor('#ba161e') #Dark Red
turtle.setup(500,600)
turtle.title("I AM IRONMAN")
piece1Goto=(0,120)
piece2Goto=(0,-30)
piece3Goto=(0,-220)
turtle.speed(2)
def draw_piece(piece,pieceGoto):
    turtle.penup()
    turtle.goto(pieceGoto)
    turtle.pendown()
    turtle.color('#fab104') #Light Yellow
    turtle.begin_fill()
    for i in range(len(piece[0])):
        x,y=piece[0][i]
        turtle.goto(x,y)

    for i in range(len(piece[1])):
        x,y=piece[1][i]
        turtle.goto(x,y)
    turtle.end_fill()
draw_piece(piece1,piece1Goto)
draw_piece(piece2,piece2Goto)
draw_piece(piece3,piece3Goto)
turtle.hideturtle()
turtle.done()

明天我們再來看看更優秀的人們,怎麼用Python詮釋畫作。


上一篇
【Day08】:Python作畫 –白銀速作品 + Turtle模組基本介紹
下一篇
【Day10】: Python作畫-王者炫作品 + 說明Turtle繪圖基礎控制
系列文
Python派神,大顯神威!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言