首頁 > 軟體

通過Python繪製冰墩墩的範例程式碼

2022-02-09 10:00:35

效果

基礎繪製圓

基礎知識:

forward(x):將筆向前移動 x 個單位。

right(x):將筆順時針旋轉角度 x。

left(x):將筆逆時針旋轉角度 x。

penup():停止繪製海龜筆。

pendown():開始繪製海龜筆。

backward(x):將筆向後移動 x 單位。

circle(radius):此函數以“海龜”位置為中心,繪製一個給定半徑的圓。

畫半徑為50的圓:

import turtle

# 初始化
t = turtle.Turtle()

r = 50
t.circle(r)

如下:

畫螺旋圈:

import turtle

t = turtle.Turtle()

# 初始半徑10
r = 10

# 迴圈畫
for i in range(100):
    t.circle(r + i, 45)

如下:

同心圓:

import turtle

t = turtle.Turtle()

# 初始半徑
r = 10

# 迴圈畫圓
for i in range(50):
    t.circle(r * i)
    t.up()
    t.sety((r * i) * (-1))
    t.down()

基礎彩色填充形狀

fillcolor():這有助於選擇填充形狀的顏色。它將輸入引數作為顏色名稱或顏色的十六進位制值,並用所選顏色填充即將到來的封閉地理物件。顏色名稱是基本顏色名稱,即紅色、藍色、綠色、橙色。

顏色的十六進位制值是十六進位制數位的字串(以'#'開頭),即#RRGGBB。R、G 和 B 是十六進位制數(0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F)。

begin_fill():此函數告訴海龜所有即將關閉的圖形物件都需要用所選顏色填充。

end_fill():此函數告訴海龜停止填充即將關閉的圖形物件。

繪製彩色填充正方形:

import turtle

# 建立畫筆
t = turtle.Turtle()

t.speed(1)
# 手動輸入邊長
s = int(input("Enter the length of the side of the square: "))

# 輸入顏色
col = input("Enter the color name or hex value of color(# RRGGBB): ")

# 填充顏色
t.fillcolor(col)

# 開始填充
t.begin_fill()

# 畫正方形
for _ in range(4):
    t.forward(s)
    t.right(90)

# ending the filling of the color
t.end_fill()

如下:

繪製顏色填充星

import turtle

# 建立畫筆
t = turtle.Turtle()
t.speed(1)
# 輸入五角星邊長
s = int(input("Enter the length of the side of the star: "))

# 輸入顏色,必須為英文
col = input("Enter the color name or hex value of color(# RRGGBB): ")

# 建立畫筆填充
t.fillcolor(col)

# 開始填充
t.begin_fill()

# 畫圖
for _ in range(5):
    t.forward(s)
    t.right(144)

# 結束
t.end_fill()

如下:

還有更多知識,需要大家自己探索,我就不挨個講了。

冰墩墩程式碼

為啥前面要講一點基礎,因為講一點基礎你們就能看懂程式碼啥意思了。

基與其它開源作者修改了一點,執行即可成功:

# coding=gbk
"""
作者:川川
公眾號:玩轉巨量資料
@時間  : 2022/2/8 14:28</code><code>微信:hxgsrubxjogxeeag</code><code>群:428335755
"""
import turtle as t

# 設定速度
t.speed(50)  # 速度
t.delay(10)  # 延遲

t.title('冰墩墩')
# 雙耳
# 左耳
t.penup()
t.goto(-150, 200)
t.setheading(160)
t.begin_fill()
t.pendown()
t.circle(-30, 230)
t.setheading(180)
t.circle(37, 90)
t.end_fill()
# 右耳
t.penup()
t.goto(60, 200)
t.setheading(20)
t.begin_fill()
t.pendown()
t.circle(30, 230)
t.setheading(0)
t.circle(-37, 90)
t.end_fill()
# 頭
t.pensize(5)
t.penup()
t.goto(-113, 237)
t.setheading(30)
t.pendown()
t.circle(-134, 60)

t.penup()
t.goto(-150, 200)
t.setheading(-120)
t.pendown()
t.circle(200, 80)

t.penup()
t.goto(60, 200)
t.setheading(-60)
t.pendown()
t.circle(-200, 80)

