我想用Python和Turtle创建另一个Pong克隆。我的目标是让我的学生(开始用Python编程)进一步练习。你知道吗
我想创造一个海龟的形状是一个水平填充矩形,像一个风格化的桨。但是当我创建一个我认为是方便的形状时,我得到了一个旋转的(垂直的)桨,而不是我希望的水平的。你知道吗
下面的代码演示了这种奇怪的行为。你知道吗
from turtle import *
begin_poly()
fd(200)
left(90)
fd(40)
left(90)
fd(200)
left(90)
fd(40)
left(90)
end_poly()
shape = get_poly()
register_shape("drawn", shape)
polyNotOk = ( (0,0), (100, 0), (100, 20), (0, 20) )
register_shape("polyNotOk", polyNotOk)
polyOk = ( (0,0), (0, 100), (20, 100), (20, 0) )
register_shape("polyOk", polyOk)
t1 = Turtle(shape="drawn")
t2 = Turtle(shape="polyNotOk")
t3 = Turtle(shape="polyOk")
t1.color("black")
t2.color("red")
t3.color("blue")
t1.stamp()
t2.stamp()
t3.stamp()
t1.goto(100,200)
t2.goto(100,-50)
t3.goto(100,-150)
t1.forward(100)
t2.forward(100)
t3.forward(100)
mainloop()
因此,您可以看到,如果运行代码,第一个图形就可以了,具有水平形状。但是当我戳海龟时,它的形状是垂直的。你知道吗
第二个形状也有同样的问题,通过polyNotOk
定义(x和y坐标的值允许获得水平桨)。我需要创建一个“垂直”多边形得到一个水平桨。你知道吗
所以我能找到解决办法。但是我仍然对这个解决方案不满意,所以我请求您做出精彩的解释;—)提前谢谢。你知道吗
我希望阐明这种奇怪的行为,而不是为之辩护。关于绘制的光标,要记住的第一件事是,在光标绘制中
(0, 0)
落在哪里,那就是光标旋转的中心点,以及光标中落在goto()
任何点上的像素。你知道吗一些细节可以在
shapesize()
方法文档中找到:也就是说,如果光标位于默认的(东)方向,这会反转X和Y的方向。我相信这就是您在绘图中看到的。X平面与方向(垂直)垂直,Y平面与方向(水平)垂直。与我们通常期望的相反。你知道吗
这似乎不是
Shape()
类的错误,而是隐藏在游标逻辑中的错误。如果我们更改为mode("logo")
并运行您的代码,它可能是一个历史工件,我们得到:更多我们可能期望的,鉴于“logo”模式的默认方向是北,并且比以前更加一致。你知道吗
不管怎样,我会用另一种方式划桨。我将使用turtle的square光标,而不是自定义光标,并根据需要使用
shapesize()
对其进行重塑:仍然旋转逻辑(不是图形)从您可能期望的,但至少文档告诉我们。但是,我真正想做的是使桨朝向错误的方向,并使用
settiltangle()
,但不是像你那样的解决方法,而是使我的桨朝向一个方向,但朝另一个方向移动:请注意,我可以使用
forward(10)
和backward(10)
来移动我的划桨,而不必做像t0.setx(t0.xcor() + 10)
这样糟糕的事情。适用于太空入侵者类型的游戏,玩家面朝上,但移动侧。你知道吗相关问题 更多 >
编程相关推荐