Python Turtle游戏开发:for循环实现带间隙方块绘制问题求助
Turtle方块绘制间隙问题:分析与修复
核心问题
你的draw_blocks函数逻辑错误:每次循环变量x满足条件时,你都会绘制全部21个位置的方块,等于所有位置被重复绘制多次,最终所有位置都被覆盖成方块,自然看不到间隙。
修复方案
正确逻辑应该是遍历每个方块的位置索引,仅在索引满足条件时绘制对应位置的方块:
def draw_blocks(): # 遍历每个方块的位置索引(0到20) for idx in range(0, 21): # 当索引能被2或5整除时绘制方块 if idx % 2 == 0 or idx % 5 == 0: # 计算当前方块的x坐标:索引 × 方块尺寸 square_x = idx * square_size draw_square(square_x, 0)
额外优化
draw_square函数里的turtle.tracer(0)、turtle.speed(0)、turtle.hideturtle()属于全局设置,不需要每次画方块都重复执行,建议放到程序初始化阶段:
# 程序启动时初始化一次 turtle.tracer(0) turtle.speed(0) turtle.hideturtle() def draw_square(x, y): turtle.fillcolor("pink") turtle.penup() turtle.goto(x, y) turtle.pendown() turtle.begin_fill() turtle.goto(x+square_size, y) turtle.goto(x+square_size, y-square_size) turtle.goto(x, y-square_size) turtle.goto(x, y) turtle.end_fill()
这样修改后,就能实现"索引能被2或5整除时绘制方块,其余位置留间隙"的效果。
内容的提问来源于stack exchange,提问作者van_halen_99
相关产品推荐
相关产品推荐