t.penup()
t.setheading(210)
t.pendown()
t.circle(-120, 60)
# 雙眼
# 左眼
# 眼圈
t.penup()
t.goto(-140, 100)
t.setheading(-45)
t.begin_fill()
t.pendown()
a = 0.2
for i in range(120):
    if 0 <= i < 30 or 60 <= i < 90:
        a = a + 0.1
        t.lt(3)  # 向左轉3度
        t.fd(a)  # 向前走a的步長
    else:
        a = a - 0.1
        t.lt(3)
        t.fd(a)
t.end_fill()
# 眼白
t.fillcolor("white")
t.penup()
t.goto(-103, 125)
t.setheading(0)
t.begin_fill()
t.pendown()
t.circle(14, 360)
t.end_fill()
# 眼珠
# t.fillcolor("sienna")
# t.pencolor("sienna")
t.penup()
t.goto(-102, 133)
t.setheading(0)
t.begin_fill()
t.pendown()
t.circle(6, 360)
t.end_fill()
# 右眼
# 眼圈
t.penup()
t.goto(50, 100)
t.setheading(45)
t.fillcolor("black")
t.pencolor("black")
t.begin_fill()
t.pendown()
a = 0.2
for i in range(120):
    if 0 <= i < 30 or 60 <= i < 90:
        a = a + 0.1
        t.lt(3)  # 向左轉3度
        t.fd(a)  # 向前走a的步長
    else:
        a = a - 0.1
        t.lt(3)
        t.fd(a)
t.end_fill()
# 眼白
t.fillcolor("white")
t.penup()
t.goto(13, 125)
t.setheading(0)
t.begin_fill()
t.pendown()
t.circle(14, 360)
t.end_fill()
# 眼珠
# t.fillcolor("sienna")
# t.pencolor("sienna")
t.penup()
t.goto(12, 133)
t.setheading(0)
t.begin_fill()
t.pendown()
t.circle(6, 360)
t.end_fill()
# 鼻子
t.pencolor("black")
t.fillcolor("black")
t.penup()
t.goto(-55, 133)
t.begin_fill()
t.pendown()
t.fd(20)
t.seth(-120)
t.fd(20)
t.seth(120)
t.fd(20)
t.end_fill()
# 嘴
t.penup()
t.goto(-70, 110)
t.setheading(-30)
t.fillcolor("red")
t.begin_fill()
t.pendown()
t.circle(50, 60)
t.setheading(-120)
t.circle(-100, 15)
t.circle(-15, 90)
t.circle(-100, 15)
t.end_fill()
# 四肢
# 左臂
t.penup()
t.goto(-175, 100)
t.fillcolor("black")
t.begin_fill()
t.setheading(-120)
t.pendown()
t.fd(100)
t.setheading(-110)
t.circle(20, 180)
t.fd(30)
t.circle(-5, 160)
t.end_fill()
# 右臂
t.penup()
t.goto(85, 100)
t.setheading(60)
t.begin_fill()
t.pendown()
t.fd(100)
t.setheading(70)
t.circle(20, 180)
t.fd(30)
t.circle(-5, 160)
t.end_fill()
# 小紅心
t.penup()
t.pencolor("red")
t.fillcolor('red')
t.goto(105, 200)
t.begin_fill()
t.pendown()
t.circle(-5, 180)
t.setheading(90)
t.circle(-5, 180)
t.setheading(-120)
t.fd(17)
t.penup()
t.goto(105, 200)
t.pendown()
t.setheading(-60)
t.fd(17)
t.end_fill()
t.pencolor("black")
t.fillcolor("black")
# 左腿
t.penup()
t.goto(-120, -45)
t.begin_fill()
t.pendown()
t.setheading(-90)
t.circle(-140, 20)
t.circle(5, 109)
t.fd(30)
t.circle(10, 120)
t.setheading(90)
t.circle(-140, 10)
t.end_fill()
# 右腿
t.penup()
t.goto(30, -45)
t.begin_fill()
t.pendown()
t.setheading(-90)
t.circle(140, 20)
t.circle(-5, 109)
t.fd(30)
t.circle(-10, 120)
t.setheading(90)
t.circle(140, 10)
t.end_fill()
# 冰糖外殼
t.pensize(3)
t.penup()
t.goto(-160, 195)
t.setheading(160)
t.pendown()
t.circle(-40, 230)
t.setheading(30)
t.circle(-134, 58)
t.setheading(60)
t.circle(-40, 215)
t.setheading(-60)
t.fd(15)
t.circle(2, 200)
t.setheading(65)
t.fd(30)
t.circle(-25, 180)
t.fd(100)
t.circle(2, 25)
t.circle(-200, 47)
t.circle(2, 60)
t.circle(140, 23)
t.circle(-2, 90)
t.setheading(180)
t.fd(70)
t.circle(-2, 90)
t.fd(30)
t.setheading(-160)
t.circle(-100, 35)
t.setheading(-90)
t.fd(30)
t.circle(-2, 90)
t.fd(70)
t.circle(-2, 90)
t.setheading(60)
t.circle(140, 30)
t.circle(2, 45)
t.circle(-200, 19)
t.circle(2, 130)
t.fd(30)
t.circle(-25, 180)
t.fd(100)
t.setheading(90)
t.circle(-200, 30)
# 冰糖面罩
t.pensize(3)
t.penup()
t.goto(65, 120)
t.setheading(90)
t.pendown()
t.pencolor("red")
a = 1
for i in range(120):
    if 0 <= i < 30 or 60 <= i < 90:  # 控制a的變化
        a = a + 0.25
        t.lt(3)  # 向左轉3度
        t.fd(a)  # 向前走a的步長
    else:
        a = a - 0.25
        t.lt(3)
        t.fd(a)
