Создание объектов Turtle в классе с python - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь создать объекты черепахи с классом для моего проекта, который является игрой. Каждый объект "Plane" состоит из:

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.hideturtle и plane.penup() возникают ошибки, поэтому они закомментированы.

Файл "C: / Users / marco / Desktop / Trooper shooter / TrooperShooter.py", строка 694, в init self.hideturtle () AttributeError: объект 'плоскости' не имеет атрибута 'hideturtle'

Плоскости вне класса работают отлично, и все плоскости абсолютно идентичны. Любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Я полагаю, что ваша реальная проблема заключается в том, что вы спроектировали класс своего самолета таким образом, чтобы он имел черепаху вместо того, чтобы проектировать его так, чтобы он был черепаха.

При использовании используется подход , каждый раз, когда вы хотите включить какую-либо дополнительную функцию черепахи на своем самолете, вы должны добавить метод для передачи вызова наСодержащаяся черепаха. Использование - это подход, все методы черепахи в игре:

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()
0 голосов
/ 17 октября 2019

hideturtle() и penup() - оба метода для класса RawTurtle, вы не определили их для класса planes. Поэтому вместо этого:

self.hideturtle()
self.penup()

вы должны иметь это:

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