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

Turtle库中Player类up()函数失效,创建对象时画笔仍绘图

继承Turtle类时画笔绘图及自定义up()失效问题解决

问题原因

你的Player类中自定义的up()方法覆盖了父类Turtle的up()方法——父类的up()是penup()的别名,作用是抬起画笔停止绘图。这导致两个问题:

  • 初始化时调用self.up()执行的是你写的移动逻辑,而非抬起画笔,所以画笔始终处于落下状态,移动时会留下轨迹。
  • 主程序中调用up()时,实际执行的是移动逻辑,但因为画笔没抬起,移动时会绘图,和你预期的效果不符,所以感觉“无效”。

修正方案

  1. 重命名自定义移动方法:避免和父类控制画笔的up()/down()方法重名,比如改成move_up()和move_down()。
  2. 正确抬起画笔:在初始化时调用self.penup()(或super().up())来真正抬起画笔,停止绘图。

修正后的代码

from turtle import Turtle

class Player(Turtle):
    def __init__(self, num):
        super().__init__()
        self.penup()  # 调用父类的画笔抬起方法
        self.color("white")
        self.shape("square")
        self.shapesize(stretch_wid=5, stretch_len=1, outline=None)
        if num == 1:
            self.goto(-350, 0)
        else:
            self.goto(350, 0)

    def move_up(self):
        new_y = self.ycor() + 20
        self.goto(x=self.xcor(), y=new_y)

    def move_down(self):
        new_y = self.ycor() - 20
        self.goto(x=self.xcor(), y=new_y)

现在初始化时画笔会自动抬起,移动时不会留下轨迹,主程序中调用player.move_up()即可让玩家正常向上移动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:32:15