簡體   English   中英

使用 python 類(OOP)創建功能性海龜對象?

[英]Using python classes (OOP) to create FUNCTIONAL turtle objects?

我目前正在用 python 編寫代碼,以創建一個與“太空入侵者”有些相似的游戲。 在我嘗試使用類制作所有入侵者對象(即海龜)之前,一切進展順利,因此我可以在調整難度時輕松操縱我想要的敵人數量。

但是現在我已經這樣做了,我已經刪除了 TURTLE 對象的功能,因為它們現在被視為 CLASS OBJECTS。 因此,我不能使用烏龜模塊功能,例如[object].xcor[object].ycor ,它們在某種程度上是必不可少的。

這是創建對象類的代碼:

class invaders():
def __init__(self, speed, position):
    self = turtle.Turtle()   # how I thought I could make them turtle objects (didn't work)
    self.color('red')   
    self.shape('circle')
    self.up()
    self.setposition(position)
    self.speed(speed)

def change_speed(newSpeed):
    invader.speed(newSpeed)   # use to make new speed if changing difficulty  #variable.changeSpeed(newSpeed)

def change_position(x, y):
    invader.setposition(x, y)

我還在下面附上了一張照片,以便您可以看到我正在談論的兩個對象之間的區別。

文本下方的錯誤不相關

對象可以包含另一個類的實例,或者對象可以子類)另一個類的實例。 你最初描述和嘗試的是子類化,你解決的是包含 這是一個(Python3)示例,說明我們如何將烏龜子類化為入侵者:

from turtle import Turtle, Screen

class Invader(Turtle):
    def __init__(self, speed, position):
        super().__init__(shape='circle', visible=False)
        self.color('red')
        self.penup()
        self.setposition(position)
        self.speed(speed)
        self.showturtle()

    def change_speed(self, newSpeed):
        self.speed(newSpeed)

    def change_position(self, x, y):
        self.setposition(x, y)

invader = Invader('slowest', (100, 100))

invader.change_position(-100, -100)

invader.change_speed('fastest')

invader.pendown()  # try an original turtle method

invader.change_position(100, -100)

screen = Screen()

screen.exitonclick()

現在,當我們創建一個入侵者實例時,它會這樣描述自己:

>>> fred = Invader("normal", (0, 0))
>>> fred
<__main__.Invader object at 0x1021784e0>
>>> 

Self = turtle.Turtle()應該是self.turtle = turtle.Turtle()

謝謝@Stack

實際上,您可以使用 self.turtle.color("red") 來訪問海龜的顏色屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM