1. 程式人生 > >【16】python使用turtle庫繪畫

【16】python使用turtle庫繪畫

畫蛇

import turtle

def drawSnake(rad, angle, len, neckrad):  #
    for i in range(len):
        turtle.circle(rad, angle)   # 畫圓 rad:圓半徑 angle:圓弧度
        turtle.circle(-rad, angle)
    turtle.circle(rad, angle/2)
    turtle.fd(rad)  # 表示直線爬行,forward, 引數表示爬行的距離
    turtle.circle(neckrad+1, 180)
    turtle.fd(rad*2/3)
def main():
    turtle.setup(1300, 800, 0, 0)   # 甚至視窗寬+高+起始x/y
    pythonsize = 100
    turtle.pensize(pythonsize)   # 設定筆的寬度
    turtle.pencolor("red")  # 設定筆的顏色
    turtle.seth(-40)  # 設定筆的起始角度
    drawSnake(40, 80, 5, pythonsize/2)
main()

""""
python 的呼叫方式
1:import 庫名
呼叫的時:庫.函式名
優點:可以更改函式中函式的名字
2, from 庫名 import 函式名

"""


畫五角星

順序結構
    import turtle
    turtle.setup(2000, 2000, 0, 0)
    turtle.pensize(20)
    turtle.pencolor("black")
    turtle.seth(0)
    turtle.fd(400)
    turtle.seth(-144)
    turtle.fd(400)
    turtle.seth(-144-144)
    turtle.fd(400)
    turtle.seth(-144 - 144-144)
    turtle.fd(400)
    turtle.seth(-144 - 144-144-144)
    turtle.fd(400)
迴圈結構   


    import turtle
    turtle.setup(2000, 2000, 0, 0)
    turtle.pensize(20)
    turtle.pencolor("black")
    turtle.seth(0)
    length = 400
    angle = 0
    for i in range(5):
        turtle.fd(length)
        angle = angle - 144
        turtle.seth(angle)
迴圈遞迴函式
import turtle
def drawFivePiontedStar(length, angle):
    """
    Draw five_pointed_star by turtle library
    Initial screen ;width+height+initial position
    Initial pen: font+color
    Drawing line by recursive_function
    :param length: Initial five_pointed_star length
    :param angle: Initial position
    :return: None
    """
    def drawline(length, angle):
        turtle.seth(angle)
        turtle.fd(length)
    turtle.setup(2000, 2000, 0, 0)
    turtle.pensize(20)
    turtle.pencolor("black")
    for i in range(5):
        drawline(length, angle)
        angle = angle-144

if __name__ == "__main__":
    drawFivePiontedStar(400, 0)



畫樹

import turtle
def branch(length, level):
    """
    使用遞迴函式實現畫樹
    以沒有樹杈為例
    起始角度為90°
    向左轉換角45°,看有沒有樹杈(level)
    如果沒有,向右轉換角90°(-45),看有沒有樹杈
    如果沒有,向右轉換45°(0),返回原路
    """
    if level <= 0:
        return

    turtle.forward(length)
    turtle.left(45)
    branch(0.6 * length, level - 1)  # 90
    turtle.right(90)
    branch(0.6 * length, level - 1)
    turtle.left(45)
    turtle.backward(length)
    return


if __name__ == "__main__":

    turtle.left(90)
    branch(100, 3)