-1

使用 Python 3.6 和 Turtle 模块,我想知道如何在屏幕上打印海龟的坐标。

我的问题是:如何在屏幕上打印文本,以及如何使该文本成为玩家的坐标?

这是我的代码。

from turtle import Turtle, Screen

play = Screen()

play.bgcolor("black")
play.screensize(250, 250)
play.title("Turtle Keys")

def position():
    coord = follow.coor()
    coord.color("white")
    coord.setposition(130, 100)

run = Turtle("triangle")
run.speed("fastest")
run.color("white")
run.penup()
run.setposition(250, 250)

print(position)

谢谢你。

编辑我试过write了,但它抛出了一个名称未定义的错误。

4

4 回答 4

2

以下是如何在屏幕上写入海龟位置:模块中的write方法turtle必须在Turtle对象上调用。

import turtle

playground = turtle.Screen()       # use nouns for objects, play is a verb

playground.bgcolor("black")
playground.screensize(250, 250)
playground.title("Turtle Keys")

tom = turtle.Turtle()              # use nouns for objects, run is a verb

tom.color("white")
tom.setposition(130, 100)
tom.speed("fastest")
tom.color("white")

p = tom.pos()               # here you get the coordinates of the turtle
tom.write(str(p), True)     # and you print a string representation on screen
tom.penup()

print(p)                    # this prints to the console

playground.exitonclick()

在此处输入图像描述

于 2018-01-06T03:32:19.537 回答
1

我处理这类问题的方法是将海龟专用于屏幕上的每个固定标签。这样你就可以在那个位置永久定位一只乌龟,然后简单undo()地清除旧文本,然后write()写入新文本。

这是一个动态示例,您可以使用鼠标在屏幕上拖动海龟,当前位置将被写入屏幕中心:

from turtle import Turtle, Screen

FONT = ('Arial', 24, 'normal')

playground = Screen()
playground.setup(500, 500)
playground.bgcolor("black")

runner = Turtle("triangle")
runner.color("white")
runner.speed("fastest")
runner.penup()
runner.setposition(200, 200)

marker = Turtle(visible=False)  # our virtual magic marker
marker.penup()
marker.color("yellow")
marker.write(runner.position(), align='center', font=FONT)  # so we can undo it

def drag_handler(x, y):
    runner.ondrag(None)  # disable handler while in handler
    marker.undo()  # erase previous position
    marker.write((x, y), align='center', font=FONT)
    runner.setheading(runner.towards(x, y))  # head towards new location
    runner.setposition(x, y)
    runner.ondrag(drag_handler)

runner.ondrag(drag_handler)

playground.mainloop()

在此处输入图像描述

于 2018-01-06T06:34:26.250 回答
0

使用函数xcor()ycor()获取坐标。使用功能write()在屏幕上书写。

请参阅文档:https ://docs.python.org/3/library/turtle.html

于 2018-01-06T03:23:13.650 回答
-3

也许这会有所帮助:

def write_pos(self, position):
    self.pu()
    self.bk(len(str(position))-len(str(position))/2)
    self.pd()
    self.write(str(position))
    self.pu()
    self.fd(len(str(position))-len(str(position))/2)
    self.pd()

write_pos(run, run.position())

好的。这是解释。

所以我定义了一个函数来记录某物的位置(在本例中是海龟)。

当我做:

self.pu()
self.bk(len(str(position))-len(str(position))/2)

我:

  • 提起笔并
  • 向后移动一些步骤,以便我可以将文本居中。

然后我做:

self.pd()
self.write(str(position))

哪个:

  • 放下笔并
  • 写入(或输出)位置

之后,当我这样做时:

self.pu()
self.fd(len(str(position))-len(str(position))/2)
self.pd()

我:

  • 拿起笔
  • 将其移回原始位置并
  • 再次放下笔

编辑: 我刚刚意识到你可以像这样使用更简单的方法write

write(run.position(), False, center)

它写入海龟的位置,它不移动,它仍然写入文本,但以慢跑作为对齐的位置。

编辑#2:

我已经弄清楚了问题所在。

您直接使用 write 而不是从对象中实际调用它。你应该write这样调用:

run.write(run.position(), align="center") 
于 2018-01-06T03:33:45.257 回答