You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Turtle绘图偏移屏幕中心,部分内容超屏,求代码修正方案

Python Turtle图案偏移屏幕中心的问题修复

问题根源

当前代码中,海龟从屏幕原点(默认中心)开始,以(x*TILE_SIZE, -y*TILE_SIZE)为起点绘制每个方块,导致整个图案的左上角对齐屏幕中心,大部分区域偏移到屏幕右下侧,超出可视范围。

修复方案

要让图案居中,需要计算偏移量,将整个网格的中心与屏幕中心对齐:

  1. 计算整个网格的总宽度和总高度:total_width = IMG_WIDTH * TILE_SIZE,total_height = IMG_HEIGHT * TILE_SIZE
  2. 计算x轴偏移量:offset_x = -total_width / 2(将网格左边缘移到屏幕中心左侧一半宽度的位置)
  3. 计算y轴偏移量:offset_y = total_height / 2(将网格上边缘移到屏幕中心上方一半高度的位置)
  4. 修改goto的坐标,在原有基础上加上偏移量

同时可以优化绘图逻辑,避免在循环内反复调用pendown()和penup(),提升绘制效率。

修改后的完整代码

import turtle

t = turtle.Turtle()
t.speed(0)
t._delay(0)
t.penup()  # 初始状态抬起画笔,避免移动留痕

screen = turtle.Screen()
screen.colormode(255)

BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)

IMG_WIDTH = 8
IMG_HEIGHT = 8

TILE_SIZE = 32

image = [[2,0,0,0,0,0,0,2],
         [0,2,0,2,2,0,2,0],
         [0,0,2,3,3,2,0,0],
         [4,4,1,2,2,1,4,4],
         [3,0,0,4,4,0,0,3],
         [3,0,0,4,4,0,0,3],
         [3,0,0,4,4,0,0,3],
         [2,0,0,3,3,0,0,2]]

COLOR_DICTIONARY = { 0 : BLACK,
                     1 : WHITE,
                     2 : RED,
                     3 : BLUE,
                     4 : GREEN}

# 计算居中偏移量
total_width = IMG_WIDTH * TILE_SIZE
total_height = IMG_HEIGHT * TILE_SIZE
offset_x = -total_width / 2
offset_y = total_height / 2

for y in range(0, IMG_HEIGHT):
    for x in range(0, IMG_WIDTH):
        color = COLOR_DICTIONARY.get(image[y][x])
        t.color(color)
        t.fillcolor(color)
        # 应用偏移量调整绘制起点
        t.goto(x*TILE_SIZE + offset_x, -y*TILE_SIZE + offset_y)
        t.begin_fill()
        t.pendown()
        for i in range(4):
            t.forward(TILE_SIZE)
            t.right(90)
        t.penup()
        t.end_fill()

turtle.done()  # 保持窗口打开

额外优化点说明

  • 初始状态添加t.penup(),避免海龟移动时留下多余轨迹
  • 提取color变量,减少重复的字典查询操作
  • 最后添加turtle.done(),防止程序运行结束后窗口直接关闭

内容的提问来源于stack exchange,提问作者Golden_Ketchup0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:34:58