Pyhton表白代碼——浪漫聖誕節


聖誕節即將到了,所以這回通過turtle模塊來編寫一個表白的小程序

開發時間:2019-12-15

開發工具:Sublime

開發模塊:turtle

這里用到了turtle庫的相關知識,如果不熟悉可以看我之前的博客:

turtle庫相關知識點

 

首先,我們需要來創建一個函數來承載所有初始化數據,包括畫布的大小,畫筆的尺寸、顏色、還有畫筆的移動速度

以演示圖為例子,設置了一個800*600大小的畫布,紅色畫筆寬為5,速度為10

代碼如下所示:

def initdata():
    t.setup(800,600)
    t.pencolor('red')
    t.pensize(5)
    t.speed(10)

 

 

設置好相關屬性后,就可以開始作畫了

首先畫筆位於正中央,若想移動畫筆將會在畫布上留下痕跡,也就是畫上了線條,

但是有些線條,畫作本身並不需要,這就需要做到讓畫筆移動的同時,畫布不留痕跡

需要用到up()和down();兩個函數,如直譯一般作用為抬起畫筆和放下畫筆

所以操作為,抬起畫筆——移動到指定地方——放下畫筆

代碼如下所示:

ef move_pen(x,y):
    t.hideturtle()
    t.up()
    t.goto(x,y)
    t.down()
    t.showturtle()

 

注意:hideturtle()和showturtle()為隱藏畫筆和顯示畫筆。對畫作本身毫無影響

 

繪制演示圖中,最難的部分在哪里?

一定是愛心上半部分的兩個半圓,所以為方便,我們單獨講這一部分提出來做一個繪制半圓的函數

在turtle庫中並沒有繪制曲線的函數,最接近的也只有畫圓了。

不過我們可以通過割圓法來繪制,也就是將這一段圓弧視為一個邊長很短的多邊形

所以我們通過for循環來繪制,通過不斷偏轉方向的小線段組成

代碼如下:

def hart_arc():
    for i in range(200):
        t.right(1)
        t.forward(2)

 

 

現在我們開始繪制圖形draw()

首先表白總要有表白者和被表白者吧,所以我們先創建name和sign來存儲名字

之后通過調用初始化函數來獲取相關信息

最后就可以操縱畫筆開始繪制。

先將畫筆移動到(0,-180)的位置,也就是愛心的下部尖端,這就用到了剛剛創建的移動函數,

之后控制畫筆調整方向,移動224的距離繪制完成前面的愛心下部的右側邊

然后繪制愛心上半部分,調用hart_arc()繪制了愛心上半部分左側,

然后調整方向,畫筆向左偏轉120度,再繪制另一個半圓

最后畫筆返回初始位置,畫好了第一個愛心,將其填充為粉色。

同理可畫第二個愛心,到最后來一個“一箭雙❤”就可以了

 

繪制完成之后,我們就要輸出剛剛記載的兩個人名了

這需要用到write()函數

代碼如下:

def draw():
    name=input("請輸入表白姓名:")
    sign=input("請輸入你的大名:")
    initdata()
    move_pen(0,-180)
    t.left(140) 
    t.fillcolor("pink")
    t.begin_fill()  
    t.forward(224)  
    hart_arc() 
    t.left(120) 
    hart_arc() 
    t.forward(224)
    t.end_fill()  
    move_pen(x=70, y=160) 
    t.left(185) 
    t.circle(-110,185)  
    t.forward(50)
    move_pen(-180,-180)
    t.left(180) 
    t.forward(600)  
    move_pen(0,50)
    t.hideturtle() 
    t.color('#CD5C5C', 'red')  
    t.write(name, font=('Arial', 20, 'bold'), align="center")
    t.color('red', 'pink')
    time.sleep(2)
    move_pen(220, -180)
    t.hideturtle()
    t.write(sign, font=('Arial', 20), align="center")

 

這樣表白的代碼就制作完成了

 

 感謝大家支持,總體代碼如下:

import turtle as t
import time

def initdata():
    t.setup(800,600)
    t.pencolor('red')
    t.pensize(5)
    t.speed(10)

def move_pen(x,y):
    t.hideturtle()
    t.up()
    t.goto(x,y)
    t.down()
    t.showturtle()

def hart_arc():
    for i in range(200):
        t.right(1)
        t.forward(2)

def draw():
    name=input("請輸入表白姓名:")
    sign=input("請輸入你的大名:")
    initdata()
    move_pen(0,-180)
    t.left(140) 
    t.fillcolor("pink")
    t.begin_fill()  
    t.forward(224)  
    hart_arc() 
    t.left(120) 
    hart_arc() 
    t.forward(224)
    t.end_fill()  
    move_pen(x=70, y=160) 
    t.left(185) 
    t.circle(-110,185)  
    t.forward(50)
    move_pen(-180,-180)
    t.left(180) 
    t.forward(600)  
    move_pen(0,50)
    t.hideturtle() 
    t.color('#CD5C5C', 'red')  
    t.write(name, font=('Arial', 20, 'bold'), align="center")
    t.color('red', 'pink')
    time.sleep(2)
    move_pen(220, -180)
    t.hideturtle()
    t.write(sign, font=('Arial', 20), align="center")
def main():
    draw()
    time.sleep(5)
if __name__ == '__main__':
    main()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM