移动汉字贺卡

如本文章标有价格,需议价或其它事情商议请加微信scratch8

李兴球Python海龟移动汉字贺卡
李兴球Python海龟移动汉字贺卡

"""
   移动汉字贺卡.py
"""
import os
import time
from random import randint
from turtle import RawTurtle,Shape,Turtle,Screen
from winsound import PlaySound,SND_ASYNC,SND_LOOP
from PIL import Image,ImageFont,ImageDraw,ImageTk

def txt2image(txt,filename=None,fontfile="msyh.ttf",fontsize=18,color=(25,0,255,255)):
    """
        文本转图像实用小程序,只支持单行文本,默认为微软雅黑字体,
        txt:文本
        filename:要写入的文件名,如果为空则不写入,并且返回图形对象
        fontfile:ttf字体文件
        fontsize:字体大小
        color:颜色,通过写alpha值可支持半透明图形。        
    """    
    pass                                 # 这里省略一些代码
    
def bounce_on_edge(self):
    """碰到边缘就反弹的方法"""
    sw = self.screen.window_width()
    sh = self.screen.window_height()
    x = self.xcor()
    y = self.ycor()    
    if x > sw/2 or x < -sw/2:             # 到了最右边或最左边
        self.seth(180 - self.heading())   # 改变方向
    elif y  > sh/2 or y < -sh/2:          # 到了最上边或最下边 
        self.seth( -self.heading())

pass                                      # 这里省略一些代码

screen.title('移动汉字贺卡by李兴球,网址:www.lixingqiu.com')

zi = screen.textinput('输入框','请输入贺词')
if zi==None or zi=="": zi =  '风火轮编程祝本群所有人员身体健康'
shapes = [Photo(txt2image(z,fontsize=28,color='blue')) for z in zi]

def clickevent(x,y):
    if shapes:
        sp = shapes.pop(0)
        c = Shape('image',sp)         # 新建造型
        screen.addshape(str(c),c)     # 把造型添加到造型字典
        z = Turtle(shape=str(c),visible=False)        
        z.penup()
        z.speed(0)       
        z.seth(randint(180,360))
        z.goto(x,y)
        z.stamp()
        z.showturtle()
    else:
        PlaySound('卓依婷-迎春花.wav',SND_LOOP|SND_ASYNC)
        screen.onclick(None)
        screen.bgpic('鱼.png')
        g = Turtle(visible=False)
        g.penup()

        g.sety(-20)
        g.color('magenta')
        s = 'Python值得你拥有'
        g.write(s,align='center',font=('',24,'bold'))

        counter = 0
        while True:
            for z in screen.turtles():
                z.fd(0.1)
                z.bounce_on_edge()
            counter += 1
            if counter == 3000:
                g.clear()
                g.setx(0)
                g.sety(-20)
                g.color('red')
                s = '本程序由Python海龟模块制作'
                g.write(s,align='center',font=('',16,'bold'))
                
                g.sety(-55)
                g.color('gray')
                s = '需要本程序源码的请加微信scratch8'
                g.write(s,align='center',font=('',18,'underline'))                
    
screen.onclick(clickevent)
screen.mainloop()

另外一个版本:

需要全部源代码和素材请扫码付款:

VIP免费查看

已有0人支付

本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » 移动汉字贺卡
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页