用python在类中创建Turtle对象

2024-10-01 15:49:05 发布

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

我试图创建海龟对象与我的项目,这是一个游戏类。每个“平面”对象包括:

plane3 = RawTurtle(screen)
plane3.ht()
plane3.color("red")
plane3.shape("plane.gif")
plane3.penup()
plane3.speed('fastest')
plane3.setposition(-270, 200)
plane3.setheading(360)

当我把它放到一个类中并查看其他堆栈溢出问题以找出该怎么做时,我将以下代码放在一起:

    class planes():
    def __init__(self):
        self.RawTurtle = RawTurtle(screen)
        #self.hideturtle()
        self.color = "red"
        self.shape = ("plane.gif")
        #self.penup()
        self.speed = "fastest"
        self.setposition = (-270, 100)
        self.setheading = 360

Plane4 = planes()

当代码运行时,海龟没有形状或颜色,只是一个黑色三角形,即使它不会导致错误。但是,plane.hideturtleplane.penup()函数确实会出错,这就是它们被注释掉的原因。你知道吗

文件“C:/Users/marco/Desktop/Trooper shooter/骑警.py“,第694行,在init中” 自我隐藏() AttributeError:“planes”对象没有属性“hideturtle”

班外的飞机工作得很好,所有的飞机都完全一样。感谢您的帮助!你知道吗


Tags: 对象selfredgifscreencolorspeed海龟
2条回答

我相信你真正的问题是,你设计的飞机类是一只海龟,而不是一只海龟。你知道吗

使用有一个方法,每次您想在您的平面上启用一些额外的海龟特性时,您必须添加一个方法来将调用传递给包含的海龟。采取是一种方法,所有海龟方法都在发挥作用:

from turtle import RawTurtle, TurtleScreen
from tkinter import Tk, Canvas, RIGHT

class Plane(RawTurtle):
    def __init__(self):
        super().__init__(screen)

        self.hideturtle()

        self.color('red')
        self.shape('plane.gif')
        # self.speed('fastest')  # commented out while debugging
        self.penup()
        self.setposition(-270, 100)
        self.setheading(0)

        self.showturtle()

root = Tk()

canvas = Canvas(root, width=600, height=400)
canvas.pack(side=RIGHT)

screen = TurtleScreen(canvas)
screen.register_shape('plane.gif')

plane4 = Plane()
plane4.forward(400)

screen.mainloop()

hideturtle()penup()都是RawTurtle类的方法,您还没有为planes类定义它们。所以不是这样:

self.hideturtle()
self.penup()

你应该有这个:

self.RawTurtle.hideturtle()
self.RawTurtle.penup()

相关问题 更多 >

    热门问题