滚动变形错觉 -《跟小海龟学Python》案例代码

今天分享新书《跟小海龟学Python》的案例代码:滚动变形错觉。

9d3fdfcc4c93b66cb59474bf5717123f.jpeg

两种颜色的填充方块交替出现,且有一些红色、白色的填充圆。当头上下转动盯着这张图片看时,绘制的方块仿佛在滚动变形。

Python源代码:

from turtle import *  # 导入海龟绘图库

# 定义绘制填充正方形函数(左上角x、y坐标、边长、颜色)
def drawSquare(x, y, l, col):
    color(col)  # 设置颜色
    penup()  # 抬笔
    goto(x, y)  # 移动到目标位置
    pendown()  # 落笔
    begin_fill()  # 开始填充
    for i in range(4):  # 绘制正方形
        forward(l)  # 前进
        right(90)  # 右转
    end_fill()  # 结束填充

# 定义绘制填充圆函数(圆心x、y坐标、直径、颜色)
def drawDot(x, y, d, col):
    color(col)  # 设置颜色
    penup()  # 抬笔
    goto(x, y)  # 移动到目标位置
    pendown()  # 落笔
    dot(d, col)  # 以颜色col画直径d的填充圆

speed(0)  # 加速绘制
step = 40  # 步长
for y in range(-200, 250, step):  # 对y遍历
    for x in range(-300, 300, step):  # 对x遍历
        # 画两种颜色交替出现的填充正方形
        if ((x+y)//step) % 2 == 0:
            drawSquare(x, y, step, 'OliveDrab2')
        else:
            drawSquare(x, y, step, 'seaGreen3')

# 绘制白色、红色交替的圆圈
for y in range(-200, 250-step, step):  # 对y遍历
    for x in range(-300+step, 300, step):  # 对x遍历
        if ((x+y)//step) % 3 == 0:
            drawDot(x, y, 8, 'white')  # 白色圆圈
        else:
            drawDot(x, y, 8, 'red')  # 红色圆圈

hideturtle()  # 隐藏海龟图标
done()  # 绘制结束

简单视频教程:

图书简介:

童晶:《跟小海龟学Python》图书介绍、代码下载、视频教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值