使用python类(OOP)创建FUNCTIONAL龟对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python类(OOP)创建FUNCTIONAL龟对象?相关的知识,希望对你有一定的参考价值。
我目前正在使用python编写一个与“太空入侵者”有点相似的游戏。直到我试图通过使用一个类来制作我的所有入侵物(它们都是海龟),这一直很顺利,因此当我调整难度时,我可以很容易地操纵我想要的敌人数量。
但是现在我已经这样做了,我已经删除了TURTLE对象的功能,因为它们现在被视为CLASS OBJECTS。因此我不能使用tazxswpoi和[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)示例,说明我们如何将turtle子类化为一个入侵者:
现在,当我们创建一个入侵者实例时,它将自己描述为:
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()
谢谢@Stack
以上是关于使用python类(OOP)创建FUNCTIONAL龟对象?的主要内容,如果未能解决你的问题,请参考以下文章