t.pencolor("orange")
t.penup()
t.goto(66, 120)
t.pendown()
a = 1
for i in range(120):
    if 0 <= i < 30 or 60 <= i < 90:
        a = a + 0.255
        t.lt(3)
        t.fd(a)
    else:
        a = a - 0.255
        t.lt(3)
        t.fd(a)
t.pencolor("green")
t.penup()
t.goto(67, 120)
t.pendown()
a = 1
for i in range(120):
    if 0 <= i < 30 or 60 <= i < 90:
        a = a + 0.2555
        t.lt(3)
        t.fd(a)
    else:
        a = a - 0.2555
        t.lt(3)
        t.fd(a)
t.pencolor("deep sky blue")
t.penup()
t.goto(68, 120)
t.pendown()
a = 1
for i in range(120):
    if 0 <= i < 30 or 60 <= i < 90:
        a = a + 0.25955
        t.lt(3)
        t.fd(a)
    else:
        a = a - 0.25955
        t.lt(3)
        t.fd(a)
t.pencolor("pink")
t.penup()
t.goto(71, 120)
t.pendown()
a = 1
for i in range(120):
    if 0 <= i < 30 or 60 <= i < 90:
        a = a + 0.26
        t.lt(3)
        t.fd(a)
    else:
        a = a - 0.26
        t.lt(3)
        t.fd(a)
t.pencolor("purple")
t.penup()
t.goto(72, 120)
t.pendown()
a = 1
for i in range(120):
    if 0 <= i < 30 or 60 <= i < 90:
        a = a + 0.269
        t.lt(3)
        t.fd(a)
    else:
        a = a - 0.269
        t.lt(3)
        t.fd(a)

# 五環
t.penup()
t.goto(-55, -10)
t.pendown()
t.pencolor("blue")
t.circle(10)
t.penup()
t.goto(-40, -10)
t.pendown()
t.pencolor("black")
t.circle(10)
t.penup()
t.goto(-25, -10)
t.pendown()
t.pencolor("red")
t.circle(10)
t.penup()
t.goto(-50, -20)
t.pendown()
t.pencolor("yellow")
t.circle(10)
t.penup()
t.goto(-30, -20)
t.pendown()
t.pencolor("green")
t.circle(10)

# 輸出文字
printer = t.Turtle()
printer.hideturtle()
printer.penup()
printer.goto(-350,-50)
printer.write("可nn",move = True, align="left", font=("楷體", 31, "bold"))
printer.goto(-350,-100)
printer.write("愛nn",move = True, align="left", font=("楷體", 31, "bold"))
printer.goto(-350,-150)
printer.write("冰nn",move = True, align="left", font=("楷體", 31, "bold"))
printer.goto(-350,-200)
printer.write("墩nn",move = True, align="left", font=("楷體", 31, "bold"))
printer.goto(-350,-250)
printer.write("墩nn",move = True, align="left", font=("楷體", 31, "bold"))

t.hideturtle()
t.done()

如果想要打包成exe,cd到該檔案目錄下執行:

pyinstaller -F -w  bingdunndun.py

則會生成的dist檔案下有:bingdundun.exe

生成好後你也可以直接改名為:冰墩墩.exe

以上就是通過Python繪製冰墩墩的範例程式碼的詳細內容,更多關於Python繪製冰墩墩的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com