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

两种颜色的填充方块交替出现,且有一些红色、白色的填充圆。当头上下转动盯着这张图片看时,绘制的方块仿佛在滚动变形。
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》图书介绍、代码下载、视频教程