如何在Python中移动在不同函数中创建的海龟?

2024-03-29 15:32:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我对使用python和一般的编码非常陌生,但在过去的几天里我一直在玩turtle。我尝试创建几个函数,其中其他函数移动在不同函数中创建的海龟。例如:

import turtle as t

def setUp():
    t.setup(900,600)
    t.colormode(255)
    win = t.Screen()

def turtles():
    t1 = t.Turtle()
    t1.shapesize(1.5,1.5,0)
    t1.color('red')
    t1.pensize(3)
    t1.shape('turtle')

def moveTurtle():
    t1.forward(50)

setUp()
turtles()
moveTurtle()

在我这里的示例中,当python转到moveTurtles()时,t1无法识别,因为它是在以前的函数中创建的。如果有人能给我一些关于如何做这件事的见解,我将非常感激。谢谢您!你知道吗


Tags: 函数import编码defassetupwint1
2条回答

选项3:

turtle和screen对象是由turtle包设计的全局实体。(当函数返回时,本地函数不会被回收。)只需将它们设为全局,并全局访问它们或将它们传递到需要它们的地方:

from turtle import Screen, Turtle

def setUp(w):
    w.setup(900, 600)
    w.colormode(255)

def turtles(t):
    t.shapesize(1.5, 1.5, 0)
    t.color('red')
    t.pensize(3)
    t.shape('turtle')

def moveTurtle(t):
    t.forward(50)

win = Screen()
t1 = Turtle()

setUp(win)
turtles(t1)
moveTurtle(t1)

您有两种选择:

选项1:

从第一个方法返回变量并将其发送到第二个方法:

import turtle as t

def setUp():
    t.setup(900,600)
    t.colormode(255)
    win = t.Screen()

def turtles():
    t1 = t.Turtle()
    t1.shapesize(1.5,1.5,0)
    t1.color('red')
    t1.pensize(3)
    t1.shape('turtle')
    return t1

def moveTurtle(t1):
    t1.forward(50)

setUp()
moveTurtle(turtles())

选项2:

使用不推荐但可用的全局变量:

import turtle as t

t1 = None

def setUp():
    t.setup(900,600)
    t.colormode(255)
    win = t.Screen()

def turtles():
    global t1
    t1 = t.Turtle()
    t1.shapesize(1.5,1.5,0)
    t1.color('red')
    t1.pensize(3)
    t1.shape('turtle')

def moveTurtle():
    t1.forward(50)

setUp()
turtles()
moveTurtle()

相关问题 更多 >