Python Turtle: 旋转自定义光标图像

3
我们正在课堂上尝试制作一款坦克游戏。我已经能够加载坦克图像,但图片无法旋转。我进行了搜索,但找不到解决方法(如果有简单的解决方法也没有找到)。
以下是我目前所拥有的代码(非常基础)。我希望有一个简单的解决方案来实现图片向左/右旋转。
import turtle

screen = turtle.Screen()

tankImage = "tank.gif"
screen.addshape(tankImage)

tank = turtle.Turtle()
tank.shape("turtle")

def left():
    tank.left(20)

def right():
    tank.right(20)

screen.listen()
screen.onkey(left, "Left")
screen.onkey(right, "Right")

turtle.mainloop()

这个回答解决了你的问题吗?如何在Python中旋转海龟形状 - ggorlen
3个回答

1
在你的示例中不清楚的是,当你使用tank.shape("turtle")时,你可以看到海龟改变方向,但当你使用tank.shape(tankImage)时,你看不到任何移动。这在addshape()海龟文档中有介绍:

注意:图像形状在转动海龟时不会旋转,因此它们不显示海龟的朝向!

简单的答案是你不能用那种方式做。然而,如果你能使用多边形来绘制你的坦克,那么你可以定义一个旋转正确的光标。参见我的回答“更改海龟的外观”,这是一个坦克多边形示例,以及我的回答“Python海龟逻辑错误”,它解释了如何将你的坦克绘制定位为正确转向。

我将形状更改为“turtle”,以确保旋转问题是由于图像而忘记在发布代码之前将其更改回来。我会查看您的多边形解决方案。谢谢... - chappie

1

我知道这是一个老问题,但从技术上讲,我找到了一个绕过它不可能的方法,就是为您想要的任何位置(面向左,面向右等)拥有多个图像,并在“向右”/“向左”(等等)函数中更新右侧/左侧(等等)的图像。

tank = turtle.Turtle()
tank.shape("tank_up.gif")

def left():
    tank.shape("tank_left.gif")
    tank.left(20)

def right():
    tank.shape("tank_right.gif")
    tank.right(20)

这是一种动画原理(为所需的移动更改帧数),并且它很有效。

0
turtle.settiltangle(angle)帮我解决了这个问题!不过,我使用的是一个预先构建的“turtle”符号,而不是图像。我的“turtle”符号可以有多种朝向。它帮助我只需旋转一次符号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接