生成方块gif图,显示在海龟画图屏幕上。《Python海龟宝典》代码示例程序

生成方块gif图,显示在海龟画图屏幕上。《Python海龟宝典》代码示例程序

不同颜色图章10×10阵列python海龟宝典代码示例程序


Python代码力求可读性高,要有注释,注释最好也对齐。

"""
   生成方块gif图,显示在海龟画图屏幕上。
   这个程序使用了pillow模块,生成gif图像,
   然后海龟会使用这些gif图作为自己的造型,
   最后海龟会依次切换造型图以10X10阵列显示在屏幕上。
   问题:所盖的图章静止不动,你能让它们动起来吗?
   联系李兴球,免费发送答案!
"""
import os                                    # 导入os模块
import turtle                                # 导入turtle模块
from PIL import Image                        # 从pillow模块导入Image 
from random import randint                   # 从随机模块导入randint

def makecolor():
    """产生RGB颜色三元组"""
    r = randint(0,255)                       # 红色份量
    g = randint(0,255)                       # 绿色份量
    b = randint(0,255)                       # 蓝色份量 
    return r,g,b                             # 返回rgb

def makegif(path,amounts):
    """在path路径下生成gif文件
       path:文件夹路径
       amounts:数量
    """
    size = (10,10)                           # gif文件分辨率
    images = []                              # 新建列表
    for i in range(amounts):
        filename = f"{path}{os.sep}{str(i)}.gif"    
        c = makecolor()                      # 产生颜色
        im = Image.new("RGBA",size,color=c)  # 新建图形对象
        im.save(filename)                    # 保存gif文件
        images.append(filename)              # 添加到列表        
    return images                            # 返回列表  

def main():
    """主要执行函数"""
    # 指定生成图片的文件夹,如果不存在,则创建它
    folder = os.getcwd() + os.sep + 'test'
    if not os.path.exists(folder):os.mkdir(folder)
    
    images = makegif(folder,100)             # 在folder生成100个gif文件
    [turtle.addshape(im) for im in images]   # 注册到造型字典

    i = 0                                    # 建立索引号
    turtle.ht()                              # 隐藏海龟对象
    turtle.penup()                           # 抬笔
    while i < 100:                           # 当i小于10的时候
        r = i // 10                          # 取行数
        c = i % 10                           # 取列数
        x = c * 20                           # 算x坐标
        y = r * 20                           # 算y坐标  
        turtle.goto(x,y)                     # 到达x,y坐标
        turtle.shape(images[i])              # 切换造型 
        turtle.stamp()                       # 盖图章
        i += 1                               # 索引号加1
    turtle.done()

if __name__ == '__main__':

    main()

联系李兴球,免费发送答案!

李兴球

李兴球的博客是Python创意编程原创博客