使用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
,但是它引发了一个未定义错误的名称。
答案 0 :(得分: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()
答案 1 :(得分: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()
答案 2 :(得分:0)
使用函数xcor()
和ycor()
获取坐标。使用功能write()
在屏幕上书写。
答案 3 :(得分:-2)
也许这会有所帮助:
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)
I:
self.pd()
self.write(str(position))
其中:
之后,当我这样做时:
self.pu()
self.fd(len(str(position))-len(str(position))/2)
self.pd()
I:
修改强>
我刚刚意识到你可以用这样一种更简单的方式来使用write
:
write(run.position(), False, center)
它写了海龟的位置,它没有移动,它仍然写着文字,但是它以慢跑为对齐的地方。
编辑#2:
我已经发现了问题。
您直接使用写入而不是实际从对象中调用它。你应该这样叫write
:
run.write(run.position(), align="center